1-1 beanstalkd的简介
Beanstalkd 队列
1、安装Beanstalkd
2、Beanstalkd 核心概念
3、pheanstalk类
4、Beanstalkd管理
5、Beanstalkd 项目应用
队列---先进先出
队列的应用场景
1、异步处理
2、系统解耦
3、定时任务
异步处理:
注册---发邮件---根据信息分类----筛选打折商品----放入邮件发送给用户
提交注册信息到成功页面返回
用队列的延时特性,来实现定时任务
Beanstalkd是什么?
Beanstalk,一个高性能、轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook Causes应用。
RabbitMQ
Kafka
Beanstalkd特性::
优先级(priority)
延迟(delay)
持久化(persistent data)
预留(buried)
任务超时重发(time-to-run)
◆优先级
支持0到2**32的优先级,值越小,优先级越高,默认优先级为1024。
◆持久化
可以通过binlog将job及其状态记录到文件里面,在Beanstalkd下次启动时可以通过读取binlog来恢复之前的job及状态。
◆分布式容错
分布式设计和Memcached类似,beanstalkd各个server之间并不知道彼此的存在,都是通过client来实现分布式以及根据tube名称去特定server获取job。
◆ 超时控制
不足
在使用中发现一个Beanstalkd尚无提供删除一个tube的操作,只能将tube的job依次删除,并让Beanstalkd来自动删除空tube。还有就是Beanstalkd不支持客户端认证机制(开发者将应用场景定位在局域网)。
Beanstalkd设计里面的核心概念:
◆ job
一个需要异步处理的任务,是Beanstalkd中的基本单元,需要放在一个tube中。
◆ tube
一个有名的任务队列,用来存储统一类型的job,是producer和consumer操作的对象。
◆ producer
Job的生产者,通过put命令来将一个job放到一个tube中。
◆ consumer
重点:任务状态
加群讨论一起进步
beanstalkd
683024907
项目源码托管:http://code.taobao.org/p/gwish/src/beanstalkd/
或者到群共享下载