beanstalkd

概念


  • job
    一个需要异步处理的任务,是Beanstalkd中的基本单元,需要放在一个tube中。有READY, RESERVED, DELAYED, BURIED四种状态
  • tube
    一个有名的任务队列,用来存储统一类型的job,是producer和consumer操作的对象。
  • producer
    Job的生产者,通过put命令来将一个job放到一个tube中。当producer直接put一个job时,job就处于READY状态,等待consumer来处理,如果选择延迟put,job就先到DELAYED状态,等待时间过后才迁移到READY状态。
  • consumer
    Job的消费者,通过reserve/release/bury/delete命令来获取job或改变job的状态。consumer获取了当前READY的job后,该job的状态就迁移到RESERVED,这样其他的consumer就不能再操作该job。当consumer完成该job后,可以选择delete, release或者bury操作;delete之后,job从系统消亡,之后不能再获取;release操作可以重新把该job状态迁移回READY(也可以延迟该状态迁移操作),使其他的consumer可以继续获取和执行该job;有意思的是bury操作,可以把该job休眠,等到需要的时候,再将休眠的job kick回READY状态,也可以delete BURIED状态的job。

基本操作


 put with delay               release with delay
 ----------------> [DELAYED] <------------.
                       |                   |
                       | (time passes)     |
                       |                   |
  put                  v     reserve       |       delete
 -----------------> [READY] ---------> [RESERVED] --------> *poof*
                      ^  ^                |  |
                      |   \  release      |  |
                      |    ``-------------'   |
                      |                      |
                      | kick                 |
                      |                      |
                      |       bury           |
                   [BURIED] <---------------'
                      |
                      |  delete
                       ``--------> *poof*

将继续补充... ...

参考链接

你可能感兴趣的:(beanstalkd)