gpt4 book ai didi

java - 不同 JVM 之间共享的映射

转载 作者:行者123 更新时间:2023-12-02 13:42:05 24 4
gpt4 key购买 nike

我需要一个可以在不同主机上的不同 JVM 之间共享的 java.util.Map 实现。所有主机(以及 JVM)都可以访问相同的共享文件系统,所以我需要这样的东西:

Map<String,String> sharedMap = new SharedMapInFile("/shared/mymap.map");

我查看了 MapDB ( http://www.mapdb.org/ ),但不支持不同 JVM 之间的共享(请参阅: https://groups.google.com/forum/#!topic/mapdb/VKVy84MZJko )。

有什么想法吗? TIA!

最佳答案

Chronicle Map如果您的共享文件系统可以在操作系统级别利用将文件映射到内存中,则可以做到这一点。例如:

Map<String, String> sharedMap = ChronicleMap
.of(String.class, String.class)
.averageKey(...).averageValue(...)
.entries(...)
.createPersistedTo(new File("/shared/mymap.map"));

这可能很方便,但效率相当低,因为每次 Map.put() 操作都需要通过网络发送 3 个页面、12k 字节。另外,请注意,如果操作系统长时间不将映射内存写回到写入器主机上的文件系统,则将条目放入一台主机上的映射中与能够在另一台主机上读取该条目之间的延迟可能会很高。请参阅 Linux 中的 /proc/sys/vm/dirty_expire_centisecs

因此,在主机之间建立直接网络连接(例如使用 Netty )并仅发送键和值可能会更有效,尽管这是一个不太方便的解决方案。

关于java - 不同 JVM 之间共享的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683170/

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