#
唯一标识在集群中的
ID
,要求是正数。
broker.id=0
#
服务端口,默认
9092
port=9092
#
监听地址,不设为所有地址
host.name=debugo01
#
处理网络请求的最大线程数
num.network.threads=2
#
处理磁盘
I/O
的线程数
num.io.threads=8
#
一些后台线程数
background.threads = 4
#
等待
IO
线程处理的请求队列最大数
queued.max.requests = 500
# socket
的发送缓冲区(
SO_SNDBUF
)
socket.send.buffer.bytes=1048576
# socket
的接收缓冲区
(SO_RCVBUF)
socket.receive.buffer.bytes=1048576
# socket
请求的最大字节数。为了防止内存溢出,
message.max.bytes
必然要小于
socket.request.max.bytes = 104857600
############################# Topic #############################
#
每个
topic
的分区个数,更多的
partition
会产生更多的
segment file
num.partitions=2
#
是否允许自动创建
topic
,若是
false
,就需要通过命令创建
topic
auto.create.topics.enable =true
#
一个
topic
,默认分区的
replication
个数 ,不能大于集群中
broker
的个数。
default.replication.factor =1
#
消息体的最大大小,单位是字节
message.max.bytes = 1000000
############################# ZooKeeper #############################
# Zookeeper quorum
设置。如果有多个使用逗号分割
zookeeper.connect=debugo01:2181,debugo02,debugo03
#
连接
zk
的超时时间
zookeeper.connection.timeout.ms=1000000
# ZooKeeper
集群中
leader
和
follower
之间的同步实际
zookeeper.sync.time.ms = 2000
############################# Log #############################
#
日志存放目录,多个目录使用逗号分割
log.dirs=/var/log/kafka
#
当达到下面的消息数量时,会将数据
flush
到日志文件中。默认
10000
#log.flush.interval.messages=10000
#
当达到下面的时间
(ms)
时,执行一次强制的
flush
操作。
interval.ms
和
interval.messages
无论哪个达到,都会
flush
。默认
3000ms
#log.flush.interval.ms=1000
#
检查是否需要将日志
flush
的时间间隔
log.flush.scheduler.interval.ms = 3000
#
日志清理策略(
delete|compact
)
log.cleanup.policy = delete
#
日志保存时间
(hours|minutes)
,默认为
7
天(
168
小时)。超过这个时间会根据
policy
处理数据。
bytes
和
minutes
无论哪个先达到都会触发。
log.retention.hours=168
#
日志数据存储的最大字节数。超过这个时间会根据
policy
处理数据。
#log.retention.bytes=1073741824
#
控制日志
segment
文件的大小,超出该大小则追加到一个新的日志
segment
文件中(
-1
表示没有限制)
log.segment.bytes=536870912
#
当达到下面时间,会强制新建一个
segment
log.roll.hours = 24*7
#
日志片段文件的检查周期,查看它们是否达到了删除策略的设置(
log.retention.hours
或
log.retention.bytes
)
log.retention.check.interval.ms=60000
#
是否开启压缩
log.cleaner.enable=false
#
对于压缩的日志保留的最长时间
log.cleaner.delete.retention.ms = 1 day
#
对于
segment
日志的索引文件大小限制
log.index.size.max.bytes = 10 * 1024 * 1024
#y
索引计算的一个缓冲区,一般不需要设置。
log.index.interval.bytes = 4096
############################# replica #############################
# partition management controller
与
replicas
之间通讯的超时时间
controller.socket.timeout.ms = 30000
# controller-to-broker-channels
消息队列的尺寸大小
controller.message.queue.size=10
# replicas
响应
leader
的最长等待时间,若是超过这个时间,就将
replicas
排除在管理之外
replica.lag.time.max.ms = 10000
#
是否允许控制器关闭
broker ,
若是设置为
true,
会关闭所有在这个
broker
上的
leader
,并转移到其他
broker
controlled.shutdown.enable = false
#
控制器关闭的尝试次数
controlled.shutdown.max.retries = 3
#
每次关闭尝试的时间间隔
controlled.shutdown.retry.backoff.ms = 5000
#
如果
relicas
落后太多
,
将会认为此
partition relicas
已经失效。而一般情况下
,
因为网络延迟等原因
,
总会导致
replicas
中消息同步滞后。如果消息严重滞后
,leader
将认为此
relicas
网络延迟较大或者消息吞吐能力有限。在
broker
数量较少
,
或者网络不足的环境中
,
建议提高此值
.
replica.lag.max.messages = 4000
#leader
与
relicas
的
socket
超时时间
replica.socket.timeout.ms= 30 * 1000
# leader
复制的
socket
缓存大小
replica.socket.receive.buffer.bytes=64 * 1024
# replicas
每次获取数据的最大字节数
replica.fetch.max.bytes = 1024 * 1024
# replicas
同
leader
之间通信的最大等待时间,失败了会重试
replica.fetch.wait.max.ms = 500
#
每一个
fetch
操作的最小数据尺寸
,
如果
leader
中尚未同步的数据不足此值
,
将会等待直到数据达到这个大小
replica.fetch.min.bytes =1
# leader
中进行复制的线程数,增大这个数值会增加
relipca
的
IO
num.replica.fetchers = 1
#
每个
replica
将最高水位进行
flush
的时间间隔
replica.high.watermark.checkpoint.interval.ms = 5000
#
是否自动平衡
broker
之间的分配策略
auto.leader.rebalance.enable = false
# leader
的不平衡比例,若是超过这个数值,会对分区进行重新的平衡
leader.imbalance.per.broker.percentage = 10
#
检查
leader
是否不平衡的时间间隔
leader.imbalance.check.interval.seconds = 300
#
客户端保留
offset
信息的最大空间大小
offset.metadata.max.bytes = 1024
#############################Consumer #############################
# Consumer
端核心的配置是
group.id
、
zookeeper.connect
#
决定该
Consumer
归属的唯一组
ID
,
By setting the same group id multiple processes indicate that they are all part of the same consumer group.
group.id
#
消费者的
ID
,若是没有设置的话,会自增
consumer.id
#
一个用于跟踪调查的
ID
,最好同
group.id
相同
client.id = <group_id>
#
对于
zookeeper
集群的指定,必须和
broker
使用同样的
zk
配置
zookeeper.connect=debugo01:2182,debugo02:2182,debugo03:2182
# zookeeper
的心跳超时时间,查过这个时间就认为是无效的消费者
zookeeper.session.timeout.ms = 6000
# zookeeper
的等待连接时间
zookeeper.connection.timeout.ms = 6000
# zookeeper
的
follower
同
leader
的同步时间
zookeeper.sync.time.ms = 2000
#
当
zookeeper
中没有初始的
offset
时,或者超出
offset
上限时的处理方式 。
# smallest
:重置为最小值
# largest:
重置为最大值
# anything else
:抛出异常给
consumer
auto.offset.reset = largest
# socket
的超时时间,实际的超时时间为
max.fetch.wait + socket.timeout.ms.
socket.timeout.ms= 30 * 1000
# socket
的接收缓存空间大小
socket.receive.buffer.bytes=64 * 1024
#
从每个分区
fetch
的消息大小限制
fetch.message.max.bytes = 1024 * 1024
# true
时,
Consumer
会在消费消息后将
offset
同步到
zookeeper
,这样当
Consumer
失败后,新的
consumer
就能从
zookeeper
获取最新的
offset
auto.commit.enable = true
#
自动提交的时间间隔
auto.commit.interval.ms = 60 * 1000
#
用于消费的最大数量的消息块缓冲大小,每个块可以等同于
fetch.message.max.bytes
中数值
queued.max.message.chunks = 10
#
当有新的
consumer
加入到
group
时
,
将尝试
reblance,
将
partitions
的消费端迁移到新的
consumer
中
,
该设置是尝试的次数
rebalance.max.retries = 4
#
每次
reblance
的时间间隔
rebalance.backoff.ms = 2000
#
每次重新选举
leader
的时间
refresh.leader.backoff.ms
# server
发送到消费端的最小数据,若是不满足这个数值则会等待直到满足指定大小。默认为
1
表示立即接收。
fetch.min.bytes = 1
#
若是不满足
fetch.min.bytes
时,等待消费端请求的最长等待时间
fetch.wait.max.ms = 100
#
如果指定时间内没有新消息可用于消费,就抛出异常,默认
-1
表示不受限
consumer.timeout.ms = -1
#############################Producer#############################
#
核心的配置包括:
# metadata.broker.list
# request.required.acks
# producer.type
# serializer.class
#
消费者获取消息元信息
(topics, partitions and replicas)
的地址
,
配置格式是:
host1:port1,host2:port2
,也可以在外面设置一个
vip
metadata.broker.list
#
消息的确认模式
# 0
:不保证消息的到达确认,只管发送,低延迟但是会出现消息的丢失,在某个
server
失败的情况下,有点像
TCP
# 1
:发送消息,并会等待
leader
收到确认后,一定的可靠性
# -1
:发送消息,等待
leader
收到确认,并进行复制操作后,才返回,最高的可靠性
request.required.acks = 0
#
消息发送的最长等待时间
request.timeout.ms = 10000
# socket
的缓存大小
send.buffer.bytes=100*1024
# key
的序列化方式,若是没有设置,同
serializer.class
key.serializer.class
#
分区的策略,默认是取模
partitioner.class=kafka.producer.DefaultPartitioner
#
消息的压缩模式,默认是
none
,可以有
gzip
和
snappy
compression.codec = none
#
可以针对默写特定的
topic
进行压缩
compressed.topics=null
#
消息发送失败后的重试次数
message.send.max.retries = 3
#
每次失败后的间隔时间
retry.backoff.ms = 100
#
生产者定时更新
topic
元信息的时间间隔 ,若是设置为
0
,那么会在每个消息发送后都去更新数据
topic.metadata.refresh.interval.ms = 600 * 1000
#
用户随意指定,但是不能重复,主要用于跟踪记录消息
client.id=""
#
异步模式下缓冲数据的最大时间。例如设置为
100
则会集合
100ms
内的消息后发送,这样会提高吞吐量,但是会增加消息发送的延时
queue.buffering.max.ms = 5000
#
异步模式下缓冲的最大消息数,同上
queue.buffering.max.messages = 10000
#
异步模式下,消息进入队列的等待时间。若是设置为
0
,则消息不等待,如果进入不了队列,则直接被抛弃
queue.enqueue.timeout.ms = -1
#
异步模式下,每次发送的消息数,当
queue.buffering.max.messages
或
queue.buffering.max.ms
满足条件之一时
producer
会触发发送。
batch.num.messages=200