日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Kafka在Zookeeper中存儲(chǔ)的信息有哪些?

作者:禿禿愛(ài)健身 更新時(shí)間: 2022-06-06 編程語(yǔ)言

0、總述

在這里插入圖片描述

Kafka在Zookeeper中存儲(chǔ)的信息都在/根路徑下;大致分為5大類(lèi),

  1. /brokers目錄下存儲(chǔ)著kafka集群broker的相關(guān)信息,包括:
    • /broker/ids/目錄,采用臨時(shí)znode的方式,存儲(chǔ)所有的broker節(jié)點(diǎn),每個(gè)broker的配置文件中都需要指定一個(gè)數(shù)字類(lèi)型的id(全局不可重復(fù));
    • /broker/topics/目錄,采用持久znode的方式,存儲(chǔ)所有的topic注冊(cè)信息;
    • /brokers/topics/[topic_name]/partitions/目錄,采用持久znode的方式,存儲(chǔ)某個(gè)topic的partitions所有分配信息;
  2. /controller目錄存儲(chǔ)著Controller中央控制器所在kafka broker的信息;
    • 另外,在/controller_epoch路徑下還存儲(chǔ)著Controller的選舉次數(shù)(默認(rèn)從1開(kāi)始),與partition狀態(tài)信息中的值相同;
  3. /consumers目錄下存儲(chǔ)著kafka集群所有Consumer的相關(guān)信息,包括:
    • /consumers/[group_id]/ids/目錄,采用臨時(shí)znode的方式,存儲(chǔ)Consumer訂閱信息,每個(gè)consumer都有一個(gè)唯一的ID用來(lái)標(biāo)記消費(fèi)者信息;
    • /consumers/[group_id]/owners/[topic_name]/[partition_id]目錄下,采用臨時(shí)znode的方式,存儲(chǔ)著consumer group對(duì)應(yīng)的各個(gè)topic及partition的消費(fèi)者線程。
    • /consumers/[group_id]/offsets/[topic_name]/[partition_id]目錄下,采用持久znode的方式,存儲(chǔ)著consumer group對(duì)應(yīng)的各個(gè)topic及partition的消費(fèi)偏移量。
  4. /admin目錄下存儲(chǔ)著kafka集群的管理信息,包括:
    • /admin/reassign_partitions目錄下存儲(chǔ)著partition重分配信息;
    • /admin/preferred_replica_election目錄下存儲(chǔ)著最優(yōu)replica選舉信息;
    • /admin/delete_topics目錄下存儲(chǔ)著近期刪除的topic;
  5. /isr_change_notification/目錄下存儲(chǔ)著ISR變更通知信息;

1) /brokers(Broker相關(guān)信息)

1> broker注冊(cè)信息

路徑:/broker/ids/[broker_id]

存儲(chǔ)所有的broker節(jié)點(diǎn),每個(gè)broker的配置文件中都需要指定一個(gè)數(shù)字類(lèi)型的id(全局不可重復(fù)),此節(jié)點(diǎn)為臨時(shí)znode。

存儲(chǔ)數(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
}

請(qǐng)?zhí)砑訄D片描述

存儲(chǔ)數(shù)據(jù)解析:

  • jmx_port:JMX端口號(hào)
  • host:broker所在主機(jī)名或IP地址
  • port:開(kāi)放的TCP端口號(hào)
  • timestamp:broker啟動(dòng)時(shí)的時(shí)間戳
  • version:版本號(hào),下面所有的version值均是代表版本號(hào)

當(dāng)Kafka集群中有新節(jié)點(diǎn)上線 或 舊節(jié)點(diǎn)下線時(shí),這個(gè)路徑(/broker/ids)下的數(shù)據(jù)就會(huì)改變;

2> topic注冊(cè)信息

路徑:/broker/topics/[topic_name];

存儲(chǔ)所有的topic注冊(cè)信息;

存儲(chǔ)數(shù)據(jù)示例:

[zk: localhost:2181(CONNECTED) 27] get /brokers/topics/saint-test-topic 
{
	"version": 2,
	"partitions": {
		"0": [0]
	},
	"adding_replicas": {},
	"removing_replicas": {}
}

請(qǐng)?zhí)砑訄D片描述

存儲(chǔ)數(shù)據(jù)解析:

  • partitions:topic中各個(gè)partition的ID,以及其對(duì)應(yīng)的ISR中各個(gè)broker的ID的列表。

當(dāng)有topic被創(chuàng)建 / 刪除,或者partition發(fā)生變更時(shí),這個(gè)路徑下的數(shù)據(jù)就會(huì)更新。通過(guò)對(duì)topic以及上述/broker/ids節(jié)點(diǎn)變更注冊(cè)監(jiān)聽(tīng),可以實(shí)現(xiàn)producer的負(fù)載均衡。

