Spring 两个WAS节点上的Hazelcast缓存分发问题

Spring 两个WAS节点上的Hazelcast缓存分发问题,spring,hazelcast,Spring,Hazelcast,在我的项目中,我使用的是Hazelcast 3.7.8,在应用程序和节点之间的数据分布方面存在问题 我有2个节点,对于每个节点,我有4个Spring应用程序部署在一个WAS上,只有一个JVM进程 这些应用程序之间共享一个地图。每个应用程序都有一个hazelcast-configuration.xml文件,但除网络端口(5701570257035704)外,所有文件都相同 通常但并非总是,在每个节点上同时部署其中一个应用程序之后,分布式数据就不一样了。部署的应用程序(在每个节点上)有一个数据集,另

在我的项目中,我使用的是Hazelcast 3.7.8,在应用程序和节点之间的数据分布方面存在问题

我有2个节点,对于每个节点,我有4个Spring应用程序部署在一个WAS上,只有一个JVM进程

这些应用程序之间共享一个地图。每个应用程序都有一个hazelcast-configuration.xml文件,但除网络端口(5701570257035704)外,所有文件都相同

通常但并非总是,在每个节点上同时部署其中一个应用程序之后,分布式数据就不一样了。部署的应用程序(在每个节点上)有一个数据集,另一个应用程序有另一个数据集

        <cache:annotation-driven cache-manager="cacheManager" />
        <bean id="cacheManager" class="com.hazelcast.spring.cache.HazelcastCacheManager">
            <constructor-arg ref="hazelcastInstance" />
        </bean>  
        <hz:hazelcast id="hazelcastInstance">
            <hz:config>
                <hz:instance-name>myCacheInstance</hz:instance-name>
                <hz:group name="qualification" password="qualification"/>
                <hz:properties>
                    <hz:property name="hazelcast.health.monitoring.level">OFF</hz:property>
                    <hz:property name="hazelcast.health.monitoring.delay.seconds">3600</hz:property>
                </hz:properties>
                <hz:network port="5701" port-auto-increment="true">
                    <hz:join>
                        <hz:multicast enabled="false" />
                        <hz:tcp-ip enabled="true">
                            <hz:member>NODE1</hz:member>
                            <hz:member>NODE2</hz:member>
                        </hz:tcp-ip>
                    </hz:join>
                </hz:network>
                <hz:partition-group enabled="false"/>
                <hz:map name="my-map" 
                    backup-count="1"
                    async-backup-count="1"
                    time-to-live-seconds="7200"
                    max-idle-seconds="0"
                    eviction-policy="LRU"
                    max-size="15"
                    max-size-policy="USED_HEAP_PERCENTAGE"
                    eviction-percentage="25"
                    min-eviction-check-millis="100"
                    merge-policy="com.hazelcast.map.merge.PassThroughMergePolicy">
                </hz:map>
                <hz:services enable-defaults="true"/>   
            </hz:config>
        </hz:hazelcast>  
怎么了


提前感谢

这里有四个方面可以看

每个Hazelcast实例选择一个入站端口,在所示的配置中指定该端口
port=“5701”port auto increment=“true”

这意味着当实例启动时,它将尝试使用端口5701。如果该端口正在使用中(例如,由另一个Hazelcast实例使用),则自动增量标志意味着尝试下一个端口5702,然后是5703,依此类推,直到找到一个可用的端口

(1) 基于以上内容,您可以并且可能应该对所有Hazelcast实例使用相同的配置。如果它们设置正确,则不应导致上述错误,但如果它们存在一些无意的差异,则可能是原因。把它们都放在一起,看看会发生什么

你也可以改变


                            <hz:member>NODE1</hz:member>
                            <hz:member>NODE2</hz:member>

节点1
节点2

NODE1:5701
节点1:5702
节点1:5703
节点1:5704
节点2:5701
节点2:5702
节点2:5703
节点2:5704
(2) 创建TcpIpJoiner[NODE2]:5705的记录行
[qualification][3.7.8]表示端口5701、5702、5703和5704正在使用。这可能意味着四个Hazelcast实例已经在该节点上运行,所以这是第五个。如果您只期望有四个实例,而有五个实例,那么可能有一个早期的实例关闭尚未完成

(3) 配置
意味着数据备份放在任何其他Hazelcast实例上,这可能意味着同一WAS进程中的实例。若该过程失败,则数据及其备份可能会丢失。使用
HOST\u AWARE
设置会更安全,但您只有两台主机,并且已配置了主副本、同步备份和异步备份(总共三个副本),以尝试分布在两台主机上,其中每个副本位于具有不同IP地址的主机上,因此无法实现

(4) 日志行
[qualification][3.7.8]启动8个分区线程
表明这是一台4 CPU的机器,不足以充分运行所有负载

++


此外,3.7.8是一个旧版本。如果你要改变以带来稳定性,你也可以升级。

这里有四个方面可以看

每个Hazelcast实例选择一个入站端口,在所示的配置中指定该端口
port=“5701”port auto increment=“true”

这意味着当实例启动时,它将尝试使用端口5701。如果该端口正在使用中(例如,由另一个Hazelcast实例使用),则自动增量标志意味着尝试下一个端口5702,然后是5703,依此类推,直到找到一个可用的端口

(1) 基于以上内容,您可以并且可能应该对所有Hazelcast实例使用相同的配置。如果它们设置正确,则不应导致上述错误,但如果它们存在一些无意的差异,则可能是原因。把它们都放在一起,看看会发生什么

你也可以改变


                            <hz:member>NODE1</hz:member>
                            <hz:member>NODE2</hz:member>

节点1
节点2

NODE1:5701
节点1:5702
节点1:5703
节点1:5704
节点2:5701
节点2:5702
节点2:5703
节点2:5704
(2) 创建TcpIpJoiner[NODE2]:5705的记录行
[qualification][3.7.8]表示端口5701、5702、5703和5704正在使用。这可能意味着四个Hazelcast实例已经在该节点上运行,所以这是第五个。如果您只期望有四个实例,而有五个实例,那么可能有一个早期的实例关闭尚未完成

(3) 配置
意味着数据备份放在任何其他Hazelcast实例上,这可能意味着同一WAS进程中的实例。若该过程失败,则数据及其备份可能会丢失。使用
HOST\u AWARE
设置会更安全,但您只有两台主机,并且已配置了主副本、同步备份和异步备份(总共三个副本),以尝试分布在两台主机上,其中每个副本位于具有不同IP地址的主机上,因此无法实现

(4) 日志行
[qualification][3.7.8]启动8个分区线程
表明这是一台4 CPU的机器,不足以充分运行所有负载

++


此外,3.7.8是一个旧版本。如果您必须进行更改以带来稳定性,那么您也可以进行升级。

看起来您没有足够的CPU在一台机器上有效运行4个实例,分区组设置也不理想。然而,这些并不是你问题的原因。
连接到端口5705上的节点1/192.237.154.88:5705
的事实表明有5个Hazelcast正在运行
                            <hz:member>NODE1:5701</hz:member>
                            <hz:member>NODE1:5702</hz:member>
                            <hz:member>NODE1:5703</hz:member>
                            <hz:member>NODE1:5704</hz:member>
                            <hz:member>NODE2:5701</hz:member>
                            <hz:member>NODE2:5702</hz:member>
                            <hz:member>NODE2:5703</hz:member>
                            <hz:member>NODE2:5704</hz:member>