大數據學習筆記——Kafka理論知識

  • Kafka基礎組件

    • Topics(主題)

      屬於特定類別的消息流稱爲主題。數據存儲在主題中。主題被拆分成分區。對於每個主題,Kafka保存一個分區的迷你媽媽。每個這樣的分區包含不可變有序序列的消息。分區被實現爲具有相等大小的一組分段文件。

    • Partition(分區)

      主題可能有許多分區,因此它可以處理任意數量的數據。

    • Partition offset(分區偏移)

      每個分區消息具有稱爲“offset”的唯一序列標識。

    • Replicas of Partition(分區備份)

      副本只是一個分區的“備份”。副本從不讀取或寫入數據。它們用於方式數據丟失。

    • Brokers(經紀人)

      代理是負責維護髮布數據的簡單系統。每個代理可以每個主題具有零個或多個分區。

      假設,如果在一個主題和N個代理中有N個分區,每個代理將有一個分區。

      假設,在一個主題中有N個分區並且多於N個代理(n+m),則第一個N代理將具有一個分區,並且下一個M代理將不具有用於改特定主題的任何分區。

      假設,在一個主題中有N個分區並且小於N個代理(n-m),每個代理將在它們之間具有一個或多個分區共享。由於代理之間的負載分佈不相等,不推薦使用此方案。

    • Kafka Cluster(Kafka集羣)

      Kafka有多個代理被稱爲Kafka集羣。可以擴展Kafka集羣,無需停機。這些集羣用於管理消息數據的持久性和複製。

    • Producers(生產者)

      生產者是發送給一個或多個Kafka主題的消息的發佈者。生產者向Kafka經紀人發送數據。每當生產者將消息發佈給代理時,代理只需將消息附加到最後一個段文件。實際上,該消息將被附加到分區。生產者還可以向他們選擇的分區發送消息。

    • Consumers(消費者)

      Consumers從經紀人處讀取數據。消費者訂閱一個或多個主題,並通過從代理中提取數據來使用已發佈的消息。

    • Leader(領導者)

      “Leader”是負責給定分區的所有讀取和寫入的節點。每個分區都有一個服務器充當Leader。

    • Follower(追隨者)

      跟隨領導者指令的節點被稱爲Follower。如果領導失敗,一個追隨者將自動成爲新的領導者。跟隨者作爲正常消費者,拉取消息並更新其自己的數據存儲。

在這裏插入圖片描述

  • Kafka集羣

    • Broker(代理)

      Kafka集羣通常由多個代理組成以保持負載均衡。Kafka代理是無狀態的,所以他們使用Zookeeper來維護它們的集羣狀態。一個Kafka代理實例可以每秒處理數十萬次讀取和寫入,每個Broker可以處理TB級別的消息,而沒有性能影響。Kafka經紀人領導選舉由Zookeeper完成。

    • Zookeeper

      Zookeeper用於管理和協調Kafka代理。Zookeeper服務主要用於通知生產者和消費者Kafka系統中存在任何新代理或Kafka系統中代理失敗。根據Zookeeper接收到關於代理的存在或失敗的通知,然後產品和消費者採取決定並開始與某些其他代理協調他們的任務。

      Zookeeper中存儲Kafka的基本元數據,例如關於主題、代理、消費者偏移(隊列讀取器)等信息。

    • Producers(生產者)

      生產者將數據推送給經紀人。當新代理啓動時,所有生產者搜索它並自動向該新代理髮送消息。Kafka生產者不等待來自代理的確認,並且發送消息的速度與代理可以處理的一樣快。

    • Consumers(消費者)

      因爲Kafka代理是無狀態的,這意味着消費者必須通過使用分區偏移來維護已經消耗了多少消息。如果消費者確認特定的消息便宜,則意味着消費者已經消費了所有先前的消息。消費者向代理髮送異步拉取請求,以具有準備好消耗的字節緩衝區。消費者可以簡單地通過提供偏移值來快退或跳到分區中的任何點。消費者偏移值由Zookeeper通知。

在這裏插入圖片描述

  • Kafka工作流程

    • 發佈-訂閱工作流程

      1. 生產者定期向主題發送數據
      2. Kafka Broker將所有消息存儲在該特定主題配置的分區,它確保消息在分區中平等共享
      3. 消費者訂閱主題
      4. Kafka向消費者提供主題的當前偏移,並將偏移量保存在Zookeeper中
      5. 消費者將定期請求Kafka新消息
      6. Kafka收到來自生產者的消息,將這些消息推送轉發給消費者
      7. 消費者消費處理消息,並向Kafka Broker發送確認
      8. Kafka收到確認後,更新偏移值,並更新Zookeeper中的偏移值
      9. 重複以上流程。消費者也可以隨時回退或跳轉到特定偏移量,閱讀消息
    • 隊列消息/用戶組工作流程

      1. 生產者以固定間隔向某個主題發送消息
      2. Kafka Broker將所有消息存儲在該特定主題配置的分區,類似於“發佈-訂閱“的方案
      3. 單個消費者訂閱特定主題
      4. Kafka以“發佈-訂閱消息”相同的方式與消費者交互,直到新消費者以相同的“組ID”訂閱相同的主題
      5. 一旦新消費者接入,Kafka將其操作切換到共享模式,並在兩個消費者之間共享數據。此共享將繼續,直到用戶數達到爲該特定主題配置的分區數
      6. 一旦消費者的數量超過分區的數量,新消費者將不會接收任何進一步的消息,直到現有消費者取消訂閱,空出分區。

參考文獻:
> Apache kafka中文手冊
> Kafka官方網站

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