Hazelcast:我可以将 hazelcast 客户端配置为仅连接到集群的单个精简版成员吗?

Hazelcast: can I configure a hazelcast client to connect only to a single lite member of the cluster?

我有一个由 2 个正式成员和一个 Lite 成员组成的 Hazelcast 集群,启用了多播。我想将多个 Hazelcast (.NET) 客户端专门连接到 Hazelcast Lite 成员。问题是,即使我在客户端配置了这个 Lite 成员的地址和端口,我仍然看到从客户端到其他 2 个 Hazelcast 完整集群成员的连接:

<hazelcast-client>
    <network>
        <cluster-members>
            <address>10.28.0.106:5701</address>
        </cluster-members>
    </network>
    ...
</hazelcast-client>

这能做到吗?

想法是让 Lite 成员存储大量只读数据(将在 Lite 成员上启用近客户端)并且 运行 与客户端在同一台机器上所以访问速度会比客户端->集群连接快很多。

我们忽略这个Lite成员在这里成为单点故障的事实,整个系统不会受到影响。

我认为您可以使用 GroupConfig 来达到这个目的。 来自 JavaDoc:

With groups it is possible to create multiple clusters where each cluster has its own group and doesn't interfere with other clusters.

您应该为客户声明群组配置(2 次 - 对于 Lite 会员和正式会员)以及相应的 Lite 和正式会员。

<group>
    <name>liteGroup</name>
    <password>pswd1</password>
<group>
<group>
    <name>fullGroup</name>
    <password>pswd2</password>
<group>

看看Group Config Doc

如有任何问题,请随时与我联系。

如果在客户端设置智能路由为false,在客户端只配置lite member,客户端只会连接到lite member。 参见 http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#setting-smart-routing

但是当那个精简版成员死亡时,客户端将连接到其他节点之一。如果您希望您的客户端在与精简版成员断开连接时关闭,您可以在客户端使用生命周期监听器。当你看到 LifecycleEvent.LifecycleState.CLIENT_DISCONNECTED 事件调用 hazelcastClient.shutdown().