kafka同步咋解决乱序问题

谢邀
我不确定是否百分之百地理解了您的问题,针对您所说的“消息顺序完全是乱的”,我个人认为可能有三个方面的含义,不确定您指的是哪个方面。索性就一并说下:
1. 消息全局顺序是乱的:这个应该是正常的。目前Kafka并不保证全局的消息顺序,只是提供分区级别的顺序性。如果您指这个,貌似无解。
2. 消息在单个分区内是乱序的:如果是这种情况,建议调整max.in.flight.requests.per.connection = 1(若没有启用retries,则不必调整该参数)如果您没有启动retries亦或是调整之后还发现乱序,可以结合日志进一步研究发生乱序的原因。
3. 某条消息在源集群中属于分区A,在目标集群中属于分区B:这种情况是非常有可能的,因为Kafka本身就允许source和target集群中同一个topic可以有不同的分区数,所以这种乱序极其常见。即使source和target指定了相同的分区数,也是可能发生这种情况的。要避免这种乱序有一点麻烦,需要满足以下几个条件:
消息必须有key,无key消息的分区我们不太好控制单独创建一个自定义的分区策略,并打成jar包(比如custom-partitioner.jar)供source和target使用把该jar包加到source集群producer程序的classpath中在target集群启动之前把该jar包加入到broker的classpath中在MirrorMaker的producer.config中指定partitioner.class为上面jar中的Partitioner实现类 【kafka同步咋解决乱序问题】 希望以上内容对您有所帮助~


    推荐阅读