如果从一个节点更新,如何在所有节点中更新榛子图



我有一个微服务,比如说StudentProfile,并将其部署在两个节点中xxxx:8081yyyy:8081。在这个微服务中,我创建了hazelcast映射,在那里我用map.put(roll_number,student_object(存储学生的数据。现在,当我从xxxx:8081更新某个学生时,这里会更新它,但当我试图从yyyy:8081获取同一学生的数据时,我会得到旧数据。

我的问题是,我如何在两个节点中同步(共享(Map,以便如果我从一个节点进行更改,那么它们也应该从另一个节点反映出来。我需要做一些配置更改吗?

若以上解释不合理,请询问我更多细节。我是新手,正在努力学习它是如何工作的。

Hazelcast对IMap的默认行为应该能满足您的需求。

如果两个节点连接,您将在每个节点中看到一条类似的日志行

Members {size:2, ver:2} [
Member [1.2.3.4]:5701 - aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
Member [5.6.7.8]:5701 - bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb this
]

如果找到具有HazelcastInstance.getMap("63149165")的映射,则两个节点都使用具有给定名称的同一映射。

如果任意节点执行map.put("hello", new Date()),则任何的节点都可以执行map.get("hello")以检索插入的值。

默认行为用于同步复制。除非你修改了配置,否则你不会得到以前的值,如果你修改了默认配置,这也不会令人惊讶。

需要注意的是,您可以在Hazelcast中获得数据的防御性副本。

如果执行map.get("hello"),则会获得与该键关联的数据值的副本。如果修改了该副本,但没有将其重新插入到栅格中,则栅格副本不会更改。因此,如果您再次执行map.get("hello"),您将继续获得原始值。

最新更新