更新時間:2021-08-09 16:20:43 來源:動力節點 瀏覽947次
即Message Queue,我們從數據結構來理解的話,Queue是一種先進先出的數據結構。所以意思就是將信息(通常指傳輸的數據)放入一個隊列中。
消息隊列的兩種模式:
可以看到,點對點模式下有可以有多個消費者,但是對于同一個消息,只會有一個消費者能訪問。通??梢杂糜诋惒酵扑拖?,保存日志等。
發布訂閱模式下,對于同一個主題(topic),任何訂閱了topic的消費者都能拉取此消息。通??梢杂糜跇嫿ㄏ⑾到y。
由Apache軟件基金會所開源,基于java語言開發。算是一個很老的MQ框架了,同時也是一個非常成熟的框架了,早期在很多互聯網公司得到廣泛的應用。
文檔齊全,支持多種語言,支持多種的高級特性,如消息組、通配符、組合隊列等。同時對Spring有很好的支持,可以輕易的通過配置文件集成到系統中。
基于Erlang語言編寫的一套開源(MPL)的消息隊列服務軟件,Erlang語言以高性能、健壯、可伸縮出名,所以RabbitMQ性能很強,吞吐量也很高,支持多種協議,集群化,消息的可靠執行特性等優勢,很適合企業的開發。
吞吐量較低。
由于RabbitMQ支持的協議多,所以如果要好好學習的話,成本較高。
由linkedin開源的,基于scala語言實現的一個高性能分布式Publish/Subscribe消息隊列系統。
其實Kafka的由來也挺有意思的。話說linkedin起初是使用ActiveMQ來進行數據系統中數據交換的,上面都說了ActiveMQ性能不咋滴,所以linkedin決定研發自己的消息傳遞系統,也就是Kafka。
Kafka跟其余的消息中間件比較,那是出名的第一快,以并發量大,社區活躍備受廣大組織的喜愛。
Kafka提供了超高的吞吐量,ms級別的延遲,極高的可用性以及可靠性,而且分布式可以任意擴展,還支持大數據框架Hadoop數據并行加載。
單機隊列不能太高,超過64會導致性能下降。
消息重復消費。對數據準確性會產生影響。
缺乏一套完整的管理和監控工具。
消費失敗不支持重試。
由阿里開源,基于Java實現的一套分布式消息中間件,已經捐獻給Apache基金會。
起初阿里也使用ActiveMQ做消息系統,可能也是由于性能、可用性問題,然后才自研RocketMQ。
RocketMQ思路起源于Kafka,單機吞吐量高,消息的高可靠性,如果做好了參數配置,基本不會存在消息丟失的可能,擴展性強,支持事務等。再怎么說,RocketMQ好歹經歷過淘寶雙11的壓力,在阿里內部項目中廣泛應用。
支持的語言極少,就java和c++。
社區活躍明顯比不上kafka和RabbitMQ。
功能不夠完整,沒去實現JMS接口,系統遷移需要修改大量的代碼,增加了維護成本。
以上就是動力節點小編介紹的"為什么選擇MQ消息隊列框架",希望對大家有幫助,想了解更多可查看Java教程。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習