Spring boot 每个Spring Boot实例2个Hazelcast成员

Spring boot 每个Spring Boot实例2个Hazelcast成员,spring-boot,caching,hazelcast,Spring Boot,Caching,Hazelcast,我在嵌入式/P2P模式下的Spring Boot应用程序中使用Hazelcast作为Hibernate 2LC提供程序。启动应用程序后,我可以看到为我的Hazelcast集群创建了两个成员。当我启动整个应用程序的第二个实例时,会创建另外两个成员 目前,我对HazelcastCacheRegionFactory(非本地)使用以下配置 在Hazelcast管理中心,一名成员似乎是另一名成员的双重身份。然而,当启动Spring启动应用程序的第二个实例时,这两个成员仍然存在,并且总共增加到四个 我已经尝

我在嵌入式/P2P模式下的Spring Boot应用程序中使用Hazelcast作为Hibernate 2LC提供程序。启动应用程序后,我可以看到为我的Hazelcast集群创建了两个成员。当我启动整个应用程序的第二个实例时,会创建另外两个成员

目前,我对HazelcastCacheRegionFactory(非本地)使用以下配置

在Hazelcast管理中心,一名成员似乎是另一名成员的双重身份。然而,当启动Spring启动应用程序的第二个实例时,这两个成员仍然存在,并且总共增加到四个

我已经尝试在我的
hazelcast.xml
中将备份计数设置为0

启动应用程序的第一个实例时,我会得到以下日志:

2019-10-09 12:04:51.055  WARN 21088 --- [  restartedMain] c.h.instance.HazelcastInstanceFactory    : Hazelcast is starting in a Java modular environment (Java 9 and newer) but without proper access to required Java packages. Use additional Java arguments to provide Hazelcast access to Java internal API. The internal API access is used to get the best performance results. Arguments to be used:
 --add-modules java.se --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED
2019-10-09 12:04:51.058  INFO 21088 --- [  restartedMain] c.h.config.AbstractConfigLocator         : Loading 'hazelcast.xml' from the classpath.
2019-10-09 12:04:51.238  WARN 21088 --- [  restartedMain] c.h.config.AbstractXmlConfigHelper       : Name of the hazelcast schema location is incorrect, using default
2019-10-09 12:04:51.717  INFO 21088 --- [  restartedMain] com.hazelcast.instance.AddressPicker     : [LOCAL] [dev] [3.12.2] Prefer IPv4 stack is true, prefer IPv6 addresses is false
2019-10-09 12:04:53.004  INFO 21088 --- [  restartedMain] com.hazelcast.instance.AddressPicker     : [LOCAL] [dev] [3.12.2] Picked [10.29.47.243]:5701, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5701], bind any local is true
2019-10-09 12:04:53.016  INFO 21088 --- [  restartedMain] com.hazelcast.system                     : [10.29.47.243]:5701 [dev] [3.12.2] Hazelcast 3.12.2 (20190802 - e34b163) starting at [10.29.47.243]:5701
2019-10-09 12:04:53.016  INFO 21088 --- [  restartedMain] com.hazelcast.system                     : [10.29.47.243]:5701 [dev] [3.12.2] Copyright (c) 2008-2019, Hazelcast, Inc. All Rights Reserved.
2019-10-09 12:04:53.240  INFO 21088 --- [  restartedMain] c.h.s.i.o.impl.BackpressureRegulator     : [10.29.47.243]:5701 [dev] [3.12.2] Backpressure is disabled
2019-10-09 12:04:55.174  INFO 21088 --- [  restartedMain] com.hazelcast.instance.Node              : [10.29.47.243]:5701 [dev] [3.12.2] Creating MulticastJoiner
2019-10-09 12:04:55.313  INFO 21088 --- [  restartedMain] c.h.s.i.o.impl.OperationExecutorImpl     : [10.29.47.243]:5701 [dev] [3.12.2] Starting 4 partition threads and 3 generic threads (1 dedicated for priority tasks)
2019-10-09 12:04:55.314  INFO 21088 --- [  restartedMain] c.h.internal.diagnostics.Diagnostics     : [10.29.47.243]:5701 [dev] [3.12.2] Diagnostics disabled. To enable add -Dhazelcast.diagnostics.enabled=true to the JVM arguments.
2019-10-09 12:04:55.328  INFO 21088 --- [  restartedMain] com.hazelcast.core.LifecycleService      : [10.29.47.243]:5701 [dev] [3.12.2] [10.29.47.243]:5701 is STARTING
2019-10-09 12:04:57.466  INFO 21088 --- [  restartedMain] c.h.internal.cluster.ClusterService      : [10.29.47.243]:5701 [dev] [3.12.2] 

