内容简介:接下来几个章节我们开始搭建真正的Kafka集群,服务器还是使用上一节章节搭建Zookeeper使用的三台阿里云ECS。在Kafka的配置项一共多达140余个,虽然有一部分通常情况下我们不需要修改,使用默认值即可,
接下来几个章节我们开始搭建真正的Kafka集群,服务器还是使用上一节章节搭建Zookeeper使用的三台阿里云ECS。
在 搭建单机Kafka
章节中,在Kafka的 /root/kafka_2.12-2.0.0/config/server.properties
配置文件中,我们只配置了 log.dirs
和 advertised.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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Kafka从上手到实践-Kafka集群:启动Kafka集群
- Kafka从上手到实践-实践真知:搭建Zookeeper集群
- Kafka从上手到实践-Kafka集群:Kafka Listeners
- Kafka从上手到实践-Kafka集群:重要配置和性能探讨
- 快速上手virtualenv
- MongoDB 简单上手
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高效程序员的45个习惯
Venkat Subramaniam、Andy Hunt / 钱安川、郑柯 / 人民邮电出版社 / 2010-01 / 35.00元
“书中‘切身感受’的内容非常有价值——通过它我们可以做到学有所思,思有所悟,悟有所行。” ——Nathaniel T. Schutta,《Ajax基础教程》作者 “此书通过常理和经验,阐述了为什么你应该在项目中使用敏捷方法。最难得的是,这些行之有效的实战经验,竟然从一本书中得到了。” ——Matthew Johnson,软件工程师 十年来,软件行业发生了翻天覆地的变化。敏捷......一起来看看 《高效程序员的45个习惯》 这本书的介绍吧!