分佈式消息隊列kafka

kafka是Linkedin開源的分佈式發佈-訂閱消息系統(消息隊列)

kafka特點

1 高吞吐率、低延遲,每秒處理幾十萬消息,延遲最低幾毫秒

2 可擴展性,支持動態擴展節點數據

3 持久性與可靠性,數據被持久化磁盤,支持數據多副本防止數據丟失

4 高容錯,允許節點失敗

5 高併發,支持上千個客戶端同時讀寫


架構如圖


kafka:produce

1 向broker發送消息

2 可通過任意一個broker發現其他broker的位置信息

3 消息組成 topic key value timestamp


kafka:broker

1 producer和consumer之間的橋樑

   從producer端接收消息,並保存下來

   將消息發送給訂閱的consumer

2 可將消息可靠地緩存一段時間

   每個消息保存成多副本(默認3)

   可設置保存時間(默認時間)


kafka:partition與topic

topic

  用戶劃分message的邏輯概念,一個topic可以分佈到不通的broker上

partition

  kafka橫向擴展和一切並行化的基礎,每個topic至少分成1個partition

  消息在partition中是有編號的,稱爲“offset”

  kafka以partition爲單位對消息進行備份(replica),每個partition可以配置至少有1個replica


kafka:consumer

  負責從kafka中讀取數據,並進行處理

Consumer group

  多個consumer可形成一個group,同時讀取某個topic。

  每個consumer讀取一個或多個partition

Consumer position

  每個consumer自己維護讀取的位置(offset,一旦掛掉後,重啓可繼續讀取)




kafka架構圖


kafka:服務保證

順序保證

  同一個producer發送到單個topic的同一partition的消息是順序的

  Consumer按照消息在日誌中的寫入順序讀取消息

Producer產生的數據由Consumer消費

容錯

  如果消息的副本數是N,則N-1臺機器宕機後不會導致丟失數據

應用場景 :監控 、消息隊列、站點的用戶活動追蹤 、流處理、



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