设计问题: 设计创建可扩展且容错的时间序列数据库。
使用的技术: Mongo,Kafka,Cassandra,Java,Spring Boot
1)我们正在创建一个时间序列数据库,并希望根据今天的用例,每天大约有4-5百万条消息(并呈指数增长),根据我们的用例,我们将在各个集合上打开多个Mongo Change Streams(可能是相同或不同的数据库),并从源Mongo db流捕获插入并进行更新,然后将数据持久/发布到可配置的目标上,该目标可以是Mongo或Cassandra或Kafka。
2)在Spring配置文件中,我们提供了源数据库和集合的详细信息,以及在目标为目标的情况下,用户可以选择 蒙哥系列 卡桑德拉表 卡夫卡主题。
3)使用Spring + Java代码,我们从配置文件中提取源和目标的详细信息,并为每个集合生成一个线程。
4)我们将反应性框架用于订户-发布者框架。
5)我们已经启用了这项服务,现在希望它具有可伸缩性和容错性。
6)我们正在寻找一种看起来像主从系统,并且如果主系统发生故障可以恢复的系统。如果没有其他可以尝试的选择,是否有办法在当前设计中实现?
PS:需要维护从源目的地接收到的消息的顺序。