自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一圖全解Kafka在Zookeeper中的數(shù)據(jù)結(jié)構(gòu)

開(kāi)發(fā) 架構(gòu) Kafka
在kafka_2.8.0之前,kafka還是需要依賴zookeeper運(yùn)行,kafka中的很多數(shù)據(jù)都存儲(chǔ)在zk中, 例如 「Broker的注冊(cè)信息」、「Topic的信息」 、 「運(yùn)維操作臨時(shí)信息 」、 「配置信息」等等其他信息。

[[421933]]

在kafka_2.8.0之前,kafka還是需要依賴zookeeper運(yùn)行,kafka中的很多數(shù)據(jù)都存儲(chǔ)在zk中, 例如 「Broker的注冊(cè)信息」、「Topic的信息」 、 「運(yùn)維操作臨時(shí)信息 」、 「配置信息」等等其他信息。

下面我們用用一張圖來(lái)窺探kafka在zookeeper中的全貌,建議收藏!!!

一圖知全貌

kafka在zookeeper中的數(shù)據(jù)結(jié)構(gòu)

1/cluster

01- /cluster/id 持久數(shù)據(jù)節(jié)點(diǎn)

集群ID 當(dāng)?shù)谝慌_(tái)Broker啟動(dòng)的時(shí)候, 發(fā)現(xiàn)/cluster/id不存在,那么它就會(huì)把自己的cluster.id配置寫(xiě)入zk; 標(biāo)記當(dāng)前zk是屬于集群哪個(gè)集群; 后面其他的Broker啟動(dòng)的時(shí)候會(huì)去獲取該數(shù)據(jù), 如果發(fā)現(xiàn)數(shù)據(jù)跟自己的配置不一致; 則拋出異常,加入的不是同一個(gè)集群; 數(shù)據(jù)示例:{"version":"1","id":"0"}

2/controller_epoch 持久數(shù)據(jù)節(jié)點(diǎn)

Controller選舉次數(shù);

3/Controller 臨時(shí)數(shù)據(jù)節(jié)點(diǎn)

當(dāng)前Controller角色的BrokerId,數(shù)據(jù)示例:{"version":1,"brokerid":0,"timestamp":"1624415590383"}刪除該節(jié)點(diǎn)立馬觸發(fā)重新選舉

4/log_dir_event_notification

zk的數(shù)據(jù)中有一個(gè)節(jié)點(diǎn)/log_dir_event_notification/,這是一個(gè)序列號(hào)持久節(jié)點(diǎn) 這個(gè)節(jié)點(diǎn)在kafka中承擔(dān)的作用是: 當(dāng)某個(gè)Broker上的LogDir出現(xiàn)異常時(shí)(比如磁盤損壞,文件讀寫(xiě)失敗,等等異常): 向zk中新增一個(gè)子節(jié)點(diǎn)/log_dir_event_notification/log_dir_event_序列號(hào) ;Controller監(jiān)聽(tīng)到這個(gè)節(jié)點(diǎn)的變更之后,會(huì)向Brokers們發(fā)送LeaderAndIsrRequest請(qǐng)求; 然后做一些副本脫機(jī)的善后操作

5/isr_change_notification/log_dir_event_{序列號(hào)}

當(dāng)Isr有變更的時(shí)候,會(huì)寫(xiě)入這個(gè)節(jié)點(diǎn)Controller監(jiān)聽(tīng)變更

6/admin

01 -/admin/delete_topics/{topicName} 持久節(jié)點(diǎn),待刪除Topic

存在此節(jié)點(diǎn)表示 當(dāng)前Topic需要被刪除

02 - /admin/reassign_partitions 持久數(shù)據(jù)節(jié)點(diǎn)

如果有此節(jié)點(diǎn),表示當(dāng)前正在進(jìn)行數(shù)據(jù)遷移,里面的數(shù)據(jù)就是正在遷移的配置 示例數(shù)據(jù): 

7/brokers

01 -/brokers/seqid

