在 Apache Kafka 集群中,server.properties
文件是 Broker 级别的配置文件,包含了 Broker 的各种核心配置参数。以下是一些重要的 server.properties
参数示例及说明:
通用配置
broker.id
:每个 Kafka Broker 必须拥有一个唯一的标识符。listeners
:定义 Broker 接受连接的地址和协议,例如"PLAINTEXT://:9092"
表示监听所有网络接口的 9092 端口。log.dirs
:Kafka 数据持久化存储目录,可以指定多个目录以实现数据在不同磁盘间的分布。zookeeper.connect
:(旧版 Kafka)指向 ZooKeeper 集群的连接字符串,例如"localhost:2181"
或"zookeeper1:2181,zookeeper2:2181,zookeeper3:2181"
。
网络与性能配置
advertised.listeners
:对外公开的地址,用于消费者和生产者连接。如果服务器有内外网地址差异,需在此设置外部可访问的地址。socket.send.buffer.bytes
和socket.receive.buffer.bytes
:Socket 发送和接收缓冲区大小,用于调节网络性能。num.network.threads
和num.io.threads
:网络线程和I/O线程数量,分别用于处理网络请求和磁盘读写操作。queued.max.requests
:网络线程队列中最大待处理的请求数量。
日志和数据管理
log.retention.hours
或log.retention.bytes
:日志保留时间(小时)或日志文件大小上限,超过则触发日志清除。log.segment.bytes
:每个日志段(Segment)的最大大小,达到后会滚动到新的日志段。log.flush.interval.messages
和log.flush.interval.ms
:刷盘策略,可设置每多少条消息或毫秒后强制刷盘。
副本和一致性
default.replication.factor
:主题默认的复制因子,表示每个分区有多少个副本。min.insync.replicas
:至少要有多少个副本同步,才会认为写入成功(对于acks=all时)。unclean.leader.election.enable
:是否允许在ISR集合之外的副本成为领导者(在大多数情况下应禁用)。
安全与认证
ssl.enabled
:是否启用 SSL 加密通信。ssl.keystore.location
和ssl.truststore.location
:Keystore 和 Truststore 文件的位置。sasl.mechanism
和security.inter.broker.protocol
:配置 SASL 认证机制和 Broker 间通信协议安全性。
其他高级配置
controller.socket.timeout.ms
:控制器连接超时时间。offsets.topic.replication.factor
:Offsets 主题的复制因子,用于存储消费者偏移量。delete.topic.enable
:是否允许通过AdminClient删除主题。
根据实际的集群规模、性能需求、安全性要求等因素,对这些配置参数进行适当的调整和优化。在进行配置变更时,务必确保符合Kafka的最佳实践,并且在集群重启后,新的配置才能生效。