另外,在/admin/delete_topics路徑下還保存有已經(jīng)標(biāo)記為刪除的topic名稱(只有名稱,沒(méi)有其他數(shù)據(jù))。在/config/topics/[topic_name]路徑下保存有各個(gè)topic的自定義配置。

3> partition狀態(tài)信息

路徑:/brokers/topics/[topic_name]/partitions/[partition_id]/state

存儲(chǔ)某個(gè)topic的partitions所有分配信息;

存儲(chǔ)數(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]
}

請(qǐng)?zhí)砑訄D片描述

存儲(chǔ)數(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注冊(cè)信息)

路徑:/controller

存儲(chǔ)Controller中央控制器所在kafka broker的信息;

存儲(chǔ)數(shù)據(jù)示例:

[zk: localhost:2181(CONNECTED) 31] get /controller
{
	"version": 1,
	"brokerid": 0,
	"timestamp": "1649662012132"
}

存儲(chǔ)數(shù)據(jù)解析:

  • brokerid:現(xiàn)在集群中controller的節(jié)點(diǎn)ID。
  • timestamp:最近一次controller變化的時(shí)間戳。

如果Controller信息節(jié)點(diǎn)被刪除,就會(huì)觸發(fā)集群重新選舉Controller。

另外,在/controller_epoch路徑下還保存有controller的紀(jì)元值,與partition狀態(tài)信息中的值相同。每重新選舉一次,該值就會(huì)加1。

3) /consumers(Consumer訂閱信息)

路徑:/consumers/[group_id]/ids/[consumer_id]

存儲(chǔ)Consumer訂閱信息,每個(gè)consumer都有一個(gè)唯一的ID用來(lái)標(biāo)記消費(fèi)者信息,此節(jié)點(diǎn)是一個(gè)臨時(shí)的znode;

存儲(chǔ)數(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"
}

存儲(chǔ)數(shù)據(jù)解析:

  • subscription:訂閱的topic名稱,及該topic對(duì)應(yīng)消息流個(gè)數(shù)的映射。
  • pattern:訂閱方式,可取值為靜態(tài)(static)、白名單(white_list)、黑名單(black_list)
  • timestamp:consumer創(chuàng)建時(shí)的時(shí)間戳。

通過(guò)ZK維護(hù)的consumer及consumer group信息,可以實(shí)現(xiàn)消費(fèi)者負(fù)載均衡。

另外,在/consumers/[group_id]/offsets/[topic_name]/[partition_id]目錄下,采用持久znode的方式,存儲(chǔ)著consumer group對(duì)應(yīng)的各個(gè)topic及partition的消費(fèi)偏移量。
/consumers/[group_id]/owners/[topic_name]/[partition_id]目錄下,采用臨時(shí)znode的方式,存儲(chǔ)著consumer group對(duì)應(yīng)的各個(gè)topic及partition的消費(fèi)者線程。

4) /admin(集群管理信息)

1> partition重分配信息

路徑:/admin/reassign_partitions

存儲(chǔ)數(shù)據(jù)示例:

{
  "version": 1,
  "partitions": [
    {
      "topic": "bl_mall_wish",
      "partition": 1,
      "replicas": [0, 1, 3]
    }
  ]
}

存儲(chǔ)數(shù)據(jù)解析:

  • topic:訂閱的topic名稱。
  • partition:重新分配partition的id。
  • replicas:partition副本所在的broker id。

2> 最優(yōu)replica選舉信息

路徑:/admin/preferred_replica_election

存儲(chǔ)數(shù)據(jù)示例:

{
  "version": 1,
  "partitions": [
    {
      "topic": "bl_mall_orders",
      "partition": 1
    },
    {
      "topic": "bl_mall_products",
      "partition": 0
    }
  ]
}

存儲(chǔ)數(shù)據(jù)解析:

  • topic:訂閱的topic名稱。
  • partition:重新分配partition的id。
  • replicas:partition副本所在的broker id。

5)/isr_change_notification(ISR變更通知信息)

路徑:/isr_change_notification/[isr_change_x]

各個(gè)partition的ISR集合并不是一成不變的。當(dāng)ISR發(fā)生變化(比如有replica超時(shí))時(shí),controller會(huì)將發(fā)生變化的那個(gè)partition存入/isr_change_notification/[isr_change_x]

原文鏈接:https://blog.csdn.net/Saintmm/article/details/124110149

欄目分類(lèi)
最近更新