知识库-kafka服务端基本参数配置

kafka服务端有很多参数配置,涉及使用,调优的各个方面,虽然这些参数大多数情况下不需要更改,但了解这些参数,在做kafka调优的时候很重要。

zookeeper.connect

该参数指明broker要连接zookeeper集群的服务地址和端口号,没有默认值,且为必填参数。kafka默认连接到zookeeper的根路径下,可以通过chroot改变默认路径,使用chroot参数,可以使得一套zk部署多个kafka集群。

listeners

该参数指明broker监听客户端连接地址列表,即客户端要连接broker的入口地址。配置格式为:

protocoll://hostname1:port1,protocoll://hostname2:port2

其中protocoll代表协议类型,kafka当前支持的协议类型有PLAINTEXT,SSL,SASL,SASL_SSL等。

与此参数关联的advertised.listeners,作用和listeners类似,默认值为null。不advertised.listeners

主要用于IaaS(Infrastructure as a service)环境,比如公有云上的机器通常配备多块网卡,既包含私有网网卡,又包含共有网网卡,对于这种情况,可以设置advertised.listeners参数绑定公网ip供外部客户使用,而listeners来绑定私网IP地址供broker间通讯使用。

broker.id

该参数用来指定kafka集群中broker的唯一标识,默认值为-1.如果没有设置,那么kafka会自动生成一个。这个参数还和meta.properties文件及服务端参数broker.id.generation.enable和reserved.broker.max.id有关。

log.dir和log.dirs

kafka把所有的消息都保存在磁盘上,而这两个参数用来配置kafka日志文件存放的根目录。一般情况下,log.dir用来配置单个根目录,而log.dirs用来配置多个根目录(以逗号分隔),但是kafka并没有对此做强制性限制,也就是说,log.dir和log.dirs都可以用来配置单个目录或者多个目录。log.dirs的优先级比log.dir的高。默认情况下只配置了log.dir参数,其默认值为/tmp/kafka-logs

message.max.bytes

该参数用来指定broker所能接收消息的最大值,默认值为1000012(B),约等于976.7KB。如果producer发送的消息大于这个参数所设置的值,就会报出RecordTooLargeException的异常。如果需要修改这个参数,还需要考虑max.request.size(客户端参数),max.message.bytes(topic端参数)的影响。

## 基础配置
    ## broker id列表,多个以","分隔
    brokerids=0,1,2
    ## broker监听的csv列表,格式是[协议]://[主机名]:[端口],[协议]://[主机名]:[端口]。该参数用于客户端连接broker使用。
    listeners=PLAINTEXT://{PODIP}:9092
    ## zookeeper的连接串,必须指定,多个以','分隔,如果使用一套zookeeper管理多个kafka集群,则zookeeper的chroot必须指定。
    zookeeper.connect=zookeeper-kutp-test2:12181
    ## 是否允许在服务器上自动创建topic
    auto.create.topics.enable=true
    ## 是否允许删除topic。如果关闭此配置,通过管理工具删除topic将不再生效
    delete.topic.enable=true
    ## 是否允许leader平衡。后台线程会定期检查并触发leader平衡。
    auto.leader.rebalance.enable=false
    ## 每个topic的默认分区大小
    num.partitions=3
    ## 每个topic的默认副本数
    default.replication.factor=2
    ## 系统topic的副本数
    offsets.topic.replication.factor=2
    ## 副本同步线程数
    num.replica.fetchers=2
    min.insync.replicas=1
    ## 数据保留配置
    ## 数据保存目录
    log.dir=/var/lib/kafka
    ## 数据保留大小阈值,单位:b
    log.retention.bytes=10737418240
    ## 数据保留时间阈值,单位:h
    log.retention.hours=168
    ## 每个segment的大小
    log.segment.bytes=1073741824
    ## 根据资源修改配置
    ## 该参数控制broker实际处理网络请求的线程数
    num.io.threads=8
    ## 用于处理各种后台任务的线程数量
    background.threads=8
    ## 控制broker在后台处理来自网络请求的线程数,该参数只是转发请求(转发给其他线程处理),并不会对其进行处理
    num.network.threads=4
    ## 每个topic最大消息大小
    message.max.bytes=10485760
    ## socket请求的最大大小
    socket.request.max.bytes=104857600
    ## 其他配置
    ## 是否允许服务器自动生成broker.id。
    broker.id.generation.enable=true
    ## 可以用于broker.id的最大数量
    reserved.broker.max.id=1000
    ## 压缩方式。 uncompressed, snappy, lz4, gzip, producer
    compression.type=producer
    ## 每个IP允许的最大连接数
    max.connections.per.ip=10000
    ## 系统topic的partation大小
    offsets.topic.num.partitions=50
    offsets.retention.minutes=20160
    ## zookeeper session超时时间
    zookeeper.connection.timeout.ms=240000
    ## consumer注册允许的最大会话超时时间
    group.max.session.timeout.ms=300000
    ## consumer注册允许的最小会话超时时间
    group.min.session.timeout.ms=6000
    ## 是否启用不在ISR集合中的副本作为leader
    unclean.leader.election.enable=false
    transaction.state.log.replication.factor=3
    transaction.state.log.min.isr=2
    ## 数据恢复线程数
    num.recovery.threads.per.data.dir=4

参考文献:

Kafka 中文文档 - ApacheCN

《深入理解Kafka核心设计与实践理论》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ctg-kafka是基于Apache Kafka开发的一个开源的消息队列系统。它的基本原理是通过分布式消息发布和订阅机制来实现高吞吐量、可扩展性和容错性。 在ctg-kafka中,消息被发布到一个或多个主题(topic)中,并由一个或多个消费者进行订阅。生产者(producer)负责将消息发布到指定的主题,而消费者(consumer)则从主题中订阅并处理消息。消息以字节流的形式进行传输,并以分区(partition)的方式进行组织和存储。 每个分区都有一个唯一的标识符,并且可以在多个节点上进行复制以提供容错性和可用性。分区内的消息以顺序的方式进行存储,并且可以根据消息的偏移量(offset)进行读取和检索。 ctg-kafka还采用了基于日志的存储模型,即将所有的消息都追加到日志末尾,而不是直接修改已有的消息。这种设计可以提高写入的效率,并且保证了消息的顺序性和持久性。 另外,ctg-kafka还提供了一种称为消费者组(consumer group)的机制。多个消费者可以组成一个消费者组,并且每个分区只能由一个消费者组中的一个消费者进行消费。这样可以实现负载均衡和水平扩展,同时保证每个消息只会被消费一次。 总之,ctg-kafka通过分布式的消息队列机制和基于日志的存储模型,实现了高吞吐量、可扩展性和容错性。它在大规模数据处理和实时流处理等场景中得到了广泛的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值