Kafka】 kafak在高并发的情况下,如何避免消息丢失和消息重复

2020-05-19 08:55发布

3条回答
闫栢汌
2020-05-19 13:50

消息丢失解决方案:

        首先对kafka进行限速, 其次启用重试机制,重试间隔时间设置长一些,最后Kafka设置acks=all,即需要相应的所有处于ISR的分区都确认收到该消息后,才算发送成功。

消息重复解决方案:

        消息可以使用唯一id标识 

        生产者(ack=all 代表至少成功发送一次) 

        消费者 (offset手动提交,业务逻辑成功处理后,提交offset) 

        落表(主键或者唯一索引的方式,避免重复数据) 

业务逻辑处理(选择唯一主键存储到Redis或者mongdb中,先查询是否存在,若存在则不处理;若不存在,先插入Redis或Mongdb,再进行业务逻辑处理) 


一周热门 更多>