在Java中,我有一个包含对象的HashMap(如果有帮助,可以序列化)。在网络的其他地方,我在另一个应用程序副本中有另一个HashMap,我想与第一个保持同步。
例如,如果在计算机A上有人运行myMap.put("Hello", "World");
而在计算机B上有人运行myMap.put("foo", "bar");
,那么在传播更改一段时间后,两台计算机都将mayMap.get("Hello") == "World"
和mayMap.get("foo") == "bar"
。
Java语言,库或其他程序中的现有工具是否满足此要求?如果这已经解决了问题"为此不必编写自己的代码就好了。
如果有多种方法可以实现这一点,我希望按优先顺序:
(注意:我在搜索解决方案时遇到了麻烦,因为结果主要是关于同一应用程序中从多个线程同步对Map的访问的问题。这是不我的问题是什么。)
答案 0 :(得分:3)
您可以查看hazelcast
内存数据库。
它是专为分布式架构设计的开源解决方案。
由于淡褐色IMap
延伸java.util.Map
,因此它可以很好地映射到您的问题。
答案 1 :(得分:1)
您要做的是在两个节点之间调用群集
这里我有一些解决方案
您可以使用序列化制作地图来达到您的要求 每个时间间隔内可序列化的映射读写状态 并同步它。这是实现你的核心和基本方式 功能。但是通过使用序列化,您必须手动管理 地图的同步(即你必须为此做代码)
Hazelcast开源分布式缓存机制hazelcast 是最好的api,并达到了成为集群环境的图书馆 并在不同节点之间共享数据
coherence web还提供了实现群集的机制 甲骨文
Ehcache是2003年推出的缓存库,用于改进 通过减少底层资源的负载来提高性能。 Ehcache是 不适用于通用缓存和缓存Hibernate (二级缓存),数据访问对象,安全凭证和 网页。它还可以用于SOAP和RESTful服务器缓存, 应用程序持久性和分布式缓存
以上所有 Hazelcast 是最好的api通过它一定会帮到你