首页 > 解决方案 > 扩展分区时的 Kafka 主题排序

问题描述

考虑您的生产者为系统用户创建消息,并且消息的顺序在用户级别很重要。

我的生产者,将消息添加到具有两个分区的主题中,并且我使用散列user_id来将每个用户的所有消息放在同一个分区中以保证顺序。

如何在保持消息顺序的同时扩展系统并向主题添加更多分区?

Kafka如何处理分区前已经产生的消息?消费但未提交回 Kafka 以更新偏移量的消息会发生什么情况?

标签: apache-kafkakafka-consumer-apiproducer-consumer

解决方案


1.在消费者客户端使用树集(有序集)缓存消息,保持1分钟(或更短);kafka只保证一个partition的顺序,我觉得producer也不能保证顺序。</p>

2.如果您不手动提交偏移量,在下一个获取请求中,将得到相同的消息。无论如何,在消费者客户端,您应该确保消息幂等性,即使您提交了偏移量。


推荐阅读