Я ищу советы о лучшей архитектурной организации для распределенной системы со следующими характеристиками:
- На одном или нескольких компьютерах будет доступна серия кодированных файлов каждую минуту (около 100 файлов в минуту или 1 Гбит / мин)
- Необходимо обработать эти файлы в кластере для их декодирования. Каждый файл генерирует строки в нескольких таблицах. Существует более одного типа кодировки.
- Каждый файл должен быть обработан только один раз
- Эти строки таблицы необходимо вставить в базу данных
- База данных распределена и уже доступна в облаке.
Пока что я оцениваю две возможности:
Используйте docker swarm для обработки закодированных файлов и вставки данных в базу данных.
- Недостаток: время, затрачиваемое на вставку данных в базу данных, больше, чем если бы вы позже использовали аккумулятор для выполнения массовой вставки. Ресурсы для переработки отходов, ожидающие вставки)
Используйте Apache Kafka, чтобы подключиться ко всем хостам, обслуживающим файлы, поместить их в поток или пакет и обработать их. Впоследствии, бросить записи в выходной поток для вставки в базу данных.
- Недостаток: трудности с масштабированием кластера Kafka из-за большого количества тем в сравнении с различными типами обработки для декодированных файлов и требованием обработки файла ровно один раз