Как эффективно восстанавливать данные в больших потоках приложений kafka / kafka - PullRequest
0 голосов
/ 07 ноября 2018

Проект

приложение, над которым я работаю, обрабатывает данные финансовых транзакций (ордеров и сделок), несколько миллионов в день.

данные подаются в тему кафки.

Микросервисы потоков kafka объединяют информацию (например, количество сделок на акцию), и эти данные используются другим программным обеспечением. Кроме того, данные сохраняются в mongodb.

Проблема:

данные, отправляемые в тему, иногда необходимо изменить, например, изменение цен из-за ошибки или неправильной конфигурации.

Так как kafka только для добавления, я делаю исправление в mongodb, и после этого исправленные данные передаются в новую тему kafka, что приводит к полному пересчету нижестоящих агрегатов.

Однако этот процесс вызывает проблемы с масштабируемостью, поскольку все больше и больше данных необходимо воспроизводить с течением времени.

Вопрос

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

Мой вопрос заключается в том, является ли это правдоподобным способом решения этой проблемы или есть более эффективные способы ее решения.

1 Ответ

0 голосов
/ 07 ноября 2018

Восстановление данных или вообще обработка ошибок и Kafka сильно зависит от варианта использования. В нашем случае мы строим нашу систему на основе принципов поиска событий CQRS + (общее описание здесь ), и в результате для восстановления данных мы используем «компенсирующие события» (то есть событие, которое исправляет влияние другого событие) и в конечном итоге система будет согласованной.

...