延時(shí)隊(duì)列的幾種實(shí)現(xiàn)方式 PHP使用Beanstalkd做任務(wù)隊(duì)列是?
PHP使用Beanstalkd做任務(wù)隊(duì)列是?Beanstalk是一種高性能的消息隊(duì)列中間件。這個(gè)博客將介紹beanstalk的用法。1、首先讓我們通過概念來了解Beanstalk的特性和工作場景。Be
PHP使用Beanstalkd做任務(wù)隊(duì)列是?
Beanstalk是一種高性能的消息隊(duì)列中間件。這個(gè)博客將介紹beanstalk的用法。
1、首先讓我們通過概念來了解Beanstalk的特性和工作場景。
Beanstalkd是一個(gè)輕量級消息中間件。它最大的特點(diǎn)是將自己定位為一個(gè)基于tube和job的工作隊(duì)列
beanstalkd支持任務(wù)優(yōu)先級、延遲、運(yùn)行時(shí)間和保留時(shí)間,能夠很好地支持分布式后臺任務(wù)和定時(shí)任務(wù)處理。
其內(nèi)部實(shí)現(xiàn)使用libevent,服務(wù)器客戶端使用類似memcached的輕量級通信協(xié)議,具有高性能。
雖然它是內(nèi)存隊(duì)列,但beanstalkd提供了binlog機(jī)制。重新啟動beanstalkd時(shí),可以從本地binlog恢復(fù)當(dāng)前任務(wù)狀態(tài)。
管道:管道與主題類似。beanstalk中可以支持多個(gè)管道。每個(gè)管道都有自己的生產(chǎn)者和消費(fèi)者。管道不會相互影響。
如何設(shè)計(jì)一個(gè)MQ消息隊(duì)列?
1. 在上圖中定義消息發(fā)送和消耗的過程
2。為消息定義消息協(xié)議,如ActiveMQ、stomp、XMPP等。定義消息協(xié)議,定義消息隊(duì)列需要滿足的場景
是否要保證消息的可靠性,必要時(shí)要保證存儲的高可用性
是否支持同步和異步消息
是否要保證消息的順序
是否需要延遲消息要支持
很多開源的實(shí)現(xiàn)功能可以參考詳細(xì)信息。例如,rocketmq是高度可靠的,Kafka是高吞吐量的,但不是高度可靠的。