我有一个场景,我将多个线程中的数据读入Java对象(例如List或Map)。另一个线程是从此Object读取数据并在确认时弹出。当JVM突然崩溃时,我想处理对象中的数据丢失,可能是由于电源故障或强制杀死进程。
我可以将数据保存在文件中,但我需要最小化I / O以提高性能。 验收标准无数据丢失
请建议我一些想法。 在此先感谢
答案 0 :(得分:1)
无数据丢失=在多台计算机(计算机或数据中心)上保存到磁盘可能会死亡。这当然是最慢的选择,但如果这是你需要的......
另一种方法是复制到内存中的多台计算机(有许多此类解决方案),但您将受到数据中心之间链接速度的限制。
答案 1 :(得分:1)
由于您的验收标准无数据丢失,您必须将磁盘持久性视为可行选项之一。
您可以使用以下方法。
disk
data stores
,如Couchbase
,Ehcache
等(NoSQL
是首选)Kafka