Kafka中是怎么体现消息顺序性的?

2020-06-30 10:45发布

2条回答
那些年很冒险的梦。
2楼-- · 2020-06-30 17:04

1、可以设置topic 有且只有一个partition
2、根据业务需要,需要顺序的 指定为同一个partition
3、根据业务需要,比如同一个订单,使用同一个key,可以保证分配到同一个partition上

冬瓜
3楼-- · 2020-06-30 21:45

因为一个topic可以有多个partition,kafka只能保证partition内部有序
partition数量=同一个消费者组中消费者数量时,可能需要顺序的数据分布到了不同的partition,导致处理时乱序
解决方案
1、可以设置topic 有且只有一个partition
2、根据业务需要,需要顺序的 指定为同一个partition

3、根据业务需要,比如同一个订单,使用同一个key,可以保证分配到同一个partition上



对于同一业务进入了同一个消费者组之后,用了多线程来处理消息,会导致消息的乱序
解决方案
消费者内部根据线程数量创建等量的内存队列,对于需要顺序的一系列业务数据,根据key或者业务数据,放到同一个内存队列中,然后线程从对应的内存队列中取出并操作