kafka配置
broker配置
- 常规配置
-
broker.id:唯一标识,如果机器名包含唯一性数字(host1.example.com、host2.example.com),那么用数字设置broker.id更适合做主机映射
-
port:kafka数据端口,默认为9092
-
zookeeper.connect:保存broker元数据的zk地址,多个以逗号隔开. 格式:hostname:port/path(path作为kafka集群的chroot环境,默认为根路径)
为什么使用chroot路径?
因为zk集群可以共享,可以通过chroot路径将broker集群置于不同的路径下 -
log.dirs:存放kafka数据目录. 一组用逗号分开的本地文件系统路径. 如果制定了多个路径,broker会根据"最少使用"原则,把同一分区的日志保存在同一路径. 要注意,broker会往拥有最少数目分区的路径新增分区,而不是往拥有最小磁盘空间的路径新增分区.
-
num.recovery.threads.per.data.dir:处理日志的线程池. 默认情况下,每个日志目录只使用一个线程. 因为这些线程只是在服务器启动和关闭时会用到,所以可以设置大量的线程来达到并行操作的目的. 特使是对于包含大量分区的服务器来说,一旦发生奔溃,在进行恢复时使用并行操作会节省数小时时间.
-
auto.create.topics.enable:默认情况下,kafka会在下面几种情形自动创建主题: 建议设置为false
* 当一个生产者往主题写入消息时 * 当一个消费者开始从主题读取消息时 * 当任意一个客户端向主题发送元数据请求时
- 主题的默认配置
-
num.partitions:新建主题包含多少个分区. 如果启用了主题自动创建功能(auto.create.topics.enable=true 默认),主题分区个数就是该参数指定的值. 该参数默认值为1. 我们可以增加主题分区的个数,但不能减少分区个数. 所以,要让一个主题的分区个数少于num.partitions指定的值,需要手动创建该主题.
-
log.retention.ms:数据被保留多久,默认是168小时,也就是一周.
-
log.retention.bytes:根据消息字节数保留多久. 如果一个包含8个分区的主题,并且log.retention.bytes设为1GB,那么最多保留8GB数据. 所以,当主题分区个数增加时,整个主题可以保留的数据随之增加.
如果上面2个都设置,那么任意一个满足条件,都会被删除 -
log.segment.bytes:作于日志片段上,而不是作用域单个消息上. 当消息达到broker时,他们被追加到分区的当前日志片段上. 当日志片段达到log.segment.bytes指定上限时(默认是1GB),当前日志片段就会被关闭, 一个新的日志片段被打开. 如果一个日志片段被关闭,就开始等待过期. 这个参数值越小,就会越频繁关闭额分配新文件,从而降低磁盘写入整体效率…
如果主题的消息量不大,那么这个参数的大小就尤为重要. 例如,如果一个主题每天接收100MB的消息,而log.segment.bytes使用默认设置,那么需要10天时间才可以填满一个日志片段. 因为在日志片段填满之前是不会过期的,所以如果log.retention.ms被设为1周,那么日志片段最多需要17天才会过期,这是因为关闭日志片段需要10天时间,根据配置的过期时间,还需要保留7天时间(要等到日志片段的最后一个消息过期才能被删除)
-
log.segment.ms:默认情况下,log.segment.ms没有设定值,所以根据大小来关闭日志片段.
基于时间的日志片段对磁盘性能影响
基于时间日志片段时,要考虑并行关闭多个日志片段对磁盘性能的影响. broker在启动之后开始计算日志片段的过期时间,对于哪些数据量小的分区来说,日志片段的关闭时间总是同时发生 -
message.max.bytes:限制单个消息的大小,默认值是1 000 000,也就是1MB. 该参数指的是压缩后的消息大小,消息的实际大小可以远大于这个值.
服务端和客户端协调消息大小的配置
消费者客户端设置的tetch.message.max.bytes必须与服务器端设置的消息大小进行协调. 如果这个值比message.max.bytes小,那么消费者就无法读取比较大的消息,导致出现消费者阻塞的情况. 在为集群的broker设置replica.tetch.max.bytes参数,也遵循同样的原则.
上一篇: KAFKA配置
下一篇: kafka安装和基本使用
推荐阅读
-
mysql 5.7以上版本安装配置方法图文教程(mysql 5.7.12mysql 5.7.13mysql 5.7.14)
-
Eclipse怎么在线配置Hibernate Tools?
-
eclipse怎么删除配置好的多余的工作空间?
-
Mysql5.7.17 winx64.zip解压缩版安装配置图文教程
-
MySQL 5.6下table_open_cache参数优化合理配置详解
-
Centos7安装和配置Mysql5.7
-
eclipse怎么创建servlet中class并配置servlet教程
-
Android studio怎么配置代码检查规则?
-
Visual Studio怎么重新配置开发环境?
-
vb每次打开都让配置cad2007怎么办?