背景
這個純粹是記下知識點,知道自己在這個時候了解過這個技術。技術點網上很多,就不多說了。隻是想起多年前做過的一次項目,是多個項目整合,各種資料庫,java和c#項目,互相調來調去,甚至直接連結對方資料庫解決,可以說非常之亂,名詞叫耦合。當時這幫子人見識怎麼這麼短,竟然沒想到用消息元件這個方式解決,感覺和做c#有一定關系,開源元件關注少。
不過話說回來,當時反正功能是解決了,懂得多有毛用,技術先進也白扯,客戶又不管你怎麼搞得,搞得越亂越有政治意義,别人越接不了手越顯得人家能耐大。唉,技術人就是隻能聽人忽悠,任人擺布而已。
知識點
1.從社群活躍度
按照目前網絡上的資料,RabbitMQ 、activeM 、ZeroMQ 三者中,綜合來看,RabbitMQ 是首選。
2.持久化消息比較
ZeroMq 不支援,ActiveMq 和RabbitMq 都支援。持久化消息主要是指我們機器在不可抗力因素等情況下挂掉了,消息不會丢失的機制。
3.綜合技術實作
可靠性、靈活的路由、叢集、事務、高可用的隊列、消息排序、問題追蹤、可視化管理工具、插件系統等等。
RabbitMq / Kafka 最好,ActiveMq 次之,ZeroMq 最差。當然ZeroMq 也可以做到,不過自己必須手動寫代碼實作,代碼量不小。尤其是可靠性中的:持久性、投遞确認、釋出者證明和高可用性。
4.高并發
毋庸置疑,RabbitMQ 最高,原因是它的實作語言是天生具備高并發高可用的erlang 語言。
5.比較關注的比較, RabbitMQ 和 Kafka
RabbitMq 比Kafka 成熟,在可用性上,穩定性上,可靠性上, RabbitMq 勝于 Kafka (理論上)。
另外,Kafka 的定位主要在日志等方面, 因為Kafka 設計的初衷就是處理日志的,可以看做是一個日志(消息)系統一個重要元件,針對性很強,是以 如果業務方面還是建議選擇 RabbitMq 。
還有就是,Kafka 的性能(吞吐量、TPS )比RabbitMq 要高出來很多。