Kafka消费者在CentOS上的配置注意事项
sudo yum install java-1.8.0-openjdk-devel -y命令安装并验证(java -version)。firewall-cmd --zone=public --add-port=9092/tcp --permanent添加端口,firewall-cmd --reload生效。bootstrap.servers(Broker地址列表,如localhost:9092)、group.id(消费者组ID,同一组内消费者协同消费)、key.deserializer/value.deserializer(Key/Value反序列化类,如StringDeserializer)。session.timeout.ms(会话超时时间,默认45秒,需大于heartbeat.interval.ms的3倍)、heartbeat.interval.ms(心跳间隔,默认3秒,建议设为session.timeout.ms的1/3)、max.poll.interval.ms(两次poll()的最大间隔,默认5分钟,处理耗时任务需调大,避免触发再平衡)。enable.auto.commit(是否自动提交偏移量,默认true,建议设为false,改为手动提交以保证数据一致性)、auto.offset.reset(无偏移量时的策略,默认latest,建议根据业务需求设为earliest(从最早开始)或none(无偏移量抛异常))。fetch.min.bytes(Broker返回的最小数据量,默认1字节,适当增大可减少网络请求)、fetch.max.wait.ms(等待满足fetch.min.bytes的最长时间,默认500毫秒)、max.poll.records(单次poll()返回的最大消息数,默认500,处理慢时需减小,避免超时)。StickyAssignor分区分配策略(partition.assignment.strategy),减少再平衡时的分区重新分配,提升消费连续性。max.poll.records(如调整为1000)并结合批量处理逻辑(如将拉取的消息存入队列,由工作线程批量处理),减少poll()循环次数,提升吞吐量。fetch.max.bytes(如调整为50MB),增加单次拉取的数据量;优化JVM堆内存(如设置-Xms2g -Xmx2g),避免频繁GC影响性能;启用TCP零拷贝(sendfile),减少数据复制开销。group.instance.id(消费者实例唯一ID),启用静态成员配置,减少因消费者短暂离线(如重启)触发的再平衡;优化消息处理逻辑,确保处理时间小于max.poll.interval.ms,避免因超时被踢出组。kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group your_group),实时查看消费延迟、偏移量提交情况;监控JVM内存、GC频率、磁盘空间等指标,设置告警阈值(如磁盘空间剩余10%时告警)。security.protocol(安全协议,如SSL或SASL_PLAINTEXT)、ssl.keystore.location(SSL密钥库路径)、sasl.mechanism(SASL机制,如SCRAM-SHA-256),启用认证和加密,防止数据泄露。kafka-topics.sh --alter --topic your_topic --partitions 10 --bootstrap-server localhost:9092)或调整分区分配策略(如RoundRobinAssignor)。enable.auto.commit=false),改为手动同步提交(commitSync()),确保偏移量提交成功后再处理下一批消息。log.retention.hours=72(保留3天)、log.retention.bytes=1073741824(保留1GB)),定期清理过期日志(kafka-delete-records.sh --bootstrap-server localhost:9092 --offset-json-file cleanup.json),避免磁盘空间耗尽。