Существуют ли ограничения в использовании состояния в Apache Flink? - PullRequest
0 голосов
/ 16 января 2019

Apache Flink позволяет мне использовать State в RichMapFunction. Я планирую создать постоянно работающую работу, которая анализирует поток веб-событий. Частью обработки будет создание контекста сеанса с метриками области сеанса (такими как n-й сеанс, длительность и т. Д.) И дополнительно пользовательским контекстом.

Контекст сеанса истекает через 30 минут, но пользовательский контекст может существовать в течение года для обработки возвращающихся пользователей.

Будут миллионы сессий и пользователей, поэтому я попаду в миллионы отдельных штатов. Размер каждого состояния - всего несколько килобайт.

  • Может ли это быть правильно обработано состояниями Флинк?
  • Как Flink на самом деле очищает устаревшие состояния?
  • Имеет ли смысл подумать о предоставлении пользовательского бэкэнда для хранения состояния в кластере KV?

1 Ответ

0 голосов
/ 16 января 2019

Для больших состояний я бы рекомендовал использовать Flink's RocksDBStateBackend.Этот бэкэнд состояния использует RocksDB для хранения состояния.Поскольку RocksDB изящно разливается на диск, он ограничен только вашим доступным дисковым пространством.Таким образом, Flink сможет справиться с вашим вариантом использования.

На данный момент вам необходимо зарегистрировать таймеры для очистки состояния.Однако со следующим выпуском Flink сообщество добавит очистка для состояния с TTL .Затем он автоматически очистит ваше состояние по истечении срока его действия.

Поддержание вашего состояния близко к вашим вычислениям с периодическими контрольными точками, которые сохраняются, сохранит ваше приложение быстрым.Если бы каждый доступ к состоянию шел к удаленному кластеру KV, это значительно замедляло бы обработку.

...