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