Kafka streams приложение с state store, бежит в kubernetes stateful set и держит свои state store в rocksdb на диске. При деплое новой версии приложения kubernetes убивает первый из трёх pod и запускает вместо него обновлённый контейнер с тем же persistent volume. Казалось бы, приложение должно сделать быстрый restore, потому что всё необходимое лежит рядышком на диске, но происходит всё иначе - после смерти одного из инстансов два оставшихся начинают rebalance и забирают себе его партишены и восстанавливают state store из changelog топика. Пока они выкачивают эти данные - в группу возвращается третий инстанс и снова происходит rebalance, снова выкачиваются state store с брокеров. Кто-то уже решал такое?
Ещё можно покрутить standby replicas config
Оказывается, эту проблему как раз решили в Kafka v2.3 через Static Membership (group.instance.id). @gamussa, есть ли хоть какой-нибудь примерный ETA у confluent-platform v5.3?
Обсуждают сегодня