/brokers/seqid: 全局序列號(hào)里面沒(méi)有數(shù)據(jù),主要是用了節(jié)點(diǎn)的dataVersion信息來(lái)當(dāng)全局序列號(hào)

在kafka中的作用: 自動(dòng)生成BrokerId主要是用來(lái)自動(dòng)生成brokerId; 一個(gè)集群如果特別大,配置brokerId的時(shí)候不能重復(fù),一個(gè)個(gè)設(shè)置比較累; 可以讓Broker自動(dòng)生成BrokerId

server.properties 配置

  1. ## 設(shè)置Brokerid能夠自動(dòng)生成 
  2. broker.id.generation.enable=true 
  3. ## 設(shè)置BrokerId<0 (如果>=0則以此配置為準(zhǔn)) 
  4. broker.id=-1 
  5. ## 自動(dòng)生成配置的起始值 
  6. reserved.broker.max.id=20000 

BrokerId計(jì)算方法

brokerId = {reserved.broker.max.id} +/brokers/seqid.dataVersion

每次想要獲取/brokers/seqid的dataVersion值的時(shí)候都是用 set方法,set的時(shí)候會(huì)返回version數(shù)據(jù),并不是get;每次set這個(gè)節(jié)點(diǎn)數(shù)據(jù),版本信息就會(huì)自增;所以就實(shí)現(xiàn)了全局自增ID了;

02 - /brokers/ids/{id} 臨時(shí)數(shù)據(jù)節(jié)點(diǎn) : 在線BrokerID

在線的Broker都會(huì)在這里注冊(cè)一個(gè)節(jié)點(diǎn); 下線自動(dòng)刪除

03 - /brokers/topics/{topicName}持久數(shù)據(jù)節(jié)點(diǎn)

存儲(chǔ) topic的分區(qū)副本分配信息 例如:{"version":1,"partitions":{"0":[0]}}

/brokers/topics/{topicName}/{分區(qū)號(hào)}/state 持久數(shù)據(jù)節(jié)點(diǎn)

存儲(chǔ)指定分區(qū)的leader和isr等信息 例如:{"controller_epoch":203,"leader":0,"version":1,"leader_epoch":0,"isr":[0]}

本文轉(zhuǎn)載自微信公眾號(hào)「石臻臻的雜貨鋪」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系石臻臻的雜貨鋪公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 石臻臻的雜貨鋪
相關(guān)推薦

2010-09-25 13:07:50

DHCP協(xié)議結(jié)構(gòu)

2010-07-13 13:59:04

ICMP協(xié)議

2021-04-19 09:08:19

無(wú)向圖數(shù)據(jù)結(jié)構(gòu)

2020-09-18 09:13:46

數(shù)據(jù)結(jié)構(gòu)元素

2010-01-28 09:47:38

WLAN交換機(jī)

2023-04-13 08:14:53

數(shù)據(jù)結(jié)構(gòu)算法存儲(chǔ)

2018-03-01 14:10:37

Kubernetes負(fù)載均衡容器

2021-01-06 08:03:00

JavaScript數(shù)據(jù)結(jié)構(gòu)

2011-07-04 10:32:37

JAVA

2019-10-29 08:59:16

Redis底層數(shù)據(jù)

2017-05-16 10:49:20

大數(shù)據(jù)數(shù)據(jù)流程圖數(shù)據(jù)結(jié)構(gòu)

2019-09-03 10:40:23

數(shù)據(jù)結(jié)構(gòu)HTML編程

2020-01-16 11:23:32

Zookeeper數(shù)據(jù)結(jié)構(gòu)API

2011-04-06 08:54:28

CactiRRD

2023-04-14 08:07:20

數(shù)據(jù)結(jié)構(gòu)算法搜索

2021-01-28 07:33:34

JavaScript鏈表數(shù)據(jù)

2023-02-28 09:10:28

設(shè)計(jì)模式解耦數(shù)據(jù)

2012-10-08 14:52:56

數(shù)據(jù)結(jié)構(gòu)

2023-12-22 08:56:01

Java編程語(yǔ)言鏈表

2019-09-18 08:31:47

數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)