我正在寻找一些关于如何解决我的 Java 服务中的故障转移问题的想法。
在高层次上,我的服务从另一个服务接收 3 个单独的对象数据流,执行一些合并逻辑,然后写入数据存储。
流中的每个对象都有一个唯一的键。来自 3 个流的数据可以同时到达,没有保证顺序。
数据到达后,会存储在一些 java.util.concurrent 集合中,比如一个 BlockingQueue 或者一个 ConcurrentHashMap。
问题是该服务必须支持故障转移,如果在数据存储在内存对象中时发生故障转移,我不确定如何解决这个问题。
我有一个简单的想法如下:
- 接收对象时写入文件/其他地方,并在添加到队列之前
- 当对象最终被处理并存储在数据存储中时
- 发生故障转移时,确保复制相同的文件,并且我们知道我们需要接收哪些对象的数据
性能是我的服务中的一个重要因素,由于 IO 很昂贵,这似乎是一种粗略的方法,而且非常简单。
因此,我想知道是否有任何库等可以轻松解决这个问题?