kafka防止消息丢失配置

无消息丢失最佳实践配置:

  1. 不要使用 producer.send(msg),而要使用 producer.send(msg, callback) API。
  2. 设置 acks = all。是 Producer 参数。设置成 all,表明所有副本 Broker 都要接收到消息,g该消息才算是"已提交"。
  3. 设置 retries 为一个较大的值。是 Producer 的参数,表示Producer自动重试。当出现网络的瞬时抖动时,消息发送可能会失败,此时配置了 retries > 0 Producer能够自动重试消息发送,避免消息丢失。
  4. 设置 unclean.leader.election.enable = false。这是 Broker 端的参数,它控制的是哪些 Broker 有资格竞选分区的 Leader。如果一个 Broker 落后原先的 Leader 太多,那么它一旦成为新的 Leader,必然会造成消息的丢失。故一般都要将该参数设置成 false,即不允许这种情况的发生。
  5. 设置 replication.factor >= 3Broker 端的参数。分区副本数量,目前防止消息丢失的主要机制就是冗余。
  6. 设置 min.insync.replicas > 1Broker 端参数,表示消息至少要被写入到多少个副本才算是"已提交"。设置成大于 1 可以提升消息持久性。在实际环境中不要使用默认值 1。
  7. 确保 replication.factor > min.insync.replicas。如果两者相等,那么只要有一个副本挂机,整个分区就无法正常工作。不仅要改善消息的持久性,防止数据丢失,还要能保证可用性。推荐设置
    replication.factor = min.insync.replicas +1
  8. 确保消息消费完成再提交。Consumer 端有个参数 enable.auto.commit,最好把它设置成 false,并采用手动提交位移的方式。就像前面说的,这对于单 Consumer 多线程处理的场景而言是至关重要的。
相关推荐
山沐与山2 小时前
【MQ】Kafka与RocketMQ深度对比
分布式·kafka·rocketmq
yumgpkpm3 小时前
Cloudera CDP7、CDH5、CDH6 在华为鲲鹏 ARM 麒麟KylinOS做到无缝切换平缓迁移过程
大数据·arm开发·华为·flink·spark·kafka·cloudera
树下水月4 小时前
Easyoole 使用rdkafka 进行kafka的创建topic创建 删除 以及数据发布 订阅
分布式·kafka
Cat God 0074 小时前
基于Docker搭建kafka集群
docker·容器·kafka
Cat God 0074 小时前
基于 Docker 部署 Kafka(KRaft + SASL/PLAIN 认证)
docker·容器·kafka
KD8 小时前
设计模式——责任链模式实战,优雅处理Kafka消息
后端·设计模式·kafka
原神启动121 小时前
Kafka详解
分布式·kafka
一只懒鱼a1 天前
搭建kafka集群(安装包 + docker方式)
运维·容器·kafka
青春不流名1 天前
如何在Kafka中使用SSL/TLS证书认证
分布式·kafka·ssl
青春不流名1 天前
Kafka 的认证机制
kafka