beanstalkd常见问题解答
2017-05-09 15:54
309 查看
高层次角度,它是如何工作的?
对于你的分布式应用来说,Beanstalkd是一个大的待办事项列表。如果有一个你想推迟的工作(报道(say),发送一封email,推送一些数据到一个缓慢的外部服务,从一个外部服务拉取数据,生成高质量图片缩略图)你放置一个job到beanstalkd,job是关于那个工作的描述。一些进程(例如:web请求处理程序)称之为producer,放置job到队列。其它进程称之为worker,从队列取出job,然后运行它们。
请参见 About This Blog: Beanstalk Messaging Queue ,工作队列的总体介绍,特别是beanstalkd。
是的;如果你选择持久化,你可以使用"-b"选项,beanstalkd会把所有job写到binlog。如果停电,你可以使用同样的选项来重启beanstalkd,它将恢复日志内容。
是的,虽然这是通过客户端来实现,就像memcached。beanstalkd服务实例之间互不知晓。
beanstalk协议的reserve命令是阻塞的。客户端可以很简单的读取响应 — 这将阻塞直到一个job可用,并返回reserved给客户端。客户端不必轮询。
是的,从1.1版开始就有了。这个命令是“reserve-with-timeout”。所有细节在协议文档。
Tube是job队列。
Tube常见用例是有完全不同的一组生产者和消费者集合通过单一的beanstalk实例运行,一个消费者不知道一些生产者所生产的job要做什么。例如,生产者1可以把job放到队列的tube1中,消费者1从tube1获取job,这和tube2(生产者2和消费者2一起工作的tube)完全独立。
如果你隐藏(bury)一个job,服务器将不管它直到你踢(kick)这个job。当job是"buried"状态,它将不被预定(reserved),并且它将不能被放置到ready队列。
例如,当大规模的应用和难断定run-times时,在防止服务器把超时任务重新放入队列方面,这是非常有用的。如果一个客户端reserve一个job,然后先bury它,再处理业务逻辑,然后由于死锁卡住了,这个job将无限期的是buried状态,可供人工检查之用 — 它将不会被其它worker获取。
是的。 django-jack,很少,但对于小规模任务是够用的。
TTR仅用于一个job变成reserved状态的时候。在那个时候,一个计时器(在job状态中称为“time-left”)开始从job的TTR开始倒计时。
如果计时器变成0,这个job被放回ready队列。
计时器到期之前,如果这个job变成"buried"、“deleted”或"released"状态,计时器将停止并退出。
计时器变成0之前,如果这个工作变成"touched",计时器从TTR重新开始倒计时。
(非"reserved"状态的job仍然包含一个"time-left"条目,但它的值是无意义的。)
DEADLINE_SOON是一个reserve命令的响应,它表明一个“reserved”状态的job的最后期限(deadline)马上要到期(目前的安全边际大约是1秒)。
如果你执行reserve命令时,频繁地收到DEADLINE_SOON错误,你可能应该考虑对你的job增加TTR,因为它表示你没有安时完成你的job。这也可能是在完成了你的job,却没有删除它们。
更多信息参见邮件讨论列表。
英文:https://github.com/kr/beanstalkd/wiki/FAQ
对于你的分布式应用来说,Beanstalkd是一个大的待办事项列表。如果有一个你想推迟的工作(报道(say),发送一封email,推送一些数据到一个缓慢的外部服务,从一个外部服务拉取数据,生成高质量图片缩略图)你放置一个job到beanstalkd,job是关于那个工作的描述。一些进程(例如:web请求处理程序)称之为producer,放置job到队列。其它进程称之为worker,从队列取出job,然后运行它们。
请参见 About This Blog: Beanstalk Messaging Queue ,工作队列的总体介绍,特别是beanstalkd。
Job是持久化的? 停电时,将发生什么?
是的;如果你选择持久化,你可以使用"-b"选项,beanstalkd会把所有job写到binlog。如果停电,你可以使用同样的选项来重启beanstalkd,它将恢复日志内容。
beanstalk本身支持分布式服务?
是的,虽然这是通过客户端来实现,就像memcached。beanstalkd服务实例之间互不知晓。
协议是否帮助实现阻塞,或这属于客户端库的实现范围? 换言之,客户端仍然必须做轮询?
beanstalk协议的reserve命令是阻塞的。客户端可以很简单的读取响应 — 这将阻塞直到一个job可用,并返回reserved给客户端。客户端不必轮询。
如果我想轮询,需要做什么?是否有带超时的reserve命令?
是的,从1.1版开始就有了。这个命令是“reserve-with-timeout”。所有细节在协议文档。
tube是什么?它们如何工作?
Tube是job队列。Tube常见用例是有完全不同的一组生产者和消费者集合通过单一的beanstalk实例运行,一个消费者不知道一些生产者所生产的job要做什么。例如,生产者1可以把job放到队列的tube1中,消费者1从tube1获取job,这和tube2(生产者2和消费者2一起工作的tube)完全独立。
"buried"状态的目的是什么?我应该在什么时候使用它?
如果你隐藏(bury)一个job,服务器将不管它直到你踢(kick)这个job。当job是"buried"状态,它将不被预定(reserved),并且它将不能被放置到ready队列。例如,当大规模的应用和难断定run-times时,在防止服务器把超时任务重新放入队列方面,这是非常有用的。如果一个客户端reserve一个job,然后先bury它,再处理业务逻辑,然后由于死锁卡住了,这个job将无限期的是buried状态,可供人工检查之用 — 它将不会被其它worker获取。
是否有web管理接口?
是的。 django-jack,很少,但对于小规模任务是够用的。
TTR是如何工作的?
TTR仅用于一个job变成reserved状态的时候。在那个时候,一个计时器(在job状态中称为“time-left”)开始从job的TTR开始倒计时。如果计时器变成0,这个job被放回ready队列。
计时器到期之前,如果这个job变成"buried"、“deleted”或"released"状态,计时器将停止并退出。
计时器变成0之前,如果这个工作变成"touched",计时器从TTR重新开始倒计时。
(非"reserved"状态的job仍然包含一个"time-left"条目,但它的值是无意义的。)
DEADLINE_SOON是什么意思?
DEADLINE_SOON是一个reserve命令的响应,它表明一个“reserved”状态的job的最后期限(deadline)马上要到期(目前的安全边际大约是1秒)。如果你执行reserve命令时,频繁地收到DEADLINE_SOON错误,你可能应该考虑对你的job增加TTR,因为它表示你没有安时完成你的job。这也可能是在完成了你的job,却没有删除它们。
更多信息参见邮件讨论列表。
英文:https://github.com/kr/beanstalkd/wiki/FAQ
相关文章推荐
- beanstalkd常见问题解答
- 使用ASP常见问题解答
- eclipse 环境下整合 struts2+spring+hibernate 开发web应用常见问题及解答
- TI单节电量计基本介绍及常见问题解答
- PHP加密代码,加密扩展 (php-beast)常见问题解答
- Oracle几个常见问题和解答
- Ubuntu Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答
- Dubbo分布式服务框架常见问题解答汇总
- red5学习笔记系列之二red5常见问题解答FAQ
- 有关 Azure IaaS VM 磁盘以及托管和非托管高级磁盘的常见问题解答
- Bluetooth蓝牙设备配对 - 常见问题解答
- ArcGIS10.5 OrthoMapping实践:利用卫星像对提取DSM及常见问题解答
- 使用ASP常见问题解答
- EX2K常见问题解答
- PERL常见问题解答--FAQ(4)--Data: Dates
- TurboLinux常见问题解答
- 入门教程:ASP设计常见问题及解答精要1
- Nutch-1.2添加中文分词ICTCLAS以及常见问题解答
- 使用ASP常见问题解答