1. 程式人生 > >消息隊列比較

消息隊列比較

順序 全局 lang master 被拒絕 其他 復制 節點 style

主要是比較這幾種隊列中間件:

  • rabbitmq
  • kafka
  • rocketmq
  • ONS

分以下幾個維度來比較

高並發

    • 毫無疑問KAFKA發消息的速度是最快的
    • ROCKETMQ/ONS次之
    • rabbitmq最慢

高可用

    • 這幾種都能做MASTER/SLAVE,跨機房的高可用
    • KAFKA復制有很多坑,所以這個分數要降低

所需要的節點數量

    • KAFKA集群環境下,需要依賴zk, zk至少3個節點,再加上kafka的至少3個節點,那就是6個
    • ROCKETMQ集群環境下,雖然不依賴zk,但是需要name server,至少2個節點,2個MASTER,就是4個
    • RABBITMQ集群環境下,不依賴zk,只要3個erlang node,就是3個

全局順序消費

    • KAFKA只要在分區是1個情況下才能大致的做到全局消費的順序
    • ROCKETMQ/ONS同上,只是變成了另外一個術語
    • RABBITMQ能大致保證全局順序消費
    • 以上所講的都是消息沒有被拒絕或者消息處理失敗重新回到隊列的情況

其他功能-流控

    • 只有RabbitMQ有

其他功能-優先級隊列

    • RabbitMQ對優先級隊列支持最完善

結論

  1. Rabbitmq很適用於小團隊和高並發不是很突出的地方,並且團隊希望盡量自動化
  2. 牽涉到高並發,並且是業務消息要用rocketmq/ons
  3. 牽涉到高並發,但不是業務消息的用kafka

消息隊列比較