Kafka常见使用问题

消息丢失

  1. 生产者方:设置ack为1或-1/all可以防止生产的消息丢失,如果要做到生产消息成功率提高到最高,ack设置成all,把min.insync.replicas配置成分区备份数,把ack设置成1或者-1/all,这样生产者生产的消息发送到broker中,会等待leader或者至少leader和一个副本同步到消息才会返回ack,如果生产者同步消息失败,会进行重试
php 复制代码
		$conf->set('message.send.max.retries', 5);
        // -1必须等所有brokers同步完成的确认 1当前服务器确认 0不确认,这里如果是0回调里的offset无返回,如果是1和-1会返回offset
        // 我们可以利用该机制做消息生产的确认,不过还不是100%,因为有可能会中途kafka服务器挂掉
        $conf->set('request.required.acks', 1);
  1. 消费者方:把自动提交改为手动提交offset

重复消费

  1. 生产者:通过ack设置,尽量保证消息不回重复发送,但是因为网络抖动和重试机制,还是会导致消息重复
  2. 消费者:对关键数据进行幂等处理,防止关键数据重复处理。一般实现幂等的操作:
    • 数据投递之前生成唯一uuid
    • 数据消费的时候,使用乐观锁,防止重复消费

保持数据有序

  1. 生产者投递数据时,支持根据关键数据(例如uid)生成哈希值,同一个uid可以投递到指定的partition
  2. 日志类的数据,可以在投递数据前,就记录生成时间,消费的时候,根据时间存储到db中
相关推荐
面向Google编程1 小时前
从零学习Kafka:数据存储
后端·kafka
Jackeyzhe1 小时前
从零学习Kafka:数据存储
kafka
SoleMotive.12 小时前
谢飞机爆笑面经:Java大厂3轮12问真题拆解(Redis穿透/Kafka分区/MCP Agent)
redis·spring cloud·kafka·java面试·mcp
程序猿阿伟13 小时前
《分布式追踪Span-业务标识融合:端到端业务可观测手册》
分布式
爆米花byh14 小时前
在RockyLinux9环境的Kafka4.1.1单机版安装(无ZK依赖)
中间件·kafka
yumgpkpm14 小时前
预测:2026年大数据软件+AI大模型的发展趋势
大数据·人工智能·算法·zookeeper·kafka·开源·cloudera
消失的旧时光-194315 小时前
第十六课实战:分布式锁与限流设计 —— 从原理到可跑 Demo
redis·分布式·缓存
若水不如远方15 小时前
分布式一致性(三):共识的黎明——Quorum 机制与 Basic Paxos
分布式·后端·算法
DemonAvenger16 小时前
Kafka消费者深度剖析:消费组与再平衡原理
性能优化·kafka·消息队列
会算数的⑨16 小时前
Kafka知识点问题驱动式的回顾与复习——(一)
分布式·后端·中间件·kafka