當前位置:編程學習大全網 - 編程語言 - 消息中間件(MQ)的技術選型(Kafka、RabbitMQ、RocketMQ)

消息中間件(MQ)的技術選型(Kafka、RabbitMQ、RocketMQ)

優勢:

在性能方面kafka可以說是業界非常優秀的壹款中間件,在常規的機器配置下,壹臺機器可以達到每秒幾十萬的QPS。並且Kafka的性能也非常高,基本上發給kafka的消息都是毫米級別的,可用性也特別高,kafka是支持集群部署的,並且其中部分機器宕機,還是可以運行的。

劣勢:

kafka有可能會丟失數據,因為kafka收到消息之後,會寫壹個磁盤緩沖區裏,並沒有直接落地到物理磁盤上去,所以機器故障之後,可能會導致磁盤緩沖區的數據丟失。另外壹個缺點就是,kafka的功能比較單壹,主要是支持發送消息給它,然後從裏面消費消息,其它就沒有什麽額外的高級功能了,所以基於kafka有限的功能,可能適用的場景並不是很多。

綜上所述: 壹般公司會利用kafka收集壹些日誌之類的消息,因為日誌壹般量特別大,即使丟幾條數據也沒事,並且要求吞吐量也高,壹般就是收發消息,不需要太多的功能,所以kafka非常適合這個場景。

優勢:

在RocketMQ沒有出現之前,好多公司都從ActiveMQ切換到了RabbitMQ,它的優勢在於可以保證數據不丟失,也能保證高可用性,即使集群部署部分機器宕機也能運行,然後支持部分高級功能,比如死信隊列,消息重試之類的。

缺點:

RabbitMQ的吞吐量比較低,壹般就是幾萬的級別,如果遇到特別高的並發時,支撐起來有點困難。並且進行集群的擴展也是比較麻煩的。還有就是開發語言用的是erlang,國內使用此語言的很少,所以對其深入的研究也是比較麻煩的。

優點:

RocketMQ幾乎同時解決了Kafka和RabbitMQ的缺陷。它的吞吐量也非常高,單機可以達到10萬的QPS以上,而且可以保證高可用性,並且可以通過配置達到數據保證不會丟失,可以部署大規模的集群,還支持各種高級功能,比如說延遲消息、事務消息、消息回溯、死信隊列、消息積壓等。而且RocketMQ是利用java開發的,符合國內的大多數公司的技術棧,很容易進行閱讀源碼和修改其內容。

缺點:

RocketMQ的官方文檔相比較於kafka和RabbitMQ來說的話會相對簡單壹些,沒有人家kafka和RabbitMQ的文檔寫的詳細。

  • 上一篇:現在流行3G,那4G又是什麽?
  • 下一篇:機器人專業學什麽課程
  • copyright 2024編程學習大全網