У меня есть приложение Kafka Streams, в котором настроено создание 1 резервной реплики для каждой задачи. У меня работает два экземпляра приложения. Когда приложение запускается, оно записывает файлы .checkpoint для каждого из разделов, за которые оно отвечает. Он записывает эти файлы для разделов, принадлежащих как активным, так и резервным задачам.
При отправке нового события Kafka для обработки приложением экземпляр, содержащий эту активную задачу для раздела, обновляет смещения в файле .checkpoint . Однако файл .checkpoint для резервной задачи на втором экземпляре никогда не обновляется. Он остается со старым смещением.
Я считаю, что это заставляет нас видеть, что OffsetOutOfRangeEceptions выбрасывается при ребалансировке, что приводит к тому, что задачи срываются и создаются с нуля.
- Am Я правильно думаю, что смещения следует записывать для разделов в как резервных, так и активных задач?
- Это показатель того, что мои резервные задачи не потребляют, или может это быть тем, что он просто не может записать смещение?
- Есть идеи, что могло вызвать такое поведение?
Версия потоков: 2.3.1