網(wǎng)站首頁 編程語言 正文
0、總述
Kafka在Zookeeper中存儲的信息都在/
根路徑下;大致分為5大類,
/brokers
目錄下存儲著kafka集群broker的相關(guān)信息,包括:
/broker/ids/
目錄,采用臨時znode的方式,存儲所有的broker節(jié)點,每個broker的配置文件中都需要指定一個數(shù)字類型的id(全局不可重復(fù));/broker/topics/
目錄,采用持久znode的方式,存儲所有的topic注冊信息;/brokers/topics/[topic_name]/partitions/
目錄,采用持久znode的方式,存儲某個topic的partitions所有分配信息;/controller
目錄存儲著Controller中央控制器所在kafka broker的信息;
- 另外,在
/controller_epoch
路徑下還存儲著Controller的選舉次數(shù)(默認(rèn)從1開始),與partition狀態(tài)信息中的值相同;/consumers
目錄下存儲著kafka集群所有Consumer的相關(guān)信息,包括:
/consumers/[group_id]/ids/
目錄,采用臨時znode的方式,存儲Consumer訂閱信息,每個consumer都有一個唯一的ID用來標(biāo)記消費者信息;/consumers/[group_id]/owners/[topic_name]/[partition_id]
目錄下,采用臨時znode的方式,存儲著consumer group對應(yīng)的各個topic及partition的消費者線程。/consumers/[group_id]/offsets/[topic_name]/[partition_id]
目錄下,采用持久znode的方式,存儲著consumer group對應(yīng)的各個topic及partition的消費偏移量。/admin
目錄下存儲著kafka集群的管理信息,包括:
/admin/reassign_partitions
目錄下存儲著partition重分配信息;/admin/preferred_replica_election
目錄下存儲著最優(yōu)replica選舉信息;/admin/delete_topics
目錄下存儲著近期刪除的topic;/isr_change_notification/
目錄下存儲著ISR變更通知信息;
1) /brokers
(Broker相關(guān)信息)
1> broker注冊信息
路徑:/broker/ids/[broker_id]
存儲所有的broker節(jié)點,每個broker的配置文件中都需要指定一個數(shù)字類型的id(全局不可重復(fù)),此節(jié)點為臨時znode。
存儲數(shù)據(jù)示例:
[zk: localhost:2181(CONNECTED) 25] get /brokers/ids/0
{
"listener_security_protocol_map": {
"PLAINTEXT": "PLAINTEXT"
},
"endpoints": ["PLAINTEXT://192.168.1.76:9092"],
"jmx_port": -1,
"features": {},
"host": "192.168.1.76",
"timestamp": "1649662012051",
"port": 9092,
"version": 5
}
存儲數(shù)據(jù)解析:
- jmx_port:JMX端口號
- host:broker所在主機名或IP地址
- port:開放的TCP端口號
- timestamp:broker啟動時的時間戳
- version:版本號,下面所有的version值均是代表版本號
當(dāng)Kafka集群中有新節(jié)點上線 或 舊節(jié)點下線時,這個路徑(/broker/ids)下的數(shù)據(jù)就會改變;
2> topic注冊信息
路徑:/broker/topics/[topic_name];
存儲所有的topic注冊信息;
存儲數(shù)據(jù)示例:
[zk: localhost:2181(CONNECTED) 27] get /brokers/topics/saint-test-topic
{
"version": 2,
"partitions": {
"0": [0]
},
"adding_replicas": {},
"removing_replicas": {}
}
存儲數(shù)據(jù)解析:
- partitions:topic中各個partition的ID,以及其對應(yīng)的ISR中各個broker的ID的列表。
當(dāng)有topic被創(chuàng)建 / 刪除,或者partition發(fā)生變更時,這個路徑下的數(shù)據(jù)就會更新。通過對topic以及上述/broker/ids節(jié)點變更注冊監(jiān)聽,可以實現(xiàn)producer的負(fù)載均衡。
另外,在/admin/delete_topics
路徑下還保存有已經(jīng)標(biāo)記為刪除的topic名稱(只有名稱,沒有其他數(shù)據(jù))。在/config/topics/[topic_name]
路徑下保存有各個topic的自定義配置。
3> partition狀態(tài)信息
路徑:/brokers/topics/[topic_name]/partitions/[partition_id]/state
存儲某個topic的partitions所有分配信息;
存儲數(shù)據(jù)示例:
[zk: localhost:2181(CONNECTED) 29] get /brokers/topics/saint-test-topic/partitions/0/state
{
"controller_epoch": 2,
"leader": 0,
"version": 1,
"leader_epoch": 0,
"isr": [0]
}
存儲數(shù)據(jù)解析:
controller_epoch:controller的紀(jì)元(代數(shù)),即集群重新選舉controller的次數(shù)。
leader:該partition選舉leader的brokerId。
leader_epoch:partition leader的紀(jì)元(代數(shù)),即當(dāng)前partition選舉leader的次數(shù)。
isr:同步副本組brokerId列表。
2) /controller
(Controller注冊信息)
路徑:/controller
存儲Controller中央控制器所在kafka broker的信息;
存儲數(shù)據(jù)示例:
[zk: localhost:2181(CONNECTED) 31] get /controller
{
"version": 1,
"brokerid": 0,
"timestamp": "1649662012132"
}
存儲數(shù)據(jù)解析:
- brokerid:現(xiàn)在集群中controller的節(jié)點ID。
- timestamp:最近一次controller變化的時間戳。
如果Controller信息節(jié)點被刪除,就會觸發(fā)集群重新選舉Controller。
另外,在/controller_epoch
路徑下還保存有controller的紀(jì)元值,與partition狀態(tài)信息中的值相同。每重新選舉一次,該值就會加1。
3) /consumers
(Consumer訂閱信息)
路徑:/consumers/[group_id]/ids/[consumer_id]
存儲Consumer訂閱信息,每個consumer都有一個唯一的ID用來標(biāo)記消費者信息,此節(jié)點是一個臨時的znode;
存儲數(shù)據(jù)示例:
[zk: localhost:2181(CONNECTED) 35] get /consumers/consumer-group-01/ids/1-d110015a-0317-466c-a510-c5d245d05209
{
"version": 1,
"subscription": {
"saint-test-topic": 1
},
"pattern": "white_list",
"timestamp": "1558617131642"
}
存儲數(shù)據(jù)解析:
- subscription:訂閱的topic名稱,及該topic對應(yīng)消息流個數(shù)的映射。
- pattern:訂閱方式,可取值為靜態(tài)(static)、白名單(white_list)、黑名單(black_list)
- timestamp:consumer創(chuàng)建時的時間戳。
通過ZK維護的consumer及consumer group信息,可以實現(xiàn)消費者負(fù)載均衡。
另外,在/consumers/[group_id]/offsets/[topic_name]/[partition_id]
目錄下,采用持久znode的方式,存儲著consumer group對應(yīng)的各個topic及partition的消費偏移量。
在/consumers/[group_id]/owners/[topic_name]/[partition_id]
目錄下,采用臨時znode的方式,存儲著consumer group對應(yīng)的各個topic及partition的消費者線程。
4) /admin
(集群管理信息)
1> partition重分配信息
路徑:/admin/reassign_partitions
存儲數(shù)據(jù)示例:
{
"version": 1,
"partitions": [
{
"topic": "bl_mall_wish",
"partition": 1,
"replicas": [0, 1, 3]
}
]
}
存儲數(shù)據(jù)解析:
- topic:訂閱的topic名稱。
- partition:重新分配partition的id。
- replicas:partition副本所在的broker id。
2> 最優(yōu)replica選舉信息
路徑:/admin/preferred_replica_election
存儲數(shù)據(jù)示例:
{
"version": 1,
"partitions": [
{
"topic": "bl_mall_orders",
"partition": 1
},
{
"topic": "bl_mall_products",
"partition": 0
}
]
}
存儲數(shù)據(jù)解析:
- topic:訂閱的topic名稱。
- partition:重新分配partition的id。
- replicas:partition副本所在的broker id。
5)/isr_change_notification
(ISR變更通知信息)
路徑:/isr_change_notification/[isr_change_x]
各個partition的ISR集合并不是一成不變的。當(dāng)ISR發(fā)生變化(比如有replica超時)時,controller會將發(fā)生變化的那個partition存入/isr_change_notification/[isr_change_x]
中
原文鏈接:https://blog.csdn.net/Saintmm/article/details/124110149
相關(guān)推薦
- 2022-08-16 Python中集合的創(chuàng)建及常用函數(shù)的使用詳解_python
- 2022-09-22 Pod 生命周期、重啟策略、健康檢查、服務(wù)可用性檢查
- 2022-08-10 Python進階學(xué)習(xí)修改閉包內(nèi)使用的外部變量_python
- 2022-11-25 mysate中stat命令的實現(xiàn)方法_C 語言
- 2022-06-30 Oracle在PL/SQL中嵌入SQL語句_oracle
- 2022-07-09 Android廣播實現(xiàn)App開機自啟動_Android
- 2022-10-04 C++超詳細(xì)梳理lambda和function的使用方法_C 語言
- 2022-06-26 Android如何使用圓形揭露動畫巧妙地隱藏或顯示View詳解_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支