欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

消息队列-Kafka Broker(主见)

程序员文章站 2022-03-03 09:26:05
读视者谓明,读听者谓聪。 ——《韩非子·外储说右上》前言最近说忙其实也不忙,抽时间留下笔墨,确实又被琐碎事情打乱,当然懒惰是原罪(不好意思,请饶恕,并未说Rapper懒惰,好歹人家还是说唱新世纪的冠军,哈哈,暴露了自己伪黑怕迷)。之前定的主题“Broker”,构思了几个大纲,但发现写出来的内容并非很多,容易误解伪水文的劣迹。(哈哈,LZ的内心戏真多,搞得自己文章有人看似的,哈哈,打脸了)BrokerKafka多台服务....
 读视者谓明,读听者谓聪。
                                     ——《韩非子·外储说右上》

消息队列-Kafka Broker(主见)

前言

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

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 序列化(给予)
消息队列-Kafka Broker(主见)

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

相关标签: 消息队列