日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一圖全解Kafka在Zookeeper中的數(shù)據(jù)結(jié)構(gòu)

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

作者: 石臻臻 2021-09-06 09:05:58

開發(fā)

架構(gòu)

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

云南網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)于2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

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

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

一圖知全貌

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

1/cluster

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

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

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

Controller選舉次數(shù);

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

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

4/log_dir_event_notification

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

5/isr_change_notification/log_dir_event_{序列號}

當(dāng)Isr有變更的時候,會寫入這個節(jié)點Controller監(jiān)聽變更

6/admin

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

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

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

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

7/brokers

01 -/brokers/seqid

/brokers/seqid: 全局序列號里面沒有數(shù)據(jù),主要是用了節(jié)點的dataVersion信息來當(dāng)全局序列號

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

server.properties 配置

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

BrokerId計算方法

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

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

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

在線的Broker都會在這里注冊一個節(jié)點; 下線自動刪除

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

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

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

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

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


新聞標(biāo)題:一圖全解Kafka在Zookeeper中的數(shù)據(jù)結(jié)構(gòu)
本文地址:http://m.5511xx.com/article/dhpgdos.html