精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Kafka放棄Zookeeper后如何存儲主題與消費組呢?

云計算 Kafka
主題的路由信息是存儲在Zookeeper中,那為什么客戶端只需要Broker的地址,就可以獲取到主題的路由信息呢?

由于筆者公司目前使用的kafka版本是2.2.1,故當下關于kafka的內核研究目前主要是基于該版本,當然該專欄還會繼續關注Kafka3.0。

我在使用kafka時發現客戶端可以不依賴Zookeeper的情況下完成消息發送、消息消費,眾所周知早期的Kafka,所有的元信息(topic、消費組、集群)等信息都存儲在Zookeeper中,原先的消息發送客戶端、消息消費客戶端都需要依賴Zookeeper。

溫馨提示:Kafka逐步開啟了去zookeeper化,到kafka2.8之前實現了消息發送者、消息消費者的去zookeeper化,從2.8版之后broker也支持去zookeeper。

那kafka2.2.1版本中,主題的路由信息、消費組信息分別是存儲在什么地方呢?消息發送端、消息消費端是如何感知的呢?

溫馨提示:如果大家對Kafka有基本的了解,不防停留片刻,稍作思考。

1.主題元數據存儲在Zookeeper中

進入到Kafka Broker連接的Zookeeper集群,我們不難發現在 /{namespace}/brokers/topics節點下存在該集群中所有的主題信息,展開某一個具體的主題,如下圖所示:

關于主題的元信息,其實主要包括如下信息:

  • 分區數量 每一個具體topic下會有一個partitions節點,該節點下的每一個子節點代表一個分區。
  • 分區狀態信息 每一個分區的的狀態由葉子節點 /{namespace}/brokers/topics/{topicName}/parttions/{partNO}/state表示,存儲的內容如下:

controller_epoch 控制器當前的選舉版本。

leader 該分區的Leader所在的Broker節點ID。

version 當前的存儲格式版本,默認為1。

leader_epoch 分區Leader的選舉版本。

isr 分區的ISR集合。

主題的路由信息是存儲在Zookeeper中,那為什么客戶端只需要Broker的地址,就可以獲取到主題的路由信息呢?

1.1 主題路由尋址

查找路由信息在Kafka2.1版本中是發送ApiKeys.METADATA請求,該請求的響應邏輯定義在Broker中,那客戶端是如何對Broker進行路由,Broker中的路由信息又是從何而來呢?

消息發送者首次發送METADATA定位Broker機制:首次發送請求會從KafkaProducer的bootstrap.servers中設置的broker列表中選擇當前最空閑的Broker,后續能感知所有的Broker。

消息消費者發送METADATA定位Broker機制:發送到當前消費組的組協調所在的Broker。

根據查閱KafkaApis的handleTopicMetadataRequest方法,進行一些ACL校驗后進入其核心方法:

關鍵點:

  • 從MetadataCache中獲取topic到路由信息。
  • 如果MetadataCache中不存在指定topic的路由信息,如果Broker允許自動創建主題(auto.create.topics.enable),默認為true,則自動創建該主題的信息,并將主題信息寫入到zookeeper,具體操作:

在/brokers/topics節點下創建子節點,子節點名稱為topic的名稱。

根據當前kafka分區的機架信息,分區數、副本數,broker節點數,進行分配,主要盡量將主分區不放在同一個機架、存儲在主題的節點信息中,例如{"version":1,"partitions":{"4":[2,0,1],"5":[0,1,2],"1":[2,1,0],"0":[1,0,2],"2":[0,2,1],"3":[1,2,0]}},其中key為分區名稱,值為副本所在的brokerId,其中排在第一位是傾向性Leader,主題中存儲的值是靜態數據,具體還會觸發選舉,選舉算法會參考這個分配。

控制器還會注冊調用registerPartitionModificationsHandlers方法,監聽主題信息的變化,從而觸發后續流程,啟動分區的真正創建(各個分區的Leader選舉等)。

溫馨提示:Kafka開啟自動創建主題,分區數量取自kafka broker中的num.partitions參數,默認為1,副本因子則取決于default.replication.factor參數,默認為1。

1.2 路由信息同步機制

MetadataCache,元信息緩存,那這里的數據又是從何而來呢?MetadataCache中路由信息的更新調用鏈如下圖所示:

Kafka的KafkaController(后續統稱控制器)首先會聽/brokers/topics/{topicName}節點內容的變化,一旦有新主題創建或主題信息變更,topic變更事件就會觸發,此時TopicChange的process方法會調用,最終調用updatePartitionReplicaAssignment,也就是一旦主題的信息發生變更,控制器會向所有Broker節點發送ApiKeys.UPDATE_METADATA,各個Broker在到該請求后,會更新各個Broker中的內存緩存,供消息發送者查找topic路由信息。

即Kafka2.2版本中,topic的元信息存儲在Zookeeper中,同時Kafka Controller會監聽zookeeper中相關節點,從而感知信息變更,從而將路由信息通過RPC發送到集群內所有的Broker中,故每一個Broker的內存中都存儲一份相同的路由信息。

Kafka2.8版本開始嘗試去Zookeeper化。

思考題:為什么各個Broker不都監聽zookeeper,從而感知topic變化,更新本地內存呢?歡迎各位留言討論或私信dingwpmz,共同交流。

2.消費組存儲在位點主題中

在較低版本中,啟動Kafka消費組需要指定zookeeper集群的地址,因為在低版本中消費組的元信息存儲在zookeeper中,具體路徑為/consumers,但后續版本中消費端的啟動已經不需指定zookeeper,而是指定broker的地址列表即可,那這個時候,消費組的信息是存儲在哪呢?

在前面介紹Kafka故障解決相關的文章中我們常常看到消費組組協調器,內部持有一個消費組元數據管理器GroupMetadataManager,相關的代碼截圖如下所示:

在GroupMetadataManager對象中持有一個Map結構的緩存,其鍵為消費組的名稱,值為GroupMetadata對象,內部記錄消費組的狀態,消費組的成員列表,位點信息。

內存的特點:訪問高效,但隨著Broker進程的退出而丟失,消費組存儲在內存中顯然不行,但又不在zookeeper中,那消費組的定義信息存儲在什么地方呢?

2.1消費組元信息存儲

消費組的定義信息存儲在系統主題__consumer_offsets中,什么,這個主題不是用來存儲消費位點的嗎?

原來__consumer_offsets不僅存儲消費組的位點信息,還存儲消費組的元信息,具體代碼入口:GroupMetadataManager#storeGroup,部分代碼截圖如下所示:

即消費組元信息當成一條消息寫入到__consumer_offsets,一條消費組元信息存儲的value值,由GroupMetadataManager的groupMetadataValue方法定義,具體代碼如下:

隨著Kafka的不斷演化,存儲格式進行了多次修改,對應的版本如下:

  • V0:Kafka 0.10級以下版本
  • V1:大于 0.10,低于等于2.1版本。
  • V2:2.2版本及以后

消費組元信息存儲的格式為Json,具體存儲的內容:

  • protocol_type 協議版本,取自AbstractCoordinator的抽象方法protocolType(),消費組的固定為:consumer。
  • generation 消費組元信息的版本號,每發生一次消費組重平衡,該值會加一。
  • protocol 協議內容,存儲消費組的隊列負載算法,在構建消費者時可通過partition.assignment.strategy參數傳遞,可以傳遞多個,消費組具體的負載算法會選擇每一個消費者都支持的協議進行隊列負載,默認的負載算法為RangeAssignor。
  • leader 當前消費組的Leader,通常為第一個加入該消費組的消費者。
  • current_state_timestamp 最新狀態變更的時間戳,該值是從V2版本開始引入。
  • members 消費組的成員信息,每一個成員信息存儲的信息如下:
  • member_id 成員id,客戶端id(clientId) + uuid。

client_id 客戶端ID。

client_host 客戶端ip地址。

rebalance_timeout 重平衡時間,默認為300000,5分鐘。

session_timeout 會話超時時間,默認為10s。

subscription 元信息,取自AbstractCoordinator的抽象方法metadata(),消費組的實現類為ConsumerCoordinator,主要是遍歷負載算法,每一個負載算法根據訂閱信息計算元信息。

assignment

各個消費者的隊列負載情況。

溫馨提示:GroupMetadataManager的storeGroup方法的調用時間是在消費組進行重平衡時,具體是重平衡第二階段(SYNC_GROUP)與完成重平衡。

2.2加載消息組元信息

消費組元信息是存儲在 __consumer_offsets主題中,在什么時候會從該主題中加載到內存中呢?

在__consumer_offsets的分區發生Leader選舉時會觸發將對應分區中的數據加載到內存,具體的處理入口在KafkaApis的handleLeaderAndIsrRequest方法,簡易調用鏈如下圖所示:

3.總結

本文主要介紹了Kafka 主題與消費組的持久化機制,在Kafka2.8版本開始,官方逐步去除對Zookeeper的依賴,那kafka3.x之后,又會是如何存儲消費組、主題的信息呢?

責任編輯:武曉燕 來源: 中間件興趣圈
相關推薦

2022-05-10 15:24:34

KafkaZooKeeperKafka Raft

2021-04-21 12:29:45

KafkaZookeeper模型

2020-11-13 10:58:24

Kafka

2020-09-30 14:07:05

Kafka心跳機制API

2025-09-05 02:33:00

2021-07-12 10:25:03

RocketMQ數據結構kafka

2020-12-04 10:31:56

組消費分區Kafka

2024-09-23 20:55:04

2023-08-27 21:51:50

Kafka數據庫數據存儲

2021-04-30 08:29:16

KafkaZooKeeper分布式

2024-10-29 11:08:23

2023-11-27 17:29:43

Kafka全局順序性

2019-12-16 09:37:19

Kafka架構數據

2021-02-01 07:20:51

KafkaPulsar搜索

2023-06-01 08:08:38

kafka消費者分區策略

2021-05-20 09:06:20

KafkaZookeeper分布式

2018-07-26 15:18:41

阿里JavaKafka架構

2024-10-17 16:41:57

KafkaZooKeeper

2021-04-28 18:28:44

KafkaZookeeper

2025-03-25 07:54:15

點贊
收藏

51CTO技術棧公眾號

国产裸体美女永久免费无遮挡| 中文字幕永久有效| 天天射天天操天天干| 一区福利视频| 日韩h在线观看| 免费日韩视频在线观看| 午夜老司机福利| 一本不卡影院| 一区二区三区天堂av | 亚洲成人tv| 日韩一级在线观看| 久久久999免费视频| 九色视频网站在线观看| 久久99精品国产| 在线免费观看羞羞视频一区二区| 日韩不卡的av| 涩涩涩在线视频| 国产精品天干天干在观线| 91免费版黄色| 日韩 国产 欧美| 欧美精品不卡| 亚洲欧美激情视频| 红桃视频一区二区三区免费| 天堂√中文最新版在线| 1000精品久久久久久久久| 国产一区二区高清视频| 久久国产香蕉视频| 欧美69视频| 国产亚洲精品91在线| 日本高清免费观看| 日韩电影网站| 亚洲图片有声小说| 亚洲欧洲日本国产| 香港一级纯黄大片| 国产精品一区二区男女羞羞无遮挡| 国外成人性视频| 中文字幕观看av| 亚洲a级精品| 日韩一区二区三区精品视频| 亚洲精品中文字幕无码蜜桃| 在线免费观看a视频| 欧美国产丝袜视频| 久草精品电影| 精品人妻一区二区三区麻豆91| 日韩av不卡一区二区| 久久久久久久久久久亚洲| 老熟妇高潮一区二区三区| 精品精品久久| 日韩精品中文在线观看| 天堂va欧美va亚洲va老司机| 国产精品蜜月aⅴ在线| 岛国av午夜精品| 男人j进女人j| www视频在线免费观看| 欧美国产一区视频在线观看| 欧美精品七区| 四虎精品在线| 成人av资源在线观看| 91免费福利视频| 在线观看不卡的av| 日韩激情av在线| 国产精品久久久久91| 狠狠人妻久久久久久| 国产一区二区你懂的| 欧美另类极品videosbestfree| 久久精品色妇熟妇丰满人妻| 沈樵精品国产成av片| 国产视频久久久久| 99热超碰在线| 成人自拍在线| 精品国精品国产尤物美女| 三上悠亚 电影| 日韩有吗在线观看| 日韩欧美www| 女王人厕视频2ⅴk| 婷婷精品久久久久久久久久不卡| 欧美在线影院一区二区| 日韩少妇内射免费播放18禁裸乳| 国内激情视频在线观看| 欧美视频一区二区三区…| 亚洲 欧美 日韩 国产综合 在线| 人在线成免费视频| 色综合久久综合| 手机视频在线观看| 亚洲精品aaa| 日韩精品在线网站| 欧美在线一级片| 美女久久99| 亚洲精美色品网站| 成人免费网站黄| 亚洲三级精品| 深夜福利一区二区| 免费成人美女女在线观看| 一区二区三区四区电影| 九九视频这里只有精品| 欧美日韩中文视频| 在线亚洲免费| 国产精品久久久久久av福利软件| 中文字幕永久在线观看| 国产高清久久久久| 精品国产乱码久久久久软件| 韩国中文字幕2020精品| 亚洲国产精品传媒在线观看| 这里只有精品66| 天堂av中文在线| 欧美日韩中文字幕在线| 国产成人无码一二三区视频| 深夜日韩欧美| 日韩电影中文字幕av| 国产又粗又长免费视频| 欧美天堂亚洲电影院在线观看 | 欧美伊人久久久久久久久影院| 国产精品亚洲a| 国产一区二区| 精品播放一区二区| 手机毛片在线观看| 亚洲国产激情| 国产精品福利小视频| 国产富婆一级全黄大片| 国产亚洲精品aa午夜观看| 黄色一级片网址| 免费h视频在线观看| 911精品产国品一二三产区| 国产xxxx视频| 亚洲影视一区二区三区| 热久久99这里有精品| 精品无码一区二区三区的天堂| 精品一区二区久久| wwwxx欧美| 91caoporn在线| 日韩欧美在线中文字幕| 一卡二卡三卡四卡五卡| 成人在线免费观看视频| 欧美激情在线观看视频| 做爰无遮挡三级| www.欧美日韩国产在线| 99re99热| av在线不卡精品| 亚洲二区在线播放视频| 男女做暖暖视频| 欧美aaa在线| 亚洲成人午夜在线| 国产成人精品一区二区三区免费| 精品视频在线播放免| 精品成人免费视频| 99视频国产精品| 欧美一级欧美一级| 林ゆな中文字幕一区二区| 欧美激情精品久久久久久免费印度 | 欧美日韩福利| 91在线视频免费| av在线free| 日韩久久免费av| 久久网免费视频| 成人午夜视频在线观看| 草草视频在线免费观看| 精品久久97| 91黄色8090| 邻居大乳一区二区三区| 在线观看区一区二| 国产又黄又粗又猛又爽的| 久久99久久精品| 9l视频自拍9l视频自拍| 综合激情五月婷婷| 69精品小视频| 国产高清免费在线播放| 欧美美女黄视频| 中文字幕av免费在线观看| 高清在线观看日韩| 亚洲午夜精品久久久久久人妖| 国内精品久久久久久99蜜桃| 国产日韩在线看| 天堂成人av| 亚洲精品一区二区三区婷婷月| 日韩黄色一级视频| 最新欧美精品一区二区三区| 日本wwww色| 国产视频亚洲| 亚洲午夜精品国产| 亚洲免费一区三区| 日本欧美在线视频| 一本一道波多野毛片中文在线| 欧美一区二区日韩| 精品91久久久| 国产精品久久久一区麻豆最新章节| 交换做爰国语对白| av成人天堂| 一区二区三区视频在线播放| 日本一区二区三区视频在线看| 91国内在线视频| 日本在线免费中文字幕| 亚洲精品一区二区精华| 中文字幕在线观看第二页| 亚洲一区二区三区三| 西西444www无码大胆| 国产九色精品成人porny| 99精品在线免费视频| 9999国产精品| 久久综合一区| 精品国产乱码久久久久久樱花| 69视频在线播放| 97caopor国产在线视频| 亚洲天堂男人的天堂| 精品久久在线观看| 欧美性大战久久| 日本一区二区不卡在线| 一色桃子久久精品亚洲| 搡老熟女老女人一区二区| 国产在线播精品第三| 精品www久久久久奶水| 亚洲婷婷免费| 中文字幕中文字幕在线中心一区| 日韩精品免费一区二区夜夜嗨| 成人亚洲激情网| 精品国模一区二区三区| 久久久久久久久91| 免费黄网站在线播放| 亚洲色在线视频| 午夜视频在线播放| 日韩欧美在线影院| 91精品国产乱码久久久久| 色噜噜狠狠色综合中国| 亚洲国产综合久久| 亚洲激情自拍偷拍| 久久精品一区二区三区四区五区 | 欧美一区二区三区四区在线观看地址| 日韩欧美中文字幕在线视频| 成人精品一区二区三区电影黑人| 小黄鸭精品aⅴ导航网站入口| 97免费在线视频| 黄网站在线观| 九色成人免费视频| www久久日com| 久久香蕉频线观| 日本成人在线播放| 最近2019中文字幕大全第二页| 国产一级免费在线观看| 日韩精品在线观看视频| 日批视频免费播放| 亚洲第一视频在线观看| 亚洲精品国产suv一区| 欧美一级夜夜爽| av免费在线不卡| 日韩一区二区三区视频在线观看 | 国产高清不卡一区二区| 欧美视频亚洲图片| 国产一区视频导航| 久久精品一卡二卡| 国产一区 二区 三区一级| 99精品视频国产| 国产高清亚洲一区| 欧美久久久久久久久久久| 成人一区二区视频| 一边摸一边做爽的视频17国产 | 国产精品乱码| 精品国产影院| 欧美一区二区视频17c| 国产一区二区三区探花| 日韩视频在线播放| 色综合天天爱| 好吊色视频988gao在线观看| 影音先锋日韩在线| av在线观看地址| 国产精品毛片在线| 蜜臀视频一区二区三区| 久久成人av少妇免费| 91精品视频国产| 成人黄色小视频在线观看| 国产艳俗歌舞表演hd| 国产欧美日韩一区二区三区在线观看| 九九九视频在线观看| 综合久久久久综合| 久久国产一级片| 色综合夜色一区| 亚洲视频久久久| 欧美一级片在线观看| 婷婷综合激情网| 中文字幕在线成人| 午夜小视频福利在线观看| 91黄色8090| 日本欧美在线| 国产精品免费在线| 精品欧美久久| www.国产亚洲| 免费亚洲婷婷| 91小视频在线播放| 99精品久久免费看蜜臀剧情介绍| 麻豆精品免费视频| 亚洲色图.com| 天堂а√在线中文在线新版| 欧美日韩国产综合一区二区三区 | 中国china体内裑精亚洲片| 成人免费网址| 日韩av电影中文字幕| 成人97精品毛片免费看| 久久久久久久久久久久久久一区| 久久要要av| 天天夜碰日日摸日日澡性色av| 麻豆91在线播放| 日本性生活一级片| 国产精品乱码人人做人人爱 | 欧美视频你懂的| 蜜桃91麻豆精品一二三区| 国产亚洲精品综合一区91| 手机在线免费看av| 国产精品亚洲激情| 天堂俺去俺来也www久久婷婷| 亚洲一二三区精品| 国产精品久久国产愉拍| xxx中文字幕| 欧美—级在线免费片| 99热只有这里有精品| 91精品国产aⅴ一区二区| 亚洲日本中文字幕在线| 久久99久久久久久久噜噜| jvid一区二区三区| 女同一区二区| 亚洲手机在线| 四虎国产精品免费| 专区另类欧美日韩| 在线免费观看中文字幕| 亚洲视频一区二区三区| 国产福利电影在线播放| 91黄色精品| 亚洲一级毛片| 在线观看免费的av| 国产精品麻豆网站| 国产乱码77777777| 亚洲另类xxxx| 制服丝袜专区在线| 国产伦精品一区二区三区视频孕妇| 永久亚洲成a人片777777| 在线观看日本一区二区| 日本一区二区在线不卡| 手机av免费观看| 亚洲欧美成人网| 国产精品一区二区av影院萌芽| 国产一区福利视频| 亚洲日本视频| 亚洲精品乱码久久久久久蜜桃图片| 一区二区三区欧美亚洲| 精品国自产在线观看| 欧美日韩国产成人在线| 在线精品自拍| 欧美成人精品免费| 成人毛片视频在线观看| 国产一级免费观看| 亚洲精品一区二区三区精华液| rebdb初裸写真在线观看| 国产亚洲欧美一区二区三区| 亚洲美洲欧洲综合国产一区| 国产精品一区二区无码对白| 天天av天天翘天天综合网色鬼国产| 丰满人妻av一区二区三区| 国产+人+亚洲| 日韩欧美四区| 久草综合在线观看| 国产精品美女www爽爽爽| 亚洲熟妇无码久久精品| 美女精品久久久| 国产精品sss在线观看av| 亚洲色欲综合一区二区三区| 欧美韩日一区二区三区四区| 一级黄色片网站| 欧美精品在线网站| 你懂的在线观看一区二区| 精品一卡二卡三卡| 中文字幕一区视频| 成人黄色免费视频| 91成人免费观看网站| 精品香蕉视频| 一级黄色高清视频| 黄色成人在线免费| 第九色区av在线| 91在线观看免费观看| 日韩亚洲国产欧美| 国产sm调教视频| 日韩欧美国产一区二区三区| 草草视频在线| 亚洲精品国产一区| 国产成人综合视频| aaaaaa毛片| 久久久av网站| 欧美调教网站| 在线观看国产一级片| 午夜视频一区二区| av在线免费观看网站| 国产成人精品免费视频大全最热| 亚洲欧美网站| 欧美xxxx黑人xyx性爽| 精品一区二区三区电影| 白嫩亚洲一区二区三区| 2022亚洲天堂| 亚洲美女在线一区| 韩国中文免费在线视频| 国产98在线|日韩| 美国欧美日韩国产在线播放| 日韩三级视频在线播放| 日韩在线免费视频| 天堂资源在线亚洲|