Kafka从上手到实践-Kafka集群:配置Broker

栏目: 后端 · 发布时间: 5年前

内容简介:接下来几个章节我们开始搭建真正的Kafka集群,服务器还是使用上一节章节搭建Zookeeper使用的三台阿里云ECS。在Kafka的配置项一共多达140余个,虽然有一部分通常情况下我们不需要修改,使用默认值即可,

接下来几个章节我们开始搭建真正的Kafka集群,服务器还是使用上一节章节搭建Zookeeper使用的三台阿里云ECS。

搭建单机Kafka 章节中,在Kafka的 /root/kafka_2.12-2.0.0/config/server.properties 配置文件中,我们只配置了 log.dirsadvertised.listeners 这两个配置项,其他配置项都是使用默认值。

Kafka的配置项一共多达140余个,虽然有一部分通常情况下我们不需要修改,使用默认值即可, 但这只是一少部分 。搭建Kafka集群时,光通常情况下需要考虑的配置项就有40余个。

另外,这些配置项要根据具体的业务场景做各种调整,不存在一套配置项通吃所有业务场景的情况,而且基本不可能一次性配置出性能最优、最能满足业务场景的配置项组合,都需要经过调整、测试,反复进行配置才能总结出相对最优的配置项组合。

Broker配置

先展示一份Broker的配置内容( /root/kafka_2.12-2.0.0/config/server.properties ),这里给出的是一个平铺的配置项列表,有一些配置项已经作废,有一些配置项之间有会有相互影响:

############################# Server Basics #############################
broker.id=0
# DEPRECATED
host.name=阿里云ECS IP
# DEPRECATED
port=9092
delete.topic.enable=true
auto.create.topics.enable=true

############################# Socket Server Settings #############################
listeners=PLAINTEXT://阿里云ECS IP:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL
advertised.listeners=PLAINTEXT://阿里云ECS IP:9092
inter.broker.listener.name=PLAINTEXT
num.network.threads=3
num.io.threads=8

############################# Log Basics #############################
log.dirs=/root/kafka_2.12-2.0.0/data/kafka
num.partitions=1
num.recovery.threads.per.data.dir=1
default.replication.factor=3
min.insync.replicas=2

############################# Log Retention Policy #############################
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.segment.ms=604800000

############################# Zookeeper #############################
zookeeper.connect=zookeeper.server.1:2181,zookeeper.server.2:2181,zookeeper.server.3:2181
zookeeper.connection.timeout.ms=6000

############################# Group Coordinator Settings #############################
group.initial.rebalance.delay.ms=0

############################# Message #############################
message.max.bytes=1048576
fetch.message.max.bytes=1048576

我们逐一了解上面这些配置项:

Broker Server基础配置

Broker Server的基础配置涉及到四个配置项:

broker.id
host.name
port
delete.topic.enable
auto.create.topics.enable

Socket Server配置

传输通信方面的配置涉及到六个配置项:

  • listeners :Broker之间,Client与Broker之间通信建立连接时使用的信息。既Broker的监听者,可以以逗号分割配置多个。它的格式为 [安全协议]://Hostname/IP:Port
  • listener.security.protocol.map :以Key/Value的形式定义监听者的安全协议,在大多数情况下会将Key认为是监听者的别名。所以会这样设置:

    listeners=LISTENER_BOB://阿里云ECS IP1:9092,LISTENER_JOHN://阿里云ECS IP2:9092
    listener.security.protocol.map=LISTENER_BOB:PLAINTEXT,LISTENER_JOHN:SSL
    
  • advertised.listeners :将Broker建立通信的地址发布到Zookeeper中,便于Client(Producer和Consumer)连接。它的格式和 listener 一致。

  • inter.broker.listener.name :设置内部通信时使用哪个监听者。可以直接设置 listener.security.protocol.map 中设置的Key。
  • num.network.threads :Broker Server接收请求及发送响应时启用的线程数量。
  • num.io.threads :Broker Server处理请求、对Message进行I/O操作时启用的线程数。

和监听者相关的四个配置项,在下一章节会做详细解释。

日志基础配置

Broker Server处理日志的基础配置涉及到五个配置项:

  • log.dirs :日志、Message保存的路径。
  • num.partitions :创建Topic时,如果没有指定Partition数量,则使用该配置项设置的Partition数量。
  • num.recovery.threads.per.data.dir :每个数据目录启用几个线程来处理,这里的线程数和数据目录数是乘积关系,并且只在Broker启动或关闭时使用。
  • default.replication.factor :创建Topic时,如果没有指定Partition的Replication Factor数,则使用该配置项设置的Replication Factor数。
  • min.insync.replicas :当 acks=all 时,至少有多少个Replicas需要确认已持久化数据,包括Leader。

日志保留策略配置

Broker Server处理日志保留问题的配置涉及到四个配置项:

log.retention.hours
log.segment.bytes
log.retention.check.interval.ms
log.segment.ms

Zookeeper相关配置

Zookeeper的相关配置涉及到两个配置项:

zookeeper.connect
zookeeper.connection.timeout.ms

Consumer Group相关配置

Consumer Group相关的配置主要涉及到一个配置项:

  • group.initial.rebalance.delay.ms :当Consumer Group新增或减少Consumer时,重新分配Topic Partition的延迟时间。

Message相关配置

Message相关配置涉及到两个配置项:

message.max.bytes
fetch.message.max.bytes

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高效程序员的45个习惯

高效程序员的45个习惯

Venkat Subramaniam、Andy Hunt / 钱安川、郑柯 / 人民邮电出版社 / 2010-01 / 35.00元

“书中‘切身感受’的内容非常有价值——通过它我们可以做到学有所思,思有所悟,悟有所行。” ——Nathaniel T. Schutta,《Ajax基础教程》作者 “此书通过常理和经验,阐述了为什么你应该在项目中使用敏捷方法。最难得的是,这些行之有效的实战经验,竟然从一本书中得到了。” ——Matthew Johnson,软件工程师 十年来,软件行业发生了翻天覆地的变化。敏捷......一起来看看 《高效程序员的45个习惯》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具