Дизайн вопрос:
Для разработки-создания масштабируемой и отказоустойчивой базы данных временных рядов.
Технология используется:
Монго, Кафка, Кассандра, Ява, Spring Boot
1) Мы создаем базу данных временных рядов и ожидаем около 4-5 миллионов сообщений в день (с экспоненциальным ростом), поскольку на сегодняшний день для каждого варианта использования мы открываем несколько потоков изменений Mongo в различных коллекциях (может быть одни и те же или разные базы данных) и захватывать вставки и обновлять из исходного потока базы данных Mongo, а затем сохранять / публиковать данные в месте назначения, которое настраивается и может быть Mongo или Cassandra или Kafka.
2) В конфигурационном файле Spring мы предоставляем подробную информацию об исходной базе данных и коллекциях, а в случае назначения у пользователя есть выбор:
Монго Коллекция
Стол Кассандры
Кафка Тема.
3) Используя код Spring + Java, мы извлекаем информацию об источнике и месте назначения из файла конфигурации и порождаем поток для каждой коллекции.
4) Мы используем реактивную среду для нашей структуры подписчик - издатель.
5) Мы запустили эту службу и теперь хотим, чтобы она была масштабируемой и отказоустойчивой.
6) Мы ищем что-то похожее на ведущую подчиненную систему и способное восстановиться в случае отказа ведущего. Есть ли способ, которым это может быть достигнуто в текущем проекте, если нет, каковы другие варианты, которые можно попробовать.
PS: порядок сообщений, полученных от источника назначения, должен быть сохранен.