Kafka如何保证消息的顺序性

乱序场景一

因为一个topic可以有多个partition,kafka只能保证partition内部有序
partition数量=同一个消费者组中消费者数量时,可能需要顺序的数据分布到了不同的partition,导致处理时乱序

解决方案

1、可以设置topic 有且只有一个partition
2、根据业务需要,需要顺序的 指定为同一个partition
在这里插入图片描述
3、根据业务需要,比如同一个订单,使用同一个key,可以保证分配到同一个partition上
Kafka如何保证消息的顺序性_第1张图片
Kafka如何保证消息的顺序性_第2张图片

乱序场景二

对于同一业务进入了同一个消费者组之后,用了多线程来处理消息,会导致消息的乱序

解决方案

消费者内部根据线程数量创建等量的内存队列,对于需要顺序的一系列业务数据,根据key或者业务数据,放到同一个内存队列中,然后线程从对应的内存队列中取出并操作

你可能感兴趣的:(Kafka)