2

我正在运行一个小型系统,该系统依赖于 Hazelcast 以多播模式进行集群、分布式计算和消息传递(标准配置可在下载中获得)。我有许多作为“核心”Hazelcast 实例运行的服务器模块和一个作为 Hazelcast“本机客户端”实现的 Java Swing 应用程序。这一切都很好,我现在想在生产中调试系统,因此需要运行两个单独的集群(dev + prod),这就是我遇到问题的地方。

根据文档,您只需为两个集群使用单独的组名+密码,我的印象是两个集群应该自动排序!?这似乎适用于服务器模块,但是当我尝试将“客户端”实例连接到 prod 环境时,我可以从 prod 中的一个服务器模块的日志中看到客户端似乎连接成功:

INFO: [prod] received auth from Connection [/192.168.0.2:55863 -> null] live=true,
client=true, type=JAVA_CLIENT, this group name:prod, auth group name:prod, 
successfully authenticated

但是,客户从未以 prod 成员的身份出现。相反,我发现客户端已成为开发环境的成员,即使针对 prod 进行了身份验证!

两个集群的非自愿混合显然对我和一个表演者来说是一个巨大的问题。有谁知道我做错了什么,或者我可以做任何配置更改来解决问题?

4

1 回答 1

5

当客户端连接到集群时,它永远不会成为集群的成员。

所以我怀疑你的客户端确实连接到了产品,但不知何故,在你的代码中,你有类似 Hazelcat.getMap() 的东西,这会导致在该 JVM 中启动一个成员,并且由于该成员将使用的默认配置将与开发人员,这个新成员将加入您的开发集群。

所以实际上你有一个客户端,它连接到 prod 和另一个连接到 dev 集群的成员。

尝试通过客户端放置一些东西,看看这些条目出现在哪个集群中?

我说得有道理吗?

于 2011-05-20T13:46:00.450 回答