Java Hazelcast在运行时添加成员

Java Hazelcast在运行时添加成员,java,cluster-computing,hazelcast,Java,Cluster Computing,Hazelcast,我已经创建了一个集群 私有静态最终字符串IP_CLUSTER=“192.168.0.116:5701”; Config cfg=new Config(); //设置集群的IP地址 getNetworkConfig().getJoin().GetTcpConfig().addMember(IP_集群).setEnabled(true); cfg.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false); Hazelcas

我已经创建了一个集群

私有静态最终字符串IP_CLUSTER=“192.168.0.116:5701”; Config cfg=new Config(); //设置集群的IP地址 getNetworkConfig().getJoin().GetTcpConfig().addMember(IP_集群).setEnabled(true); cfg.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false); HazelcastInstance=Hazelcast.newHazelcastInstance(cfg); 现在我尝试使用hazelcast客户端连接这个集群

HazelcastInstance clientInstance=null;
试一试{
ClientConfig cfg=new ClientConfig();
ClientNetworkConfig cnc=cfg.getNetworkConfig();
//我要连接的群集的ip
cnc.addAddress(IP_集群);
clientInstance=HazelcastClient.newHazelcastClient(cfg);
}
捕获(例外e){
回来
}
当我尝试连接客户机时,我会在输出之后进入客户机

2017年6月19日晚上8:19:51 com.hazelcast.core.LifecycleService 资料:[192.168.0.116]:5701[dev][3.7.8][192.168.0.116]:5701 开始于2017年6月19日晚上8:19:56 com.hazelcast.nio.tcp.socketacceptor读取信息: [192.168.0.116]:5701[dev][3.7.8]接受来自的套接字连接 /192.168.0.116:60200 2017年6月19日晚上8:19:56 com.hazelcast.nio.tcp.TcpIpConnectionManager信息: [192.168.0.116]:5701[dev][3.7.8]已建立套接字连接 在2017年6月19日/192.168.0.116:5701和/192.168.0.116:60200之间 晚上8:19:56 com.hazelcast.client.impl.protocol.task.AuthenticationMessageTask 信息:[192.168.0.116]:5701[dev][3.7.8]已收到来自的验证 连接[id=1,/192.168.0.116:5701->/192.168.0.116:60200, endpoint=null,alive=true,type=JAVA\u CLIENT],成功 经认证的,委托人: 客户端主体{uuid='adaf4c23-a708-489b-9480-dfc7edf960ce', 所有者UID='02d591cc-b572-4e6e-8904-92bd0d8c3610',所有者连接: 正确,客户端版本:3.7.8 2017年6月19日晚上8:20:07 com.hazelcast.internal.partition.impl.PartitionStateManager 信息:[192.168.0.116]:5701[dev][3.7.8]正在初始化群集 分区表排列

表示->新成员已连接到群集。对吗

但当我要求计算集群上的成员数时,它总是
1

我哪里出错了?
如何将新成员(
Hazelcast实例
)添加到集群?

正如您所提到的,您已将Hazelcast客户端连接到(一个节点)集群。客户机只是客户机,而不是群集节点。将其想象为连接到数据库的JDBC客户机。要扩展集群,您需要启动其他Hazelcast成员

HazelcastInstance hz = Hazelcast.newHazelcastInstance(); // <- creates nodes

HazelcastInstance client = HazelcastClient.newHazelcastClient(); // <- creates a client

HazelcastInstance hz=Hazelcast.newHazelcastInstance();// 理解起来真的很奇怪,但很多时候

private static final String IP_CLUSTER = "192.168.0.116:5701";

Config cfg = new Config();
// set IP of cluster
cfg.getNetworkConfig().getJoin().getTcpIpConfig().addMember(IP_CLUSTER).setEnabled(true);
cfg.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);    
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
将有:

  • 第一次执行-创建集群并向其中添加一个节点
  • 每下一次执行—向现有集群添加一个节点

你好。你说得对。但是如何在
集群客户机上创建新实例呢?客户端上的配置不可编辑不确定我是否了解您的问题。我想将多个节点连接到群集。我有10台电脑在一个网络中。在其中一台上我创建了一个集群,在另一台上我想连接到集群,每台pc都应该有一个节点。只需创建更多节点并设置至少一个其他(可访问)节点的ip地址。这有什么奇怪的?您至少需要一个已知成员地址才能加入群集,也就是说,您启动的每个其他成员(并提交创建群集的第一个成员的地址)都将加入现有群集。