У нас есть случай использования, когда у нас есть устаревшая система, данные которой находятся в MS SQL Server, и для целей обработки данных мы создаем конвейер обработки данных в реальном времени, который находится в стадии POC, со следующими шагами:
- Данные извлекаются из MS SQL Server.
- Они помещаются в Kafka.
- Они используются для выполнения некоторых агрегаций.Поскольку мы хотим сделать это в режиме реального времени, нам нужен некоторый уровень хранения событий или кэширования, где мы можем хранить данные и выполнять некоторые агрегации.
- Агрегированный результат сбрасывается в Cassandra.
Насколько я понял, это
- Мы можем выбирать между потоками Kafka, Spark Streaming, Flink для агрегации данных в реальном времени
Я несколько завершил Kafka Streams, так какимеет малый вес и имеет возможность хранения событий, которая будет хранить мои входящие данные в RocksDb и все еще исследовать их.
И у меня есть некоторые сомнения, такие как
- Если я хочу выполнить некоторую агрегациюна данных, которые уже присутствуют в Cassandra, тогда я могу заполнить или инициализировать данные Cassandra в хранилище событий Kafka и выполнить агрегирование?Или я могу получить его непосредственно из Cassandra в потоковом приложении Kafka, выполнить агрегацию и сбросить в Cassandra?
Я хотел бы знать, как люди справляются с такими сценариями.
ЧтоЯ пришел к выводу:
Когда поступит record1 и, так как я могу запросить хранилище Kafka, я буду запрашивать хранилище KTable и проверять, есть ли запись1.Если его нет, то данные извлекаются из Кассандры.Значение входящей записи1 и существующей записи1 Кассандры будет агрегировано в KStream, который автоматически вставит агрегированное значение обратно в хранилище Kafka.
Когда поступает запись2 и в том случае, если она уже присутствует вЗатем в хранилище Kafka это значение и входящее значение используются для агрегирования.
Наконец обновите хранилище Kafka до Cassandra при каждом EOD и очистите хранилище Kafka.
Поток Kafka также можно заменить кэшированием потока Spark и постоянным API, я думаю.
Это разумный способ сделать это?Мне нужно руководство.Есть ли лучший способ сделать то же самое?Я хочу прочитать больше тематических исследований.Если кто-нибудь может поделиться какими-либо ссылками или исправить меня в выше.