一、kafka 本身配置层面

1.1、replication.factor 默认值1

创建kafka的topic时候,每个分区设置的副本数, 根据broker数量酌情设置, 建议业界通常做法设置为3

1.2、min.insync.replicas 默认值1

消息至少要被写入到min.insync.replicas这么多副本才算成功时候,通常使用小于replication.factor,当request.required.acks = all时生效

二、kafka的生产者层面

2.1、设置副本确认

request.required.acks 有3个取值,分别是0,1,all

0:表示无需等待broker确认就认为写入成功,风险大,一般不使用

1:表示当leader确认写入成功就认为成功了,有数据丢失风险,不建议使用

all:leader和follower都确认写入成功,才能认为是写入成功了,推荐使用(-1在新版本已弃用

2.2、设置重试次数

retries  默认值0,不重试。kafka返回写入消息失败,生产者进行重新发送,直到成功, 根据业务合理设置重试次数

 2.3、消息补偿机制

虽设置了重试次数,但不可能一直重试,如重试3次后仍然失败,这时候可把失败消息放入本地消息表,用定时任务轮询消息表, 重新生产推送到kafka

三、kafka的消费者层面

3.1 关闭自动 offset

设置 enable.auto.commit  = false , 默认值true,自动提交

3.2 手动提交offset

使用kafka的Consumer的类,用方法consumer.commitSync()提交

或者使用spring-kafka的 Acknowledgment类,用方法ack.acknowledge()提交(推荐使用)

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