Message broker是作為應用程式與應用程式之間的模塊,用來交換訊息,其運作方式會有一個publisher和consumer,publisher會將訊息進行傳遞出來,而consumer會去訂閱訊息,如此一來雙方互相不需要知道彼此的ip位置,如database的概念,其優點為將訊息儲存在message queue裡面,不會因為應用程式crash導致訊息消失。
RabbitMQ中重要的名詞有
Task Queue: 不透過 Exchange 直接送到指定的 Queue
Publish/Subscribe: 透過 Exchange 的 fanout 特性,達到訂閱 Queue 的 Consumer 都可以收到訊息。
Routing: 透過 Exchange 的 direct 特性,達到類似 routing 的功能,將訊息 filter 到特定的 Queue。
Topics: 透過 Exchange 的 topic 特性,每個 Queue 都有屬於自己的分類。
RPC: 如果需要回傳訊息的話則需要透過 RPC。
Kafka 是一個分散式訊息引擎與流處理平臺 (大數據管理 tool),經常用做企業的訊息匯流排、實時資料管道,可以將其當做儲存系統來使用,其系統架構具有許多優點。
高吞吐、低延時:這是 Kafka 顯著的特點,Kafka 能夠達到百萬級的訊息吞吐量,延遲可達毫秒級。
持久化儲存:Kafka 的訊息最終持久化儲存在磁碟之上,提供了順序讀寫以保證效能,並且通過 Kafka 的副本機制 (replicaset) 提高了資料可靠性。
分散式可擴充套件:Kafka 的資料是分散式儲存在不同 broker 節點的,以 topic 組織資料並且按 partition 進行分散式儲存,整體的擴充套件性都非常好。
高容錯性:叢集中任意一個 broker 節點當機,Kafka 仍能對外提供服務。
kafka 組件 broker 由數個 Topic 組成,一個 Topic 由數個 partition 組成
![](https://i.imgur.com/QbjNYOQ.png =40%x)