Apache Kafka的主要配置文件包括server.properties(用于broker配置)、producer.properties(用于生产者配置)和consumer.properties(用于消费者配置)。以下是一些基本的配置参数及其说明:
Kafka Broker配置参数:
broker.id:每个broker在集群中的唯一标识,要求是正数。log.dirs:Kafka数据的存放地址,可以是多个,多个使用逗号分隔即可。port:server接受客户端连接的端口,默认6667。zookeeper.connect:zookeeper集群连接地址,格式如:zookeeper.connect server01:2181,server02:2181,server03:2181。message.max.bytes:server可以接受的消息最大尺寸,默认1000000。num.network.threads:server用来处理网络请求的线程数,默认3。num.io.threads:server用来处理请求的I/O线程数,这个线程数至少等于磁盘的个数。background.threads:用于后台处理的线程数,例如文件的删除。queued.max.requests:在网络线程停止读取新请求之前,可以排队等待I/O线程处理的最大请求个数。host.name:broker的hostname,如果hostname已经设置的话,broker将只会绑定到这个地址上;如果没有设置,它将绑定到所有接口,并发布一份到ZK。advertised.host.name:如果设置,则就作为broker的hostname发往producer、consumers以及其他brokers。advertised.port:此端口将给与producers、consumers以及其他brokers,它会在建立连接时用到;它仅在实际端口和server需要绑定的端口不一样时才需要设置。socket.send.buffer.bytes:SO_SNDBUFF缓存大小,server进行socket连接所用,默认100*1024。socket.receive.buffer.bytes:SO_RCVBUFF缓存大小,server进行socket连接时所用,默认100 * 1024。socket.request.max.bytes:server允许的最大请求尺寸;这将避免server溢出,它应该小于Java heap size。num.partitions:如果创建topic时没有给出划分partitions个数,这个数字将是topic下partitions数目的默认数值。log.segment.bytes:topic partition的日志存放在某个目录下诸多文件中,这些文件将partition的日志切分成一段一段的;这个属性就是每个文件的最大尺寸。log.roll.hours:即使文件没有到达log.segment.bytes,只要文件创建时间到达此属性,就会创建新文件。log.cleanup.policy:log清除策略,可选值为delete和compact。log.retention.minutes和log.retention.hours:每个日志文件删除之前保存的时间。log.retention.bytes:每个topic下每个partition保存数据的总量。log.cleaner.enable:当这个属性设置为false时,一旦日志的保存时间或者大小达到上限时,就会被删除;如果设置为true,则当保存属性达到上限时,就会进行log compaction。log.cleaner.threads:进行日志压缩的线程数。log.cleaner.io.max.bytes.per.second:进行log compaction时,log cleaner可以拥有的最大I/O数目。log.cleaner.io.buffer.size:log cleaner清除过程中针对日志进行索引化以及精简化所用到的缓存大小。log.cleaner.io.buffer.load.factor:进行log cleaning时所需要的I/O chunk尺寸。log.cleaner.backoff.ms:进行日志是否清理检查的时间间隔。log.cleaner.min.cleanable.ratio:这项配置控制log compactor试图清理日志的频率。log.cleaner.delete.retention.ms:保存时间;保存压缩日志的最长时间;也是客户端消费消息的最长时间。Kafka Producer配置参数:
bootstrap.servers:指定Kafka集群的地址,格式为host:port。key.serializer 和 value.serializer:分别设置消息键和值的序列化方式。acks:指定生产者发送消息后需要等待的确认数。retries:指定生产者在发生错误时的重试次数。batch.size:指定生产者在发送批量消息时的批次大小。linger.ms:指定生产者在发送批量消息时的等待时间。compression.type:指定消息压缩类型。max.in.flight.requests.per.connection:每个连接在未接收到上一个请求的响应前可以发送的请求的个数。buffer.memory:生产者客户端中用于缓存消息的缓存区大小。compression.type:指定消息压缩类型。Kafka Consumer配置参数:
bootstrap.servers:与Producer相同,指定Kafka broker地址。group.id:消费者组的唯一标识符。key.deserializer 和 value.deserializer:分别设置消息键和值的反序列化方式。enable.auto.commit:指定消费者是否自动提交偏移量。auto.offset.reset:指定消费者在启动时如何处理偏移量。max.poll.records:指定每次拉取的最大记录数。fetch.max.bytes:指定每次拉取的最大字节数。session.timeout.ms:消费者与Kafka集群的超时时间。请注意,以上信息仅供参考,具体配置参数可能会根据Kafka版本和实际需求有所不同。在实际配置时,建议参考官方文档或咨询专业人士以确保配置的正确性和系统的稳定性。