消息队列-Kafka Broker(主见)

2022-07-26,,,

 读视者谓明,读听者谓聪。
                                     ——《韩非子·外储说右上》

前言

最近说忙其实也不忙,抽时间留下笔墨,确实又被琐碎事情打乱,当然懒惰是原罪(不好意思,请饶恕,并未说Rapper懒惰,好歹人家还是说唱新世代的冠军,哈哈,暴露了自己伪黑怕迷)。
之前定的主题“Broker”,构思了几个大纲,但发现写出来的内容并非很多,容易误解伪水文的劣迹。(哈哈,LZ的内心戏真多,搞得自己文章有人看似的,哈哈,打脸了)

Broker

Kafka多台服务器组成的集群叫做Kafka的Broker,每个节点就是一个broker,Broker其实就是一个中间代理,Kafka producer 往broker里指定的topic写消息,Kafka consumer从broker里指定的topic拉取消息。

Broker配置

broker.id

每一台服务器都有一个broker.id,如果没有,则会自动生成一个唯一的broker.id,默认值为-1。为了避免不同的broker.id冲突,zookeeper生成这个broker.id是从最开始的值+1.
数据结构(摘抄于官网)

Type: int
Default: -1
Valid Values:
Importance: high
Update Mode: read-only

启动Broker集群时,每个broker会是实例化一个KafkaController,并将该brokerId注册到Zookeeper相应的节点里,即在Zookeeper的broker/ids目录下创建一个broker的id为名称的节点,这个节点就是用来检查broker是否健康的,当broker下线后,就会删除掉这个节点。

配置:

  • config/server.properties
    默认情况下broker.id值为-1,Kafka broker的id值必须大于等于0时才有可能正常启动

  • meta.properties

#Thu Dec 3 09:03:04 CST 2020
version=0
broker.id=1

会自动带一个版本号,一般固定为0

  • 自动生成功能
    broker.id.generation.enable和reserved.broker.max.id来配合生成新的broker.id。
    broker.id.generation.enable:用来配置是否开启自动生成broker.id的功能,默认情况下为true,即开启此功能。
    reserved.broker.max.id:自动生成的broker.id是有一个基准值的,即自动生成的broker.id必须超过这个基准值,这个基准值通过reserved.broker.max.id参数配置,默认值为1000,也就是说默认情况下自动生成的broker.id从1001开始。
    原理:自动生成broker.id的原理是先往/brokers/seqid节点中写入一个空字符串,然后获取返回的Stat信息中的version的值,然后将version的值和reserved.broker.max.id参数配置的值相加可得

log.dirs

用于保存数据的目录

数据结构(摘抄于官网)

Type: string
Default: null
Valid Values:
Importance: high
Update Mode: read-only

另外:
log.dir: 如果log.dirs没有设置,则使用数据的路径是这个配置,一般情况下,log.dir用来配置单个根目录,log.dirs用来配置多个根目录。

Type: string
Default: /tmp/kafka-logs
Valid Values:
Importance: high
Update Mode: read-only

值得一提的是,这个配置log并不是通常说的日志记录,而是持久化的消息。当创建一个主题时,如果对应的Broker存在副本,就会创建一个{topic}-{partition}的目录,该目录下有.index、.log、.timeindex、.leader-epoch-checkpoint文件。
broker启动后,log.dir目录中会有多个文件及目录,文件有cleaner-offset-checkpoint、log-start-offset-checkpoint、recovery-point-offset-checkpoint、replication-offset-checkpoint、meta.properties。

broker.rack

架的代理。这将用于架知道复制任务容错。例子:“RACK1”、“us-east-1d”

Type: string
Default: null
Valid Values:
Importance: medium
Update Mode: read-only

zookeeper.connect

Zookeeper以hostname:port的字符串形式来连接,为了允许其中一台Zookeeper节点下线,可以配置多个hosts,如hostname1:port1,hostname2:port2,hostname3:port3 .也可以配置一个Zookeeper chroot path最为连接的一部分,如
hostname1:port1,hostname2:port2,hostname3:port3/chroot/path

数据结构(摘抄于[官网]

Type: string
Default:
Valid Values:
Importance: high
Update Mode: read-only

Broker 选举

待续。。。

后序

下期预告,敬请关注:
(六)消息队列-Kafka 序列化(给予)

本文地址:https://blog.csdn.net/zhanshenzhi2008/article/details/109955537

《消息队列-Kafka Broker(主见).doc》

下载本文的Word格式文档,以方便收藏与打印。