目錄
-
消息隊列的介紹
消息(Message):是指在應用之間傳送的數據,消息可以非常簡單,比如只包含文本字符串,也可以更復雜,可能包含嵌入對象。
消息隊列(Message Queue):是一種應用間的通信方式,消息發送後可以立即返回,有消息系統來確保信息的可靠專遞,消息發佈者只管把消息發佈到MQ中而不管誰來取,消息使用者只管從MQ中取消息而不管誰發佈的,這樣發佈者和使用者都不用知道對方的存在
-
Kafka消息隊列
Apache Kafka是一個分佈式消息發佈訂閱系統。它最初由LinkedIn公司基於獨特的設計實現爲一個分佈式的提交日誌系統( a distributed commit log),,之後成爲Apache項目的一部分。Kafka系統快速、可擴展並且可持久化。它的分區特性,可複製和可容錯都是其不錯的特性
-
消息隊列的應用場景
應用耦合:多應用間通過消息隊列對同一消息進行處理,避免調用接口失敗導致整個過程失敗;
異步處理:多應用對消息隊列中同一消息進行處理,應用間併發處理消息,相比串行處理,減少處理時間。
限流削峯:廣泛應用於秒殺或搶購活動中,避免流量過大導致應用系統掛掉的情況。
消息驅動的系統:系統分爲消息隊列、消息生產者、消息消費者,生產者負責產生消息,消費者(可能有多個)負責對消息進行處理。
-
消息隊列的兩種模式
消息隊列包括兩種模式,點對點模式(point to point, queue)和發佈/訂閱模式(publish/subscribe,topic)
-
點對點模式
點對點模式下包括三個角色:消息隊列,發送者 (生產者),接收者(消費者)
消息發送者生產消息發送到queue中,然後消息接收者從queue中取出並且消費消息。消息被消費以後,queue中不再有存儲,所以消息接收者不可能消費到已經被消費的消息。
特點:
1.每個消息只有一個接收者(Consumer)(即一旦被消費,消息就不再在消息隊列中)。
2.發送者和接收者間沒有依賴性,發送者發送消息之後,不管有沒有接收者在運行,都不會影響到發送者下次發送消息。
3.接收者在成功接收消息之後需向隊列應答成功,以便消息隊列刪除當前接收的消息。
-
發佈/訂閱模式(點對多點)
發佈/訂閱模式下包括三個角色:角色主題(Topic),發佈者(Publisher),訂閱者(Subscriber)
發佈者將消息發送到Topic,系統將這些消息傳遞給多個訂閱者
特點:
1.每個消息可以有多個訂閱者。
2.發佈者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創建一個訂閱者之後,才能消費發佈者的消息。
3.爲了消費消息,訂閱者需要提前訂閱該角色主題,並保持在線運行。