Kafka學習(一):消息隊列


企業中離線業務場景,實時業務場景都需要使用到 Kafka。
Kafka 具備數據的計算能力和存儲能力,但是兩個能力相對(MR/SPARK,HDFS)較弱。
Kafka 角色的角色與 Hbase 比較像,層級關係比較多。

消息隊列的介紹

消息(Message):是指應用之間傳送的數據,或點與點之間,點與多點之間傳遞的數據,傳遞的信息。
消息隊列(Message Queue):是一種應用間的通信方式以隊列的形式傳遞。消息發送後可以立即返回,由消息系統來確保信息的可靠傳遞,消息發佈者只管把消息發佈到MQ中而不管誰來取,消息使用者只管從MQ中取消息而不管誰發佈的,這樣發佈者和使用者都不知道對方的存在。

消息隊列的應用場景

應用耦合:多應用間通過消息隊列對同一消息進行處理,避免調用接口失敗導致整個過程失敗。
異步處理:多應用對消息隊列中同一消息進行處理,應用間併發處理消息,相比串行處理,減少處理時間。
限流削峯:廣泛應用於秒殺或搶購活動中,避免流量過大導致應用系統掛掉的情況
消息驅動的系統:系統分爲消息隊列、消息生產者、消息消費者,生產者負責產生消息,消費者(可能有多個)負責對消息進行處理。


消息隊列應用場景詳解

如何理解應用耦合?
在這裏插入圖片描述
在這裏插入圖片描述
如何理解異步處理?
在這裏插入圖片描述
如何理解限流削峯?
在這裏插入圖片描述
如何理解消息驅動的系統?

例如之前在學習MR(MapReduce)時做的遊戲,後面的同學在沒有接收到前面同學的信息之前是不允許操作的,這個就是消息驅動系統。
參考鏈接:https://blog.csdn.net/weixin_43563705/article/details/103016281


消息隊列的兩種模式

消息隊列包括兩種模式,點對點模式(point to point, queue)和發佈/訂閱模式(publish/subscribe,topic)。

點對點模式

點對點模式包括三個角色:

  • 消息隊列
  • 發送者(生產者)
  • 接受者(消費者)

在這裏插入圖片描述
每個消息只有一個接收者,發送者和接受者間沒有依賴性,接受者在成功接收消息後,需向隊列應答接收成功。

點對點模式特點

  • 每個消息只有一個接受者(Consumer):即一旦消費,消息就不再在消息隊列中。
  • 發送者 和 接受者之間沒有依賴性,發送者發送消息後,不管有沒有接受者在都運行,都不會影響發送者下次發送消息。(例如QQ,微信等)
  • 接受者在成功接收消息之後需向隊列應答成功,以便隊列刪除當前接收的消息。

發佈/訂閱的方式

包括以下三個角色:

  • 角色主題(Topic):消息得分類,分組(例如玩王者榮耀的玩家消息發送不到玩和平精英玩家的消息框中)
  • 發佈者(Publisher):生產者
  • 訂閱者(Subscriber):消費者
    在這裏插入圖片描述
    每個消息可以有多個訂閱者,發佈者和訂閱者之間有時間上的依賴性,訂閱者需要提前訂閱該角色主題。

發佈者將消息發送到 Topic,系統將這些消息傳遞給多個訂閱者。

發佈/訂閱模式特點

  • 每個消息可以有多個訂閱者。
  • 發佈者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創建一個訂閱者之後,才能消費發佈者的消息。
  • 爲了消費消息,訂閱者需要提前訂閱該角色主題,並保持在線運行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章