Members {size:1, ver:1} [
    Member [10.29.47.243]:5701 - bf933bd9-9214-4022-a104-514bc5f56267 this
]

2019-10-09 12:04:57.486  INFO 21088 --- [  restartedMain] c.h.i.m.ManagementCenterService          : [10.29.47.243]:5701 [dev] [3.12.2] Hazelcast will connect to Hazelcast Management Center on address: 
http://localhost:8080/hazelcast-mancenter
2019-10-09 12:04:57.495  INFO 21088 --- [  restartedMain] com.hazelcast.core.LifecycleService      : [10.29.47.243]:5701 [dev] [3.12.2] [10.29.47.243]:5701 is STARTED
2019-10-09 12:04:57.544  INFO 21088 --- [MC.State.Sender] com.hazelcast.client.impl.ClientEngine   : [10.29.47.243]:5701 [dev] [3.12.2] Applying a new client selector :ClientSelector{any}
2019-10-09 12:04:57.651  INFO 21088 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2019-10-09 12:04:58.089  INFO 21088 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2019-10-09 12:04:58.163  INFO 21088 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
2019-10-09 12:04:58.274  INFO 21088 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate Core {5.3.10.Final}
2019-10-09 12:04:58.276  INFO 21088 --- [  restartedMain] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2019-10-09 12:04:58.533  INFO 21088 --- [  restartedMain] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
2019-10-09 12:04:58.777  INFO 21088 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
2019-10-09 12:04:59.122  INFO 21088 --- [  restartedMain] c.h.h.HazelcastCacheRegionFactory        : Starting up HazelcastCacheRegionFactory
2019-10-09 12:04:59.124  INFO 21088 --- [  restartedMain] c.h.config.AbstractConfigLocator         : Loading 'hazelcast.xml' from the classpath.
2019-10-09 12:04:59.127  WARN 21088 --- [  restartedMain] c.h.config.AbstractXmlConfigHelper       : Name of the hazelcast schema location is incorrect, using default
2019-10-09 12:04:59.165  INFO 21088 --- [  restartedMain] com.hazelcast.instance.AddressPicker     : [LOCAL] [dev] [3.12.2] Prefer IPv4 stack is true, prefer IPv6 addresses is false
2019-10-09 12:04:59.949  INFO 21088 --- [  restartedMain] com.hazelcast.instance.AddressPicker     : [LOCAL] [dev] [3.12.2] Picked [10.29.47.243]:5703, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5703], bind any local is true
2019-10-09 12:04:59.950  INFO 21088 --- [  restartedMain] com.hazelcast.system                     : [10.29.47.243]:5703 [dev] [3.12.2] Hazelcast 3.12.2 (20190802 - e34b163) starting at [10.29.47.243]:5703
2019-10-09 12:04:59.950  INFO 21088 --- [  restartedMain] com.hazelcast.system                     : [10.29.47.243]:5703 [dev] [3.12.2] Copyright (c) 2008-2019, Hazelcast, Inc. All Rights Reserved.
2019-10-09 12:04:59.956  INFO 21088 --- [  restartedMain] c.h.s.i.o.impl.BackpressureRegulator     : [10.29.47.243]:5703 [dev] [3.12.2] Backpressure is disabled
2019-10-09 12:05:01.343  INFO 21088 --- [  restartedMain] com.hazelcast.instance.Node              : [10.29.47.243]:5703 [dev] [3.12.2] Creating MulticastJoiner
2019-10-09 12:05:01.348  INFO 21088 --- [  restartedMain] c.h.s.i.o.impl.OperationExecutorImpl     : [10.29.47.243]:5703 [dev] [3.12.2] Starting 4 partition threads and 3 generic threads (1 dedicated for priority tasks)
2019-10-09 12:05:01.349  INFO 21088 --- [  restartedMain] c.h.internal.diagnostics.Diagnostics     : [10.29.47.243]:5703 [dev] [3.12.2] Diagnostics disabled. To enable add -Dhazelcast.diagnostics.enabled=true to the JVM arguments.
2019-10-09 12:05:01.349  INFO 21088 --- [  restartedMain] com.hazelcast.core.LifecycleService      : [10.29.47.243]:5703 [dev] [3.12.2] [10.29.47.243]:5703 is STARTING
2019-10-09 12:05:01.473  INFO 21088 --- [  restartedMain] c.h.i.cluster.impl.MulticastJoiner       : [10.29.47.243]:5703 [dev] [3.12.2] Trying to join to discovered node: [10.29.47.243]:5701
2019-10-09 12:05:01.478  INFO 21088 --- [cached.thread-2] com.hazelcast.nio.tcp.TcpIpConnector     : [10.29.47.243]:5703 [dev] [3.12.2] Connecting to /10.29.47.243:5701, timeout: 10000, bind-any: true
2019-10-09 12:05:01.486  INFO 21088 --- [.IO.thread-in-0] com.hazelcast.nio.tcp.TcpIpConnection    : [10.29.47.243]:5701 [dev] [3.12.2] Initialized new cluster connection between /10.29.47.243:5701 and /10.29.47.243:51948
2019-10-09 12:05:01.487  INFO 21088 --- [.IO.thread-in-0] com.hazelcast.nio.tcp.TcpIpConnection    : [10.29.47.243]:5703 [dev] [3.12.2] Initialized new cluster connection between /10.29.47.243:51948 and /10.29.47.243:5701
2019-10-09 12:05:07.483  INFO 21088 --- [ration.thread-0] c.h.internal.cluster.ClusterService      : [10.29.47.243]:5701 [dev] [3.12.2] 

Members {size:2, ver:2} [
    Member [10.29.47.243]:5701 - bf933bd9-9214-4022-a104-514bc5f56267 this
    Member [10.29.47.243]:5703 - 9862ded6-c26d-4da8-929f-f8616a4bf633
]

2019-10-09 12:05:07.489  INFO 21088 --- [ration.thread-0] c.h.internal.cluster.ClusterService      : [10.29.47.243]:5703 [dev] [3.12.2] 

Members {size:2, ver:2} [
    Member [10.29.47.243]:5701 - bf933bd9-9214-4022-a104-514bc5f56267
    Member [10.29.47.243]:5703 - 9862ded6-c26d-4da8-929f-f8616a4bf633 this
]

2019-10-09 12:05:08.481  WARN 21088 --- [  restartedMain] com.hazelcast.instance.Node              : [10.29.47.243]:5703 [dev] [3.12.2] Config seed port is 5701 and cluster size is 2. Some of the ports seem occupied!
2019-10-09 12:05:08.482  INFO 21088 --- [  restartedMain] c.h.i.m.ManagementCenterService          : [10.29.47.243]:5703 [dev] [3.12.2] Hazelcast will connect to Hazelcast Management Center on address: 
http://localhost:8080/hazelcast-mancenter
2019-10-09 12:05:08.487  INFO 21088 --- [  restartedMain] com.hazelcast.core.LifecycleService      : [10.29.47.243]:5703 [dev] [3.12.2] [10.29.47.243]:5703 is STARTED
如何解决每个应用程序实例有两个成员的问题?每个实例有两个成员的实际用途吗

@Mesut的解决方案 我在Spring Boot的
application.properties
文件中添加了以下语句(配置可以放在其他地方)

您还必须创建一个名为“您的实例名”的bean。在Spring Boot中,这可以通过注释一个方法来实现,该方法返回一个带有
@Bean
的Hazelcast实例。这可以在主类或
@Configuration
类中完成

@Bean
public Config hazelcastConfig() {
    Config config = new Config();
    config.setInstanceName("your-instance-name");
    config.setProperty("hazelcast.phone.home.enabled", "false");
    return config;
}

@Bean
public HazelcastInstance hazelcastInstance(Config config) {
    return Hazelcast.newHazelcastInstance(config);
}

这导致应用程序的每个实例只有一个成员(非常好)。但是,与管理中心的连接不再起作用(在我的情况下没有那么重要)。

如果要共享同一个实例,应该在hibernate配置和
hazelcast.xml
中使用相同的实例名称

hibernate.cache.hazelcast.instance\u name
是hibernate端的配置参数


您可以查看文档以了解更多信息。

建议有效。我必须在配置中指定名称,并创建一个具有该名称的bean。但是,我无法再连接到管理中心。我用你的解决方案更新了我的问题。MC有什么问题?通常,您在hazelcast配置中指定MC URL,就是这样。MC不显示任何连接。但是,当我创建应用程序的多个实例并连接到MC时,MC显示它不支持免费版中的多个实例。MC通常免费支持最多3个Hazelcast成员。我建议您创建一个github问题,包括所有配置、版本和错误屏幕截图。我想知道你是否知道是什么原因导致管理中心停止工作。我遇到了同样的问题。
spring.jpa.properties.hibernate.cache.hazelcast.instance_name=your-instance-name
@Bean
public Config hazelcastConfig() {
    Config config = new Config();
    config.setInstanceName("your-instance-name");
    config.setProperty("hazelcast.phone.home.enabled", "false");
    return config;
}

@Bean
public HazelcastInstance hazelcastInstance(Config config) {
    return Hazelcast.newHazelcastInstance(config);
}