gpt4 book ai didi

java - 故障转移内存中的 Java 对象

转载 作者:行者123 更新时间:2023-11-30 11:40:09 24 4
gpt4 key购买 nike

我希望获得一些关于如何解决我的 Java 服务中的故障转移问题的想法。

在较高级别,我的服务从另一个服务接收 3 个独立的对象数据流,执行一些合并逻辑,然后写入数据存储。

流中的每个对象都有一个唯一的键。来自 3 个流的数据可以同时到达,没有保证的顺序。

数据到达后,会存储在一些java.util.concurrent集合中,比如BlockingQueue或者ConcurrentHashMap。

问题是该服务必须支持故障转移,如果在内存对象中存储数据时发生故障转移,我不确定如何解决这个问题。

我有一个简单的想法如下:

  1. 在接收对象时写入文件/其他地方,然后再添加到队列
  2. 当一个对象最终被处理并存储在数据存储中时
  3. 发生故障转移时,确保复制相同的文件并且我们知道我们需要为哪些对象接收数据

性能是我服务的一个重要因素,由于 IO 很昂贵,这似乎是一种粗略的方法并且非常简单。

因此,我想知道是否有任何库等可以轻松解决这个问题?

最佳答案

我会使用 Java Chronicle部分是因为我写了它,但主要是因为......

  • 它每秒可以以文本或二进制格式向磁盘写入和读取数百万个条目。
  • 可以在进程之间共享,例如具有亚微秒延迟的主动-主动集群。
  • 不需要系统调用或刷新来推出数据。
  • 生产者不会被消费者减慢,消费者可以领先 GB(超过机器的总内存)
  • 它可以以低堆无 GC 和无锁的方式使用。

关于java - 故障转移内存中的 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12897172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com