#broker信息配置
broker.id:broker的id broker唯一标志
#下面三个配置是主机Ip和端口,broker注册会把这些信息到zk,后续版本 只用listener,host和port已经废弃
host.name:主机名 或者Ip
port:端口
listeners: 主机+端口,格式:security_protocol://host_name:port
如果没有安全协议,则用PLAINTEXT代替,例如PLAINTEXT://172.17.0.17:9092
#有时候客户端通过外网访问kafka集群,但是上面一般填的是内网地址,供内部调用,填写下面三个配置,客户端会通过下面的配置连接kakfa集群,格式类似
advertised.listeners
advertised.port
advertised.host.name:
broker.rack:指定机架名字,分配副本尽可能地为副本挑选不同机架的broker
broker.id.generation.enable:自动分配Brokerid,reserved.broker.max.id 需要配置
reserved.broker.max.id:最大max brokerid
#topic属性
auto.create.topics.enable:是否自动生成topic
delete.topic.enable:关闭了,则不能通过工具删除topic
compression.type:消息压缩类型,设为producer意思是producer来设置压缩类型
num.partitions:默认topic 的partition数量
default.replication.factor:默认副本数
#rebalance配置
auto.leader.rebalance.enable:开启自动balance,开启后台线程检查,当partition的leader分配不均匀时发生reblance,默认打开
leader.imbalance.check.interval.seconds:检查balance的间隔
leader.imbalance.per.broker.percentage:判定不balance的阈值
#消息文件配置
log.dir:消息保存目录
log.dirs:消息保存目录
log.flush.interval.messages:异步刷盘消息数间隔
log.flush.interval.ms:异步刷盘消息时间间隔
log.flush.offset.checkpoint.interval.ms:刷checkpoint到磁盘的时间间隔
log.flush.scheduler.interval.ms:刷checkpoint到磁盘的时间间隔
log.retention.bytes:默认日志保留最大字节数
log.retention.hours:默认日志保留时间
log.retention.minutes:默认日志保留时间
log.retention.ms:默认日志保留时间
log.roll.hours:生成新的segment的时间间隔
log.roll.jitter.hours:生成新的segment的时间间隔
log.roll.jitter.ms:生成新的segment的时间间隔
log.roll.ms:生成新的segment的时间间隔
log.segment.bytes:partition里一个segment的大小(一个partition分为很多个segment)
log.segment.delete.delay.ms:日志删除时间。当删除的条件满足以后,日志将被“删除”,但是这里的删除其实只是将该日志进行了“delete”标注,文件只是无法被索引到了而已。但是文件本身,仍然是存在的,只有当过了log.segment.delete.delay.ms 这个时间以后,文件才会被真正的从文件系统中删除。
log.index.interval.bytes:segment稀疏索引的间隔
log.index.size.max.bytes:index文件最大大小
log.preallocate:预分配文件空间
log.retention.check.interval.ms:检查日志是否删除的时间间隔
#日志清理(compact)配置
log.cleanup.policy:"delete" or "compact",2个弄在一起容易混淆,默认delete只执行日志清理(过期或者大小太大),设置为compact。delete操作还会执行,compact是会开启清理线程,清理消息(key相同的消息,保存最新的key)
log.cleaner.backoff.ms:清理日志时间间隔
log.cleaner.dedupe.buffer.size:清理日志时允许的内存空间
log.cleaner.delete.retention.ms:压缩后,待删除的日志保留时间
log.cleaner.enable:是否开启日志清理
log.cleaner.io.buffer.load.factor:
log.cleaner.io.buffer.size:IO缓存区
log.cleaner.io.max.bytes.per.second:IO速度
log.cleaner.min.cleanable.ratio:
log.cleaner.threads:日志清理线程数
#消息设置
log.message.timestamp.difference.max.ms:消息时间戳和接收到时间差别太大抛弃
log.message.timestamp.type:`CreateTime` or `LogAppendTime`
message.max.bytes:每条消息最大长度
#服务性能相关
num.io.threads:执行文件IO的线程 默认8个
num.network.threads:处理网络的线程 默认3个
queued.max.requests:队列最大缓冲请求
socket.receive.buffer.bytes:socket接受buffer大小
socket.request.max.bytes:请求最大字节数
socket.send.buffer.bytes:socket发送buffer大小
request.timeout.ms:producer收到确认ack超时时间,由broker同步该配置给producer
quota.consumer.default:消费者配额限制,每秒字节数
quota.producer.default:生产者配额限制,每秒字节数
connections.max.idle.ms:连接最大闲置时间
controlled.shutdown.enable:能不能关闭,默认打开
controlled.shutdown.max.retries:关闭重试次数
controlled.shutdown.retry.backoff.ms:
max.connections.per.ip:对一个ip最大连接数
max.connections.per.ip.overrides:
background.threads:执行特定任务的后台线程数量(kafka有个scheduler线程池,定期执行特定任务,比如清理日志,刷盘,保存checkpoint)
controller.socket.timeout.ms:controller对其他broker通信超时时间
num.recovery.threads.per.data.dir:每个数据目录用于启动回复和关闭刷盘的线程数量
#zk设置
zookeeper.connection.timeout.ms:zk连接超时时间
zookeeper.session.timeout.ms:zk session超时时间
zookeeper.set.acl
zookeeper.sync.time.ms
#副本
min.insync.replicas:最小需要同步消息ISR的数量。request.required.acks参数设置为-1时,此参数才生效,
num.replica.fetchers:副本fetch线程的数量
offsets.commit.required.acks:提交commit的ack值(跟生产者的acks类似,commit消息也作为topic存下。疑问:ack=-1,消费者的表现)
replica.fetch.max.bytes:每次副本fetch最大字节数
replica.fetch.min.bytes:最小字节数
replica.fetch.wait.max.ms:最大等待时间(leader计时?还是follower计时)
replica.high.watermark.checkpoint.interval.ms:watermark保存到磁盘的频率
replica.lag.time.max.ms:超过该值没收到副本的请求,移出ISR
replica.socket.receive.buffer.bytes
replica.socket.timeout.ms:最大超时时间,需要设得比replica.fetch.wait.max.ms大
unclean.leader.election.enable:是否从非ISR选举leader,true可能会导致数据丢失
replica.fetch.backoff.ms:fetch错误发生后的睡眠时间
#offset管理
offsets.commit.timeout.ms:提交commit的超时
offsets.load.buffer.size:将commit offset的消息读进内存cache的大小
offsets.retention.check.interval.ms:更新陈旧Offset的频率
offsets.retention.minutes:commit offset保留时间,默认1440
offsets.topic.num.partitions:默认50个partition
offsets.topic.replication.factor:副本数
offsets.topic.segment.bytes:一个segment的大小
offset.metadata.max.bytes:客户端保留offset元信息的最大空间大小
针对comsumer,最大最小超时时间
group.max.session.timeout.ms
group.min.session.timeout.ms
fetch.purgatory.purge.interval.requests,
producer.purgatory.purge.interval.requests
principal.builder.class