#apache-kafka #apache-kafka-streams #rocksdb
#apache-kafka #apache-kafka-streams #rocksdb
Вопрос:
Мы знаем, что в потоках кафки «Большое состояние подразумевает большое время восстановления».
Мы развернули наше приложение как модуль kubernetes pod и хотели бы реализовать горизонтальное масштабирование модуля (hpa). Есть несколько проблем
- Показатели, по которым нам нужно запустить масштабирование модуля. Пока мы планируем использовать показатели процессора. Какие-либо другие рекомендации?
- Более сложной задачей является время восстановления хранилища состояний. После запуска нового модуля требуется довольно много времени, чтобы он перешел в состояние «Running» (15-30 минут в зависимости от того, какой раздел / задача назначена новому модулю). Итак, мы устанавливаем очень большое время для выполнения проверки готовности (что обычно не является хорошей практикой)
Итак, мы ищем способы сократить время восстановления. Мы не хотим использовать statefulset , поэтому наличие хранилищ состояний, поддерживаемых базовым хранилищем, здесь неуместно. Я также пытаюсь настроить потоки, связанные с ‘restore.consumer’, но это не очень помогло.
Есть ли какие-либо другие рекомендации?
Комментарии:
1. о # 2 — сколько у вас журналов изменений? установлено ли у вас сохранение в ваших журналах изменений?
2. у нас есть около 60 журналов изменений. Большинство из них имеют небольшие состояния. Некоторые из них имеют очень большое состояние (в GBs). что касается журнала изменений, существуют сжатые темы
3. вы можете установить для политики очистки журналов изменений значение compact delete, чтобы можно было удалять старые / устаревшие записи (в зависимости от ваших бизнес-требований).
4. На самом деле мы не можем удалять записи из журналов изменений.
5. немного сложно ответить на ваш вопрос без более подробной информации. можете ли вы опубликовать свою топологию, чтобы я мог получить немного больше контекста? кроме того, может быть полезно получить более подробную информацию о ваших модулях k8s (сколько модулей, процессор / память)