【问题标题】:Java Hazelcast problems with multiple clusters多个集群的 Java Hazelcast 问题
【发布时间】:2011-11-22 22:16:14
【问题描述】:

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

根据documentation ,您只需要为两个集群使用单独的组名+密码,我觉得这两个集群应该自动排序!?这似乎适用于服务器模块,但是当我尝试将“客户端”实例连接到 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 进行了身份验证!

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

【问题讨论】:

    标签: java cluster-computing hazelcast


    【解决方案1】:

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

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

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

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

    我说得有道理吗?

    【讨论】:

    • 当然。说得通。我现在的时间有点短,但我会在下周初测试你的建议并回复。非常感谢 Fuad 的快速回答。
    • 你是对的。我的客户端中有使用默认配置“dev”启动成员的代码。我最终将我的客户切换到超级客户,因为这对我来说似乎更容易解决。我的核心模块(成员)需要了解连接的客户端,并且本机客户端对成员“似乎不太明显”。无论哪种方式,超级客户端实现都可以很好地满足我的目的。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多