Kafka Note(七)元数据更新机制

(七)kafka的更新机制

A. 基础概念

  • 定义:元数据指用于寻找其他数据的标识,在kafka这类分布式集群中元数据特指各个节点brokers间所需的共享数据,如controller-epoch之类的信息。
  • 方式:kafka的元数据选用zookeeper来进行集中管理,使用/zkCli.sh -server 127.0.0.1get /brokers/ids/0查看信息。
  • 核心内容:kafka集群中的元数据记录了broker的通信地址、各项配置信息、集群状态、acl信息等,其具体作用有两类。
    • 客户端zookeeper:通过元数据获取服务地址,完成通信(服务发现)。
    • 服务端kafka:通过元数据共享集群状态,一旦状态变化后,controller能够快速感知并通知到broker进行更新。

B. 元数据metadata定义

  • broker级别的metadata
    • 查看命令:ls /brokers
    • ids:get /brokers/ids/0,可以看到监听地址(kafka的地址+port)等信息。
    • topics:get /brokers/topics/xxxtopic/partitions/0,会获取到controller epoch,leader epoch,leader所在broker,分区信息 & isr等信息。
    • seqid:seqid信息主要用于自动生成brokerid。
  • 配置信息级别的metadata
    • 查看命令:ls /config
    • 配置信息分类:共含有5类,changes、clients、brokers、topics & users。
    • 除了changes,其他均可由kafka-configs.sh脚本进行动态配置。
    • 注意:这些配置是持久化在zk上的,所以即便修改server.properties并重启也不会改变zk内的值,只有通过kafka-configs.sh才可对持久化数据更改。

C. 元数据metadata更新

  • 概述:metadata保存在zk上,一般通过注册watcher监听metadata变化并更新,kafka基于controller & controller的watcher完成。
  • 流程案例
    • isr更新,若原本逻辑需要在zk的brokers/topics/xxxtopic/isr_change_notification路径下创建节点。
    • 现在基于controller,不需要zk直接创建节点,只需要controller注册对于该路径的监听即可。
    • 元数据在出现变化时,会向约定好的/notification或者/changes目录下创建对应的节点,并写入对应的信息。controller或者broker 只需对约定好的目录添加监听器即可迅速感知到集群元数据的变化,这很大程度上减小了Wacther的注册数量,简化了代码实现。
    • 总结:利用controller统一管理集群,controller自身会注册大量watchers,但是降低了别的broker的watchers。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容