broker配置
broker配置文件为config/server.properties文件,配置内容主要分为以下几个模块,其他详细配置参见-Kafka用户手册:
Server Basics
Kafka server 基本配置
- broker.id:是kafka集群server的唯一标识。
- delete.topic.enable:是否开启topic删除功能,可根据具体需求决定。开发测试环境推荐开启,生产环境推荐关闭。
1 | # The id of the broker. This must be set to a unique integer for each broker. |
Socket Server Settings
Kafka 网络相关配置
- listeners:由用户配置协议,ip,port。
- 其他配置项,开发测试环境可使用默认配置;生产环境推荐如下配置。
1 | # The address the socket server listens on. It will get the value returned from |
Log Basics
Kafka log 基本配置
- log.dirs:log文件存储路径
- num.partitions:topic默认的partitions数量。在创建topic时,一般会指定partitions数量,因此该配置项在上述条件下基本无用。为了防止在创建topic时,未指定partitions数量,因此推荐使用配置为3。
- 其他配置推荐使用默认配置
1 | # A comma seperated list of directories under which to store log files |
Internal Topic Settings
Kafka 内部topic配置
- 开发测试环境推荐使用默认配置,均为1
- 生产环境推荐如下配置,replication数量为3,isr数量为2。
1 | # The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state" |
Log Flush Policy
Kafka log 刷盘、落盘机制
- log.flush.interval.messages:日志落盘消息条数间隔,即每接收到一定条数消息,即进行log落盘。
- log.flush.interval.ms:日志落盘时间间隔,单位ms,即每隔一定时间,即进行log落盘。
- 强烈推荐开发、测试、生产环境均采用默认值,即不配置该配置,交由操作系统自行决定何时落盘,以提升性能。
- 若对消息高可靠性要求较高的应用系统,可针对topic级别的配置,配置该属性。
1 | # Messages are immediately written to the filesystem but by default we only fsync() to sync |
Log Retention Policy
Kafka log保留策略配置
- log.retention.hours:日志保留时间,单位小时。和log.retention.minutes两个配置只需配置一项。
- log.retention.minutes:日志保留时间,单位分钟。和log.retention.hours两个配置只需配置一项。
- log.retention.bytes:日志保留大小。一topic的一partition下的所有日志大小总和达到该值,即进行日志清除任务。当日志保留时间或日志保留大小,任一条件满足即进行日志清除任务。
- log.segment.bytes:日志分段大小。即一topic的一partition下的所有日志会进行分段,达到该大小,即进行日志分段,滚动出新的日志文件。
- log.retention.check.interval.ms:日志保留策略定期检查时间间隔,单位ms。
- log.segment.delete.delay.ms:日志分段删除延迟时间间隔,单位ms。
- 日志保留大小,保留时间以及日志分段大小可根据具体服务器磁盘空间大小,业务场景自行决定。
1 | # The following configurations control the disposal of log segments. The policy can |
Zookeeper
Kafka zookeeper 配置
- zookeeper.connect:zk连接地址
- zookeeper.connection.timeout.ms:zk连接超时时间,默认6s。可根据具体的应用场景进行更改,特可采用如下配置。
1 | # Zookeeper connection string (see zookeeper docs for details). |
Group Coordinator Settings
Kafka consumer group 协调配置
- 生产环境推荐配置3000
- 开发测试环境推荐配置0
1 | # The following configuration specifies the time, in milliseconds, that the GroupCoordinator will delay the initial consumer rebalance. |
producer配置
- ProducerConfig.ACKS_CONFIG:producer发送消息,server端确认机制。可配置值为0,1,all。0时,producer只需发送,不需要server端确认接收,适合对消息可靠性不敏感的应用系统;1时,producer发送,需要server端该topic的leader确认接收,适合对消息可靠性相对敏感的应用系统;all时,producer发送,需要server端该topic的全部结点均确认接收,适合对消息可靠性特别敏感的应用系统;业务的应用系统可根据具体的应用场景自行决定采用何种策略。
- 其他配置推荐使用默认值。
代码示例详情参见Kafka 快速开始文档。
1 | props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "172.21.195.89:9092,172.21.195.90:9092,172.21.195.91:9092"); |
consumer配置
- ConsumerConfig.GRO
- _ID_CONFIG:配置consumer的group id。由应用系统进行各自的配置。
- ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG:配置consumer消费消息自动提交消费记录。也可改为手动提交,由应用系统根据需求决定。
- 其他配置推荐使用默认值。
1 | props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "172.21.195.89:9092,172.21.195.90:9092,172.21.195.91:9092"); |