Java 除了调用put操作外,Hazelcast映射元素什么时候会被持久化?

Java 除了调用put操作外,Hazelcast映射元素什么时候会被持久化?,java,hazelcast,Java,Hazelcast,我有一个hazelcast集群,有2个节点和一个用于持久性的DB。我一个接一个地启动两个节点。第一个节点从数据库中读取实体并构建相应的映射(entityMap)。在启动第二个节点后,EntityMapStore.store()方法(在第二个节点上)会被定期调用好几次。 我只是想知道,这应该怎么发生,因为在开始之后,我没有在地图上放任何东西。还是我做错了什么 hazelcast.xml的相应部分如下所示: <map name="entityMap"> <ba

我有一个hazelcast集群,有2个节点和一个用于持久性的DB。我一个接一个地启动两个节点。第一个节点从数据库中读取实体并构建相应的映射(entityMap)。在启动第二个节点后,EntityMapStore.store()方法(在第二个节点上)会被定期调用好几次。 我只是想知道,这应该怎么发生,因为在开始之后,我没有在地图上放任何东西。还是我做错了什么

hazelcast.xml的相应部分如下所示:

   <map name="entityMap">
        <backup-count>1</backup-count>
        <map-store enabled="true">
            <class-name>EntityMapStore</class-name>
            <write-delay-seconds>1</write-delay-seconds>
        </map-store>
    </map>

1.
实体数据库
1.

不,你没有做错任何事。由于您有
写入延迟秒数>0
,当条目迁移到第二个节点时,将为第二个节点上的这些条目调用
store()
。这是当前的行为,但您可能希望对此进行修改,以便Hazelcast团队可以通过不对迁移的未授权项调用
store()
来增强此行为。

否。您没有做错任何事情。由于您有
写入延迟秒数>0
,当条目迁移到第二个节点时,将为第二个节点上的这些条目调用
store()
。这是当前的行为,但您可能希望对此进行修改,以便Hazelcast团队可以通过不调用迁移的未授权项的
store()
来增强此行为。

谢谢您的回答。正如您所说,如果我在第二个节点上设置write delay seconds=0;不会在第二个节点上调用store()。但是,为什么呢?我原以为每次实体迁移后都会调用store(),因为如果write delay seconds=0,就意味着在第一个节点上已经调用了store()。不需要在第二个节点上调用它。Hazelcast假设数据存储是集中式的(如sql数据库)。谢谢您的回答。正如您所说,如果我在第二个节点上设置write delay seconds=0;不会在第二个节点上调用store()。但是,为什么呢?我原以为每次实体迁移后都会调用store(),因为如果write delay seconds=0,就意味着在第一个节点上已经调用了store()。不需要在第二个节点上调用它。Hazelcast假设数据存储是集中式的(如sql数据库),这也带来了数据现在如何平衡的问题。由于数据存储在数据库中,那么数据是如何分布的呢?当数据被写入时,在一个节点上是否也有它的内存副本,在另一个节点上是否有备份副本?这也提出了一个问题,即数据现在是如何平衡的。由于数据存储在数据库中,那么数据是如何分布的呢?当数据被写入时,在一个节点上是否也有它的内存副本,在另一个节点上是否有备份副本?