Kafka如何保证消息的顺序性
乱序场景一
因为一个topic可以有多个partition,kafka只能保证partition内部有序
partition数量=同一个消费者组中消费者数量时,可能需要顺序的数据分布到了不同的partition,导致处理时乱序
解决方案
1、可以设置topic 有且只有一个partition
2、根据业务需要,需要顺序的 指定为同一个partition
3、根据业务需要,比如同一个订单,使用同一个key,可以保证分配到同一个partition上
乱序场景二
对于同一业务进入了同一个消费者组之后,用了多线程来处理消息,会导致消息的乱序
解决方案
消费者内部根据线程数量创建等量的内存队列,对于需要顺序的一系列业务数据,根据key或者业务数据,放到同一个内存队列中,然后线程从对应的内存队列中取出并操作