Kafka Note(七)元數據更新機制

(七)kafka的更新機制

A. 基礎概念

  • 定義:元數據指用于尋找其他數據的標識,在kafka這類分布式集群中元數據特指各個節(jié)點brokers間所需的共享數據,如controller-epoch之類的信息。
  • 方式:kafka的元數據選用zookeeper來進行集中管理,使用/zkCli.sh -server 127.0.0.1get /brokers/ids/0查看信息。
  • 核心內容:kafka集群中的元數據記錄了broker的通信地址、各項配置信息、集群狀態(tài)、acl信息等,其具體作用有兩類。
    • 客戶端zookeeper:通過元數據獲取服務地址,完成通信(服務發(fā)現)。
    • 服務端kafka:通過元數據共享集群狀態(tài),一旦狀態(tài)變化后,controller能夠快速感知并通知到broker進行更新。

B. 元數據metadata定義

  • broker級別的metadata
    • 查看命令:ls /brokers
    • ids:get /brokers/ids/0,可以看到監(jiān)聽地址(kafka的地址+port)等信息。
    • topics:get /brokers/topics/xxxtopic/partitions/0,會獲取到controller epoch,leader epoch,leader所在broker,分區(qū)信息 & isr等信息。
    • seqid:seqid信息主要用于自動生成brokerid。
  • 配置信息級別的metadata
    • 查看命令:ls /config
    • 配置信息分類:共含有5類,changes、clients、brokers、topics & users。
    • 除了changes,其他均可由kafka-configs.sh腳本進行動態(tài)配置。
    • 注意:這些配置是持久化在zk上的,所以即便修改server.properties并重啟也不會改變zk內的值,只有通過kafka-configs.sh才可對持久化數據更改。

C. 元數據metadata更新

  • 概述:metadata保存在zk上,一般通過注冊watcher監(jiān)聽metadata變化并更新,kafka基于controller & controller的watcher完成。
  • 流程案例
    • isr更新,若原本邏輯需要在zk的brokers/topics/xxxtopic/isr_change_notification路徑下創(chuàng)建節(jié)點。
    • 現在基于controller,不需要zk直接創(chuàng)建節(jié)點,只需要controller注冊對于該路徑的監(jiān)聽即可。
    • 元數據在出現變化時,會向約定好的/notification或者/changes目錄下創(chuàng)建對應的節(jié)點,并寫入對應的信息。controller或者broker 只需對約定好的目錄添加監(jiān)聽器即可迅速感知到集群元數據的變化,這很大程度上減小了Wacther的注冊數量,簡化了代碼實現。
    • 總結:利用controller統(tǒng)一管理集群,controller自身會注冊大量watchers,但是降低了別的broker的watchers。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容