返回到文章

采纳

编辑于

Kafka多线程多分区消费顺序错乱问题

kafka

问题描述 :

目前kafka生产端有30个分区,采用30个线程去消费,消息消费过程中,没有按照预想的顺序,
即 : 后面推送的数据被先消费, 导致最终得到的数据结果不够准确,因为我们的业务场景对顺序要求非常严格,所以顺序问题必须得到保障

想要达到的目标:

每一个线程,只消费这一个分区的数据,这个分区没有数据,线程就进行等待,直到数据过来

已经尝试或者测验过的方案有以下几种:

  1. 极端情形 : 采用单线程,单分区 数据一致性得到保证,但消费速度完全不能满足需求,造成大量数据堆积
  2. 多线程,多分区,但只往一个分区发送数据(测试) 测试结果符合预期, 即该分区的数据仅有一个线程消费
  3. 自定义分区 ; 采用自定义分区, 把一笔交易所有的数据发送到同一个分区,(该分区的数据有序)

测试结果 : 数据一致性问题有所改善, 但仍然存在这样的问题 : 同一笔交易经验证所有数据落在同一分区,但消费的时候不是同一个线程消费,依然会存在顺序错乱导致数据不一致的问题

请问,我该怎么彻底解决这个问题,或者有什么好的建议?