1.broker 服务端配置
配置 | 值 | 描述 | 优先级 |
---|---|---|---|
broker.id | 1 | 当前机器在集群中的唯一标识,和zookeeper的myid性质一样 |
高 |
delete.topic.enable | false | 是否允许删除topic,此动作比较危险,默认为false | 高 |
listeners | PLAINTEXT://ip:9097 |
|
高 |
advertised.listeners | PLAINTEXT://ip:9097 | 最好用真实ip,用host容易出问题 |
高 |
num.network.threads | 3 | borker进行网络处理的线程数 默认3 |
中 |
num.io.threads | 8 | borker进行I/O处理的线程数 默认8 |
中 |
socket.send.buffer.bytes | 102400 | 发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能 |
中 |
socket.receive.buffer.bytes | 102400 | kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘 |
中 |
socket.request.max.bytes | 104857600 | 这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小 |
中 |
log.dirs | /home/txc/kafka1/kafkalogs | kafka数据日志文件保存路径 | 高 |
num.partitions | 1 | 新建的topic,默认创建的分区数 ,一般是多个 | 高 |
offsets.topic.replication.factor | 1 | 副本因子 如果是集群,这个值必须大于1,小于或等于broker的数量,如果集群环境配置为1,当客户端选择的协调节点broker宕机,客户端消费者将不会自动选举,消费者dead | 高 |
default.replication.factor | 1 | 新建的topic,默认的副本集个数 | 高 |
zookeeper.connect | 10.22.0.13:2182,10.22.0.14:2182,10.22.0.15:2182 | kafka连接的zk地址 | 高 |
group.initial.rebalance.delay.ms | 0 | 客户端消费者重新选举的延时时间,默认0 | 高 |
2.生产者配置
配置 | 值 | 描述 | 优先级 |
---|---|---|---|
bootstrap.servers | 10.22.0.13:9092,10.22.0.14:9092,10.22.0.15:9092 | kafka集群地址 | 高 |
key.serializer | org.apache.kafka.common.serialization.StringSerializer |
key的序列化类(实现序列化接口)
|
高 |
value.serializer | org.apache.kafka.common.serialization.StringSerializer | value的序列化类(实现序列化接口) | 高 |
acks | all |
生产者需要leader确认请求完成之前接收的应答数。此配置控制了发送消息的耐用性,支持以下配置:
acks=0 如果设置为0,那么生产者将不等待任何消息确认。消息将立刻天际到socket缓冲区并考虑发送。在这种情况下不能保障消息被服务器接收到。并且重试机制不会生效(因为客户端不知道故障了没有)。每个消息返回的offset始终设置为-1。 acks=1,这意味着leader写入消息到本地日志就立即响应,而不等待所有follower应答。在这种情况下,如果响应消息之后但follower还未复制之前leader立即故障,那么消息将会丢失。 acks=all 这意味着leader将等待所有副本同步后应答消息。此配置保障消息不会丢失这是最强壮的可用性保障。等价于acks=-1。 |
高 |
retries | 0 |
设置一个比零大的值,客户端如果发送失败则会重新发送。注意,这个重试功能和客户端在接到错误之后重新发送没什么不同。如果max.in.flight.requests.per.connection没有设置为1,有可能改变消息发送的顺序,因为如果2个批次发送到一个分区中,并第一个失败了并重试,但是第二个成功了,那么第二个批次将超过第一个。
|
高 |
max.block.ms | 60000 |
该配置控制 KafkaProducer.send() 和 KafkaProducer.partitionsFor() 将阻塞多长时间。此外这些方法被阻止,也可能是因为缓冲区已满或元数据不可用。在用户提供的序列化程序或分区器中的锁定不会计入此超时。
|
高 |
3.消费者配置
配置 | 值 | 描述 | 优先级 |
---|---|---|---|
bootstrap.servers | 10.22.0.13:9092,10.22.0.14:9092,10.22.0.15:9092 | kafka集群地址 | 高 |
group.id | txc | 消费者组名,同一个消费者组里只有一个消费者能接收到消息 | 高 |
key.deserializer | org.apache.kafka.common.serialization.StringDeserializer |
key的反序列化类(实现序列化接口)
|
高 |
value.deserializer | org.apache.kafka.common.serialization.StringDeserializer | value的反序列化类(实现序列化接口) | 高 |
enable.auto.commit | false |
如果为true,消费者的offset将在后台周期性的提交,有可能导致消息消费不到,最好配置为false,然后在代码中手动提交offset
|
高 |
auto.commit.interval.ms | 1000 |
自动提交偏移量的间隔时间
|
高 |