Beanstalk服务安装及PHP队列开发

  • 2017-01-18
  • 1287
  • 0

一:Beanstalk介绍

Beanstalk是一个基于内存的(binlog持久化到硬盘),事件驱动(libevent),简单、快速的任务队列,支持大部分编程语言,将前台的任务转为后台异步处理,为web开发提供更高弹性。它可以支持多个server(客户端支持),一个任务只会被投递到一台server,一个任务只会被一个消费者获取(Reverse)。

使用Beanstalk任务队列提升PHP异步处理能力,降低程序耦合度,使前台更专注,后台处理耗时、扩展性任务(也可以使用其他语言开发),使得web架构更具扩展性。

相比RabbitMQ,Beanstalk作为一个任务队列,设计比较简单,支持以下特性:

  • 优先级(priority),可以对任务进行优先处理(或降级),越小的值优先级越高(0~4,294,967,295),默认按先进先出(FIFO)
  • 延迟执行(delay),一个任务创建完成并稍后再执行(比如等待主从同步)
  • 超时重试(TTR),一个任务没有在指定时间内完成,将会被重新投递,由其他客户端处理。客户端也可以主动进行延时(touch)或重新入队(release)
  • 隐藏(bury),一个任务执行失败了,可以先隐藏,隐藏的任务可以被重新激活(kick).

二:CentOS下安装Beanstalkd

后台启动:

beanstalkd -l 地址 -p 端口号 -z 最大的任务大小(byte) -c &

如果是外部客户端连接,ip地址要写外网地址,这样才能连接上

启动选项:

注:由于Beanstalk服务端实现的比较简单,协议特性需要客户端支持,不同的实现可能效果不一样。下面使用的是这个库:PHP Beanstalkd。php扩展的客户端并没有实现延时发送(delay),超时重试(TTR),因此不建议使用。

shell启动脚本:

三:php使用beanstalk

Producer

Consumer


上一篇:  下一篇:

评论

还没有任何评论,你来说两句吧

Copyright © 2014-2016 lxlxw All Right Reserved