В развертывании Kafka пользовательская логика разделителя тем используется для маршрутизации всех сообщений, принадлежащих одному корневому объекту (например, всех сообщений для определенного пользователя), в один и тот же раздел.
Кто-нибудь может порекомендовать стратегию того, как бороться с изменением логики разбиения в такой работающей системе?
Одним из примеров, влияющих на разбиение, является очевидное изменение реализации разделителя.Другим примером будет изменение количества разделов для данной темы.
В обоих случаях мы окажемся в ситуации, когда некоторые сообщения для пользователя A, которые поступили в Kafka до изменения,будет в разделе 1, в то время как после изменения логики разделения или количества сообщений раздела для того же пользователя A будет идти раздел 2.
Это может привести к проблеме, когда сообщения для пользователя A обрабатываются внепорядок.Потребитель, читающий сообщения из раздела 2, может обработать сообщения раньше, чем потребитель, который читает сообщения из раздела 1.
Кто-нибудь сталкивался с этой проблемой в действующей системе?Как вы решали или решили бы эту проблему?
Кажется, это очень распространенный сценарий, но я не смог найти в нем ничего.
Спасибо