2017-02-02 3 views
0

По многим причинам потребителю необходимо выполнить полное обновление данных, это может быть связано с сбоем данных или новым потребителем на посадке.Kafka - Consumer Full Data Refresh

Мне было интересно, как потребитель может выполнить полное обновление данных, когда начальный сдвиг, который содержит полные данные, будет удален после периода хранения? Последующее смещение 2, 3, 4 и т. Д. Имеют только дельта-изменения. Без первого смещения данные не будут выполнены.

Thanks

ответ

0

Хорошо. Это не может. Вам нужно будет увеличить время удержания, чтобы избежать удаления этих данных в первую очередь.

Однако, если у вас есть «дельта-обновления», лучше не хранить их в Kafka, а применять эти обновления к дате и хранить новую версию, т. Е. Вместо A, delta-1-A, delta-2-A вы храните A1, A2, A3, (с A1 = A, A2 = A + delta-1-A и т. д.). Кроме того, вы можете изменить темы cleanup.policy с «удержания» на «уплотнение» - это гарантирует, что Kafka никогда не удалит последнюю версию ваших данных (за ключ).

+0

Спасибо Matthias. Каждый A1, A2, A3 содержит полный набор данных, производительность потребительской загрузки может быть затронута, если у нас огромный объем данных, не так ли? –

+0

Не знаю, каков ваш тип данных. Скажем, это подсчет, вы можете хранить 1, 3, 2 (как дельта) или 1, 4, 6 (как текущий счет) - размер данных здесь одинаковый. Кроме того, при загрузке в первом случае вы читаете 3 записи, в то время как в более позднем случае (после того, как тема была сжата) вы читаете только одно значение, т. Е. 6. Так что это зависит (как и от оператора :)). И даже если размер данных увеличивается и имеет влияние на производительность, это ваш призыв принять решение о правильности и производительности ... –