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中
相关推荐
Wang's Blog2 小时前
Kafka: 分布式配置管理的核心挑战
分布式·kafka
Wang's Blog2 小时前
Kafka: 生产环境配置优化与服务器最佳实践指南
服务器·kafka
回家路上绕了弯2 小时前
分布式事务TCC详解:高并发场景下的柔性事务最优解?
分布式·后端
是阿威啊3 小时前
【第一站】本地虚拟机部署Hadoop分布式集群
大数据·linux·hadoop·分布式
川215 小时前
ZooKeeper配置+失误
linux·分布式·zookeeper
风途知识百科5 小时前
并网/分布式光伏气象站
人工智能·分布式
云和数据.ChenGuang6 小时前
运维工程师技术教程之Pull Requests(PR)
运维·分布式·git·数据库运维工程师·运维教程
西***63476 小时前
破局信息孤岛 赋能城市智治——分布式可视化系统驱动智慧城市指挥中心升级
人工智能·分布式·智慧城市
..空空的人7 小时前
C++基于protobuf实现仿RabbitMQ消息队列---服务器模块认识2
服务器·分布式·rabbitmq
上海锟联科技7 小时前
高精度DAS-U1000 解调卡
分布式·分布式光纤传感·光频域反射