美文网首页
(5)kafka元数据(1)

(5)kafka元数据(1)

作者: hedgehog1112 | 来源:发表于2020-10-13 20:51 被阅读0次

    zk进行 kafka 集群元数据和状态管理,未来将去zk,用Raft实现,zk集群主要作用:

    1)存元数据: 主题分区所有数据都存在 zk 中,其他都要与它对齐

    2)成员管理: 是指 Broker 节点注册、注销以及属性变更

    3)Controller 选举: 选集群 Controller,其他管理任务包括但不限于主题删除、参数配置

    zk主要选举controller,offset、leader选举都不依赖zk:controller在选主后在handleleaderandisrrequest中带上brokerepoch,leaderepoch信息,如本地信息比发送来的新,不更新,如自己是follower就开始轮询数据,follower是不知道log落后多少的,只是轮询数据。拉取数据时通过leaderepoch和startoffset确定数据回溯和拉取的数据点

    Controller 只会向 Broker 发送三类请求,分别是 LeaderAndIsrRequest、StopReplicaRequest 和 UpdateMetadataRequest。请求必然包含 3 个字段。controllerId:Controller 所在的 Broker ID。controllerEpoch:Controller 的版本信息。brokerEpoch:目标 Broker 的 Epoch。

    如果broker不是controller,就不需要关心leader epoch,如果被选举为controller,则需要从zk上同步元数据,除了epoch,还有isr,topic信息等

    所以broker的元数据缓存会保存当前controller的brokerid,除非收到zk的更新事件,否则一直同步数据就行了

    一、kafka 集群数据zk 中存储&分布

    admin: 存管理员接口操作信息,主要为 topic 删除事件,分区迁移事件,优先副本选举,信息 (一般为临时节点)

    brokers: broker 节点、节点上topic信息

    cluster: 存kafka 集群信息

    config: 存储 broker,client,topic,user 及 changer 配置信息

    consumers: 存消费者信息 (一般空)

    controller: 控制节点信息 (用于 controller 节点注册,临时节点)

    controller_epoch: 存 controller 节点年龄

    isr_change_notification: 存 isr 的变更通知 (临时节点,当有 isr 进行变动,事件通知,可进行 watch 获取集群 isr 状态变更)

    latest_producer_id_block: 该节点用于存储处理事务相关的 pid 范围

    log_dir_event_notification: 日志目录事件通知

    brokers 目录结构:

    https://zhuanlan.zhihu.com/p/149884955

    ps:消费元数据是保存在consumer端的,先读逻辑队列consumQue中元数据,再从commitlog找消息体

    相关文章

      网友评论

          本文标题:(5)kafka元数据(1)

          本文链接:https://www.haomeiwen.com/subject/rysvpktx.html