精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美成人综合| 日本另类视频| 99久久er热在这里只有精品15 | aa一级黄色片| 91p九色成人| 亚洲欧美日韩精品久久久久| 国产伦精品一区二区三区高清版| 国产精品男女视频| 天天做天天爱天天综合网2021 | 性高潮免费视频| 日韩影片中文字幕| 亚洲精品美国一| 日本成人黄色免费看| 国产女无套免费视频| 国产欧美激情| 欧美成人午夜激情| 性欧美精品男男| 91精品啪在线观看国产爱臀| 欧美性一二三区| 少妇人妻无码专区视频| 免费在线毛片网站| 91麻豆国产福利精品| 亚洲精品日产aⅴ| 一级一级黄色片| 18成人免费观看视频| 日韩在线观看精品| 国产全是老熟女太爽了| 99re热精品视频| 欧美精选在线播放| 国产熟人av一二三区| 9999在线视频| 一区二区在线观看视频| 亚洲精品国产精品国自产| 四虎永久在线观看| 国产成人综合精品三级| 国产精品视频网址| 国产午夜免费福利| 亚洲精品四区| 欧美日韩国产二区| 永久久久久久久| 日产精品一区二区| 亚洲午夜小视频| 精品人妻一区二区三区日产乱码卜| 熟女人妻在线视频| 色婷婷久久久亚洲一区二区三区| 欧美精品在线一区| 国内爆初菊对白视频| 国产在线精品一区二区三区不卡| 国产精品流白浆视频| 天堂网中文字幕| 国产欧美不卡| 91av中文字幕| 中文字幕在线观看视频网站| 亚洲久久在线| 国内精久久久久久久久久人| 国产亚洲小视频| 国产主播一区| 欧美激情一级欧美精品| 免费一级黄色大片| 激情欧美丁香| 91精品国产高清自在线| 成年人午夜视频| 国产午夜精品一区二区三区欧美 | 日韩电影av| 色综合久久综合中文综合网| 国产福利一区视频| 成人av色网站| 777午夜精品免费视频| 天天色天天综合网| 国产一区 二区| 精品久久一区二区三区| 久久久久亚洲AV成人无码国产| 国产精品qvod| 亚洲欧美日韩另类| 少妇一级黄色片| 五月婷婷亚洲| 欧美激情在线有限公司| 国产成人无码精品| 日韩一区精品字幕| 国产乱肥老妇国产一区二| 国产女人18毛片水真多| 成人一二三区视频| 欧美日韩精品一区| 日韩子在线观看| 亚洲一区二区视频| 国产黄色一级网站| 国产精品伊人| 精品少妇一区二区三区在线视频| 国产传媒第一页| 久久久久久久久久久久久久久久久久 | 国产精品sm| 欧美中文在线字幕| 中文字幕永久在线观看| 国产成人在线网站| 日本高清不卡一区二区三| 秋霞成人影院| 亚洲成a人v欧美综合天堂| 日韩精品一区二区三区久久| 欧美一级网址| 亚洲精品久久久一区二区三区| 精品国产成人亚洲午夜福利| 午夜精品婷婷| 国产精品高潮呻吟久久av无限| www日本高清| 国产亚洲一区二区三区在线观看| 成人免费a级片| 97精品国产综合久久久动漫日韩 | 国产精品四虎| 亚洲国产乱码最新视频| 999精品视频在线| www国产精品| 最新中文字幕亚洲| 天堂中文在线网| 国产高清不卡二三区| 欧美亚洲国产免费| av电影在线地址| 欧美一级视频精品观看| 色综合99久久久无码国产精品| 黄色成人在线网址| 成人在线小视频| 大地资源二中文在线影视观看| 成人羞羞网站入口| 亚洲2020天天堂在线观看| 91精品国产综合久| 久久嫩草精品久久久精品一| 国产精品久久久久7777| 白嫩亚洲一区二区三区| 国产亚洲视频在线| 国产免费观看av| 成人午夜免费电影| 永久免费网站视频在线观看| jizz免费一区二区三区| 亚洲无限av看| 天堂网视频在线| 91亚洲男人天堂| www.在线观看av| 亚洲国产欧美在线观看| 久久精品电影网站| 中文字幕在线观看1| 久久精品欧美日韩精品| 欧美在线观看成人| 精品午夜电影| 97视频在线播放| 欧美一级免费片| 亚洲午夜成aⅴ人片| 妖精视频在线观看| 欧美日韩a区| 国产精品久久亚洲7777| 日韩123区| 欧美电影免费提供在线观看| 色诱av手机版| 一二三区不卡| 亚洲va电影大全| 呦呦在线视频| 欧美mv和日韩mv的网站| 亚洲综合一二三| 972aa.com艺术欧美| 激情六月丁香婷婷| 免费久久精品| 国产精品视频在线播放| 777电影在线观看| 欧美电影影音先锋| 欧美成人精品欧美一级| 国产福利一区在线| 国产美女主播在线| 欧美jizz19性欧美| 欧美综合激情网| 国产毛片在线| 欧美精品自拍偷拍| 青青草精品在线视频| 大美女一区二区三区| 97国产精东麻豆人妻电影 | 五月天亚洲综合情| 日韩第二十一页| 色综合久久88| 青青草视频在线观看| 欧美性欧美巨大黑白大战| 伊人久久久久久久久久久久久久| 国产精品亚洲专一区二区三区 | 欧美xxxx精品| 国产精品一区二区免费不卡| av在线播放亚洲| 成人激情开心网| 91成人免费观看| 日韩大片免费观看| 中国人与牲禽动交精品| 91蝌蚪porny九色| 97av在线播放| 成人在线免费观看| 成人直播在线观看| 久久网福利资源网站| 国模私拍视频在线| 欧美最猛黑人xxxxx猛交| 欧美成人777| 91老司机福利 在线| 热久久久久久久久| 免费看日b视频| 国产69精品久久app免费版| 欧美日韩一区不卡| 91成人福利视频| 久久色.com| 被黑人猛躁10次高潮视频| 香蕉久久国产| 小泽玛利亚av在线| 丰满少妇xoxoxo视频| 久久精品这里都是精品| 91香蕉视频免费看| 久久在线精品| 男人添女人下部视频免费| 精品国产精品久久一区免费式| 91影视免费在线观看| 亚洲播播91| 国内精品模特av私拍在线观看| 日本高清在线观看wwwww色| 亚洲精品wwww| 国产乱码精品一区二三区蜜臂 | 国产欧美日韩亚州综合 | 久久最新资源网| 黄色影院在线播放| 亚洲成色www8888| 国产精品伦理一区| 欧美亚洲一区二区在线观看| 亚洲免费在线观看av| 伊人婷婷欧美激情| 日韩成人短视频| 国产精品视频麻豆| 亚洲性猛交xxxx乱大交| 99天天综合性| 青青草视频网站| 国产91露脸合集magnet| 日本在线观看视频一区| 美女一区二区三区| 无码人妻丰满熟妇区毛片| 日韩午夜激情| 九色自拍视频在线观看| 国产精品啊啊啊| 色哟哟免费网站| 91精品啪在线观看国产18| 亚洲一区二区三区精品在线观看| blacked蜜桃精品一区| 欧美激情第一页在线观看| 天海翼亚洲一区二区三区| 国产激情一区二区三区在线观看| 欧美视频二区欧美影视| 91最新国产视频| www.成人| 99精品99久久久久久宅男| 国产精品一区二区精品| 91在线精品视频| 精品成人18| 999热视频| www.丝袜精品| 精品午夜一区二区三区| 希岛爱理av免费一区二区| 欧美lavv| 日韩欧美伦理| 青春草在线视频免费观看| 亚洲精品国产精品国产自| 国产黄色一区二区| 日韩视频在线你懂得| 亚洲成人一二三区| 欧美变态口味重另类| 六月丁香色婷婷| 亚洲国产成人在线视频| 午夜国产在线观看| 亚洲欧洲av一区二区| 成人性生交大片免费看午夜| 最近2019年好看中文字幕视频| 四虎久久免费| 久久国产精品99国产精| 青春草在线视频| 91国语精品自产拍在线观看性色 | 欧美艳星brazzers| 中文字字幕在线观看| 欧美精品三级日韩久久| 国产婷婷在线视频| 精品成人在线观看| 手机看片福利在线观看| 国产午夜精品全部视频在线播放| 青青青青在线| 欧美精品国产精品日韩精品| 性欧美xxx69hd高清| 国产精品欧美日韩一区二区| 欧美2区3区4区| 久久综合九色综合久99| 日韩精品一区二区三区免费观看| 欧美 亚洲 视频| 免费久久99精品国产自在现线| www亚洲成人| 成人国产亚洲欧美成人综合网| 久久成人激情视频| 亚洲精品一二三| 亚洲欧美偷拍视频| 欧美日韩一区二区三区在线 | 日韩xxxx视频| 日韩电影一区二区三区四区| 久久aaaa片一区二区| 国产三级精品视频| 欧美日韩国产精品综合| 欧洲色大大久久| 丰满肥臀噗嗤啊x99av| 中文字幕日韩欧美在线视频| bbw在线视频| 成人免费福利在线| 一区二区三区视频免费观看| 91精品一区二区三区四区| 丝袜亚洲精品中文字幕一区| 亚洲国产精品第一页| 国产精品乱码久久久久久| 日韩成人免费在线观看| 欧美精品一卡两卡| 激情小视频在线观看| 久久久在线免费观看| 日本黄色成人| 五月天亚洲综合小说网| 欧美一级专区| 天堂www中文在线资源| 亚洲人成伊人成综合网小说| 波多野结衣在线观看视频| 亚洲国产精品999| 亚洲羞羞网站| 91人人爽人人爽人人精88v| 国产亚洲一区| 日韩欧美xxxx| 99久久99精品久久久久久| www青青草原| 欧美欧美欧美欧美首页| 久久经典视频| 欧美在线视频免费| 国产精品毛片av| 精品免费久久久久久久| 国产毛片精品国产一区二区三区| 国产一区二区三区视频播放| 91久久久免费一区二区| 国产一区在线观看免费| 一本久久综合亚洲鲁鲁五月天| 免费a级片在线观看| 欧美精品少妇videofree| 欧美大陆国产| 亚洲欧洲国产日韩精品| 日韩成人一区二区| 中文字幕国产综合| 日韩欧美精品免费在线| 天堂а√在线8种子蜜桃视频| 91极品视频在线| 激情小说亚洲图片| 成人一区二区免费视频| 成人av在线播放网站| 91香蕉在线视频| 亚洲欧美日韩视频一区| 美女18一级毛片一品久道久久综合| 久久久99国产精品免费| 男人天堂欧美日韩| 国产肥白大熟妇bbbb视频| 欧美中文字幕亚洲一区二区va在线| 二区在线观看| 91精品国产综合久久香蕉| 国产精品二区不卡| 国产探花一区二区三区| 午夜影视日本亚洲欧洲精品| 四虎成人免费在线| 国产精品88a∨| 欧美电影三区| 一卡二卡三卡四卡五卡| 亚洲国产人成综合网站| 欧美精品少妇| 国产精品欧美亚洲777777| 国产精品福利在线观看播放| 91精产国品一二三| 精品福利免费观看| 国产香蕉视频在线看| 成人福利网站在线观看| 欧美精品日本| 菠萝菠萝蜜网站| 欧美日韩视频专区在线播放| 在线电影福利片| 欧美日韩在线观看一区| 美国毛片一区二区| 麻豆changesxxx国产| 日韩电影网在线| 日韩一级特黄| 日韩人妻无码精品久久久不卡| 国产亚洲污的网站| 精品久久久免费视频| 欧美亚洲另类激情另类| 成人在线免费小视频| 制服.丝袜.亚洲.中文.综合懂| 狠狠综合久久av一区二区小说| porn视频在线观看| 成人免费看片网址| 久久蜜桃资源一区二区老牛| 国产大片免费看| 日韩精品视频在线观看网址| 日韩专区视频网站| 337p粉嫩大胆噜噜噜鲁| 17c精品麻豆一区二区免费| 亚州av在线播放| 91亚洲精华国产精华| 肉色丝袜一区二区| 精品小视频在线观看|