【问题标题】:Hazelcast: can I configure a hazelcast client to connect only to a single lite member of the cluster?Hazelcast:我可以将 hazelcast 客户端配置为仅连接到集群的单个 lite 成员吗?
【发布时间】:2016-04-04 17:12:34
【问题描述】:

我有一个 Hazelcast 集群,由 2 个正式成员和一个 Lite 成员组成,启用了多播。我想将多个 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 成员在这里成为单点故障的事实,整个系统不会受到影响。

【问题讨论】:

  • 我不认为我有任何最初的想法。我似乎错过了一个重要的事实。我知道您希望在与客户端相同的主机上拥有一个 lite 成员。客户端只连接到轻量级成员,但轻量级成员将连接到所有其他成员。你想无缘无故地添加一个额外的网络跃点,没有可行的用途,也没有节省网络连接:-)我真的错过了这个想法,你能澄清一下吗? PS:下面的 groupconfig 东西不起作用
  • @noctarius:客户端确实只会连接到 lite 成员,但 lite 成员不需要连接到集群成员。至少不经常,因为这个 lite 成员会一次从集群加载大量数据,很可能是在启动时(或配置近客户端)。这主要是只读数据,因此在 lite 成员中很少发生失效。客户端主机正在运行大约 32 个进程,所有进程都连接到在同一主机上运行的 lite 成员。因此,在大多数情况下,这 32 个进程只会在本地连接到 lite 成员。
  • @noctarius:我还没有机会测试 groupconfig - 有了我上面添加的详细信息,你仍然认为它不起作用吗?
  • Lite 成员是不存储任何数据的集群成员。因此,您的“精简成员”很可能是在将所有数据读入本地缓存后断开连接的客户端。我假设这是一个 Hazelcast 客户端(从集群中读取数据)和一个本地 EHcache 存储进程中的数据的组合。在这种情况下,我仍然不明白您认为 lite 成员的用例是什么 :) PS:不,仍然认为它不会起作用。它将形成两个集群,一个用于数据成员,而 lite 成员是单独的,永远不能访问另一个集群,而不是客户端。

标签: hazelcast


【解决方案1】:

如果您在客户端将智能路由设置为 false 并且仅在客户端配置 lite 成员,则客户端将仅连接到 lite 成员。 见http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#setting-smart-routing

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

【讨论】:

  • 禁用智能路由似乎确实有效,谢谢!我将其设置为已接受的答案,因为它与问题完全相关。但与此同时,我已经放弃了 Lite 成员并使用了不同的配置。
【解决方案2】:

我认为您可以为此目的使用GroupConfig。 来自 JavaDoc:

使用组可以创建多个集群,其中每个集群都有自己的组并且不会干扰其他集群。

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

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

Group Config Doc

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

【讨论】:

  • 我明白了,感谢您的提示,肯定会测试 GroupConfig,看起来应该可以完成这项工作。
猜你喜欢
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多