beanstalkd队列
嘻嘻发布于2019-12-23
最后更新于2019年12月17日
浏览Beanstalkd是一个高性能,轻量级的分布式内存服务。它的接口是通用的,旨在通过异步运行耗时的任务来减少大容量Web应用程序中页面视图的延迟。
启动时,beanstalkd打开一个套接字并侦听传入的连接。对于每个连接,它都会读取一系列命令来创建,保留,删除和以其他方式操纵要完成的工作单元“作业”。
运行参数
-b <dir>
binlog的目录,持久化数据,重启自动读取
-d
后台执行beanstalkd
-f <ms>
每<ms>毫秒最多调用一次fsync(2)。这将减少磁盘活动并以安全为代价提高速度。断电可能会导致最多丢失<ms>毫秒的历史记录
-F
从不调用fsync(2)
-h
帮助
-l <addr>
监听的地址, 默认0.0.0.0
-p <port>
监听的端口,默认11300
-s <bytes>
每个binlog文件的最大大小(以字节为单位)
-u <user>
运行的用户
-z <bytes>
作业的最大大小(以字节为单位)
JOB
Job是队列中一个基本单元,Job 可能有四个工作状态:ready、reserved、delayed、buried.
job 的生命周期
Status | Description |
---|---|
ready |
等待被取出并处理 |
reserved |
如果 job 被 worker 取出,将被此 worker 预订,worker 将执行此 job |
delayed |
等待特定时间之后,状态再迁移为 ready 状态 |
buried |
等待唤醒,通常在 job 处理失败时进入该状态 |
job 可能的状态迁移
put with delay release with delay
----------------> [DELAYED] <------------.
| |
kick | (time passes) |
| |
put v reserve | delete
-----------------> [READY] ---------> [RESERVED] --------> *poof*
^ ^ | |
| \ release | |
| `-------------' |
| |
| kick |
| |
| bury |
[BURIED] <---------------'
|
| delete
`--------> *poof*
## 应用场景
