Kafka 参数配置

Kafka配置

broker端配置

broker的唯一标识符

# 每个Kafka broker都有一个唯一的标识来标识,这个唯一的标识符就是broker.id,它的默认值是0.
# 这个值在Kafka集群中是唯一的,可以设定为任意正整数.
broker.id=0

broker server服务端口

# broker server服务端口(默认9092) 如果使用1024以下端口,需要使用root权限启动Kafka.
port=9092

Zookeeper集群的地址

# Zookeeper集群的地址,可以是多个,多个之间用逗号分隔(默认localhost:2181)
# hostname1:port1,hostname2:port2
zookeeper.connect=localhost:2181

存储日志文件的目录

# Kafka数据存储日志文件的以逗号分隔的目录列表
log.dirs=D:\\kafka_2.13-2.6.0\\data\\kafka-logs

启动时日志恢复和关闭时刷新的线程数

# 每个数据目录用于启动时日志恢复和关闭时刷新的线程数
# 对于以下三种情况,Kafka会使用可配置的线程池来处理日志片段.
# ① 服务器正常启动,用于打开每个分区的日志片段;
# ② 服务器崩溃后重启,用于检查和截断每个分区的日志片段;
# ③ 服务器正常关闭,用于关闭日志片段;
# 默认情况下,每个日志目录只用一个线程,因为这些线程只是在服务器启动和关闭时会用到,所以完全可以设置大量
# 的线程来达到并行操作的目的.对于包含大量分区的服务器来说,一旦发生崩溃,在进行恢复时使用并行操作可能会
# 省下数小时的时间.设置此参数时需要注意,所配置的数字对应的是log.dirs指定的单个日志目录.也就是说,如果
# 线程数为3,并且log.dir指定了3个路径,那么总共需要9个线程.
num.recovery.threads.per.data.dir=1

自动创建Topic

# 默认情况下,Kafka会使用三种方式来自动创建主题:
# ① 当一个生产者开始往主体写入消息时
# ② 当一个消费者开始从主体读取消息时
# ③ 当任意一个客户端想主体发送元数据请求时
# auto.create.topics.enable 默认为true,建议设置成false,既不允许自动创建Topic.
auto.create.topics.enable=false

主题默认配置

新创建的主题包含多少个分区

# 指定了新创建的主题需要包含多少个分区,如果启用了主题的自动创建功能(默认启用),主题分区的个数就是该参数指定的值.
# 该参数的默认值是1.我们可以增加主题的分区个数,但不能减少分区的个数.
num.partitions=1

自动创建topic时默认的副本个数

# 如果一个副本失效了,另一个还可以继续提供服务(默认值为1).这个参数在启用了主题自动创建功能后有效.
default.replication.factor=1

日志删除的时间阈值

# 日志删除的时间阈值(以毫秒为单位)如果未设置将使用log.retention.minutes的值.
# log.retention.minutes的值未设置,将使用log.retention.hours的值(默认值为168小时,也就是一周).
log.retention.ms=16800

日志删除的大小阈值

# 通过该值判断消息是否过期,作用在每一个分区上.
# 例如,一个包含8个分区的主题,并且log.retention.bytes 被设置为1GB,则这个主题最多可以保留8GB的数据.
# 所以当主题的分区个数增加时,整个主题可以保留的数据也随之增加.
log.retention.bytes=134217728

单个日志段文件最大大小

# 当消息到达broker时,它们被追加到分区的当前日志片段上,当日志片段大小到达log.segment.bytes指定上限(默认为1GB)时,当前日志片段
# 就会被关闭,一个新的日志片段被打开.如果一个日志片段被关闭,就开始等待过期.这个参数值越小,就会越频繁的关闭和分配新文件,从而降
# 低磁盘写入的整体效率.
log.segment.bytes=1073741824

限制单个消息的大小

# broker通过设置message.max.bytes参数来限制单个消息的大小,默认是1000012,如果生产者尝试发送的消息超过这个大小,不仅消息不会被
# 接受,还会收到broker返回的错误消息.跟其他与字节相关的配置参数一样,该参数至的是压缩后的消息大小,也就是说,只要压缩后的消息小于
# mesage.max.bytes,那么消息的实际大小可以大于这个值
# 这个值对性能有显著的影响.值越大,负责处理网络连接和请求的线程处理请求的时间越长,它还会增加磁盘写入块的大小,从而影响IO吞吐量
mesage.max.bytes=1000012

主题消息被保存的时长

# 默认是7天,即该主题只能保存7天的消息,一旦设置了这个值,它会覆盖掉 broker 端的全局参数值
retention.ms=604800000

为主题预留多大的磁盘空间

# 规定了要为该Topic预留多大的磁盘空间.和全局参数作用相似,通常在多租户的Kafka集群中使用,当值为-1时,表示可以无限使用磁盘空间.
# 由于此限制是在分区级别强制执行的,因此将其乘以分区数,计算出Topic保留值,以字节为单位.
retention.bytes=-1

生产者必选属性

连接Kafka集群的端口配置

# 不论这个参数配置了哪些服务器来初始化连接,客户端都会均衡的与集群中的所有服务器建立连接.配置服务器仅用于初始化连接,以便于找到
# 集群中的所有服务器.配置格式:host1:port1,host2:port2,... 因此这个配置不需要包含集群中的所有服务器.
# 但建议还是配置至少2台服务器,避免单节点风险,一旦其中一个宕机,生产者仍然可以连接到集群上.
bootstrap.servers=localhost:9092

key的序列化

# broker需要接收到序列化之后的key/value值,所以生产者发送的消息需要经过序列化之后传递给Kafka Broker
# 生产者需要知道采用何种方式把Java对象转换成字节数组.key.serializer 必须被设置为一个实现了
# org.apache.kafka.common.serialization.Serializer 接口的类,生产者会使用这个类把键对象序列化为字节数组.
key-serializer: org.apache.kafka.common.serialization.StringSerializer

value的序列化

# 与key一样,value.serializer指定的类会将值序列化
spring:
  kafka:
    bootstrap-servers: localhost:9092 # 指定kafka代理地址,可以多个
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer

确认需要收到的反馈信息的数量

# acks=0,producer不会等待服务器反馈.该消息会被like添加到socket buffer中并认为已经发送完成.
# 服务器无法保证是否收到请求,并且参数retries也不会生效(因客户端无法获取失败信息)每个记录返回的offset总是被设置为-1
# acks=1,leader节点会将记录写入本地日志,并且在所有follower节点反馈之前就先确认成功.
# 如果leader节点在接收记录之后,并且在follower节点复制数据完成之前产生错误,则这条记录丢失.
# acks=all,leader节点会等待所有同步的副本确认之后再确认这条记录是否发送完成.
# 只要至少有一个同步副本存在,记录就不会丢失.这种方式是对请求传递的最有效保证.acks=-1与acks=all是等效的.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值