Как долго хранятся данные в KTable? - PullRequest
1 голос
/ 08 ноября 2019

Это в качестве ссылки, поток обновлений профиля хранится в объекте KTable.

  1. Как долго эти данные будут храниться в объекте KTable?
  2. Пусть, скажем,мы запускаем несколько экземпляров приложения. И как-то, случай сбоя. Как насчет данных KTable, принадлежащих этому экземпляру? Это будет "восстановлено" другим экземпляром?

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

1 Ответ

5 голосов
/ 08 ноября 2019

KTable поддерживается темой, поэтому он будет определять, каковы его политики хранения и очистки.

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

Если вы запускаете несколько экземпляров, то каждый KTable будет хранить подмножество данных из разделов, из которых он потреблял, в каждой таблице не будет всех данных.

В случае сбоя какого-либо экземпляра ему нужно будет прочитать все данные с начала его раздела журнала изменений, но вы можете настроить резервные реплики для учета этого сценария

Дополнительная информация на https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Streams+Internal+Data+Management

...