【发布时间】:2016-01-18 14:25:32
【问题描述】:
我有一个场景,我从多个线程读取数据到一个 Java 对象(例如列表或映射)中。另一个线程正在从此对象读取数据并在确认时弹出。当JVM突然崩溃时,我想处理对象中的数据丢失,可能是由于电源故障或强制终止进程。
我可以将数据保存在文件中,但我需要最小化 I/O 以提高性能。 接受标准是无数据丢失
请给我一些想法。 提前致谢
【问题讨论】:
标签: java performance io crash jvm
我有一个场景,我从多个线程读取数据到一个 Java 对象(例如列表或映射)中。另一个线程正在从此对象读取数据并在确认时弹出。当JVM突然崩溃时,我想处理对象中的数据丢失,可能是由于电源故障或强制终止进程。
我可以将数据保存在文件中,但我需要最小化 I/O 以提高性能。 接受标准是无数据丢失
请给我一些想法。 提前致谢
【问题讨论】:
标签: java performance io crash jvm
无数据丢失 = 保存到多台机器(机器或数据中心)上的磁盘可能会死机。这当然是最慢的选择,但如果这是你需要的......
另一种方法是复制到内存中的多台机器(有许多这样的解决方案),但您会受到数据中心之间链接速度的限制。
【讨论】:
由于您的接受标准是无数据丢失,因此您必须将磁盘持久性视为可行的选项之一。
您可以使用以下方法。
disk
data stores,如Couchbase、Ehcache等(首选NoSQL)Kafka
【讨论】: