一直在用Redis 做訊息隊列,忽然想到,會不會有更好的呢?
回覆內容:
我們用beanstalk,qps1000左右
如果是單純做隊列服務建議beanstalkd(小巧、性能好),如果考慮到高可用、海量可以用kafka。
不如你先指出現有方案有哪些面向不不夠好。
感覺這個問題跟 PHP 沒啥關係?訊息佇列選用更多考慮業務的場景:
* 效能,例如每秒有多少訊息啊,如果你每秒有幾萬的訊息量,那 Beanstalk、RabbitMQ 之列的就不能拿來直接用了。
* 可靠性,訊息是否允許遺失?是否需要持久化?
* 高可用,是否可以容忍宕機?
* 是否需要分散式
* 運維成本,你們公司的開發(維運)是否有能力維護好這個消息隊列
* 客戶端支持,這個才是語言層面的東西。例如 Kafka 是個很好的訊息佇列,但是他的 PHP 用戶端寫的不太好,自己重新寫也比較難,那麼在選型的是否就要慎重。
在權衡這些因素以後,才能決定如何選擇。
有哪些消息隊列: Message queue
性能對比:
http://bravenewgeek.com/dissecting-message-queues/
redis,rabbitmq
用redis,rabbitmq這兩個
這個要看你的應用場景,一般來說用redis比較簡單,但是redis不能實現訊息沒有正常處理,其他進程仍然能夠處理這個訊息的情況,也就是沒有對訊息有一個處理完成確認的過程。
如果要完整的訊息佇列,用過的有:gearman,rabbitmq, 都是不錯的。
php-resque
gearman。如果要求跨網路不丟訊息還可以選擇kafka
workerman