kafka 配置

1.broker 服务端配置

配置 描述 优先级
broker.id 1 当前机器在集群中的唯一标识,和zookeeper的myid性质一样
delete.topic.enable false 是否允许删除topic,此动作比较危险,默认为false
listeners PLAINTEXT://ip:9097

根据最新官网配置介绍为准,host.name和port属性已经过时

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
自动提交偏移量的间隔时间



猜你喜欢

转载自www.cnblogs.com/cowboys/p/9259346.html