1.2. 客户端 Intelligence


热 Rod 客户端使用智能机制将请求高效地发送到 Data Grid Server 集群。默认情况下,Hot Rod 协议启用了 HASH_DISTRIBUTION_AWARE 智能机制。

BASIC 智能

客户端不会接收 Data Grid 集群的拓扑更改事件,如加入或离开节点,并且仅使用您添加到客户端配置中的数据网格服务器网络位置列表。

注意

当数据网格服务器没有向 Hot Rod 客户端发送内部和隐藏集群拓扑时,启用 BASIC 智能来使用 Hot Rod 客户端。

TOPOLOGY_AWARE 智能

客户端接收和存储 Data Grid 集群的拓扑更改事件,以动态跟踪网络上的 Data Grid 服务器。

要接收集群拓扑,客户端在启动时需要至少一个 Hot Rod 服务器的网络位置(IP 地址或主机名)。客户端连接后,Data Grid 服务器会将拓扑传输到客户端。当 Data Grid Server 节点加入或离开集群时,Data Grid 会将更新的拓扑传输到客户端。

HASH_DISTRIBUTION_AWARE 智能

除了哈希信息外,客户端还会接收和存储 Data Grid 集群的拓扑更改事件,以便客户端识别存储特定密钥的节点。

例如,考虑一个 put (k,v) 操作。客户端计算键的哈希值,以便它可以找到数据所在的确切的 Data Grid Server 节点。然后,客户端可以直接连接到该节点来执行读写操作。

HASH_DISTRIBUTION_AWARE 智能的好处是,数据网格服务器不需要根据密钥哈希查找值,这使用较少的服务器端资源。另一个好处是数据网格服务器可以更快地响应客户端请求,因为它们不需要创建额外的网络往返。

配置

默认情况下,Hot Rod 客户端使用您全局为所有 Data Grid 集群配置智能功能。

ConfigurationBuilder

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.clientIntelligence(ClientIntelligence.BASIC);
Copy to Clipboard Toggle word wrap

hotrod-client.properties

infinispan.client.hotrod.client_intelligence=BASIC
Copy to Clipboard Toggle word wrap

当您将 Hot Rod 客户端配置为使用多个 Data Grid 集群时,您可以为每个集群使用不同的情报。

ConfigurationBuilder

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.addCluster("NYC").clusterClientIntelligence(ClientIntelligence.BASIC);
Copy to Clipboard Toggle word wrap

hotrod-client.properties

infinispan.client.hotrod.cluster.intelligence.NYC=BASIC
Copy to Clipboard Toggle word wrap

服务器超时失败

如果服务器没有将拓扑报告为 BASIC,或者客户端因为网络问题而无法连接到服务器,客户端会将服务器标记为失败。客户端不会尝试连接到标记为失败的服务器,直到客户端收到更新的拓扑为止。因为 BASIC 拓扑永远不会发送更新,所以客户端不会重新尝试连接。

为避免这种情况,您可以使用 serverFailureTimeout 设置,该设置在指定的时间段内清除失败的服务器状态。在定义的超时后,Data Grid 将尝试重新连接服务器。如果服务器仍然无法访问,则再次将其标记为失败,并在定义的超时后重新尝试连接。您可以通过将 serverFailureTimeout 值设置为 -1 来禁用重新连接尝试。

ConfigurationBuilder

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.serverFailureTimeout(5000).clusterClientIntelligence(ClientIntelligence.BASIC);
Copy to Clipboard Toggle word wrap

hotrod-client.properties

infinispan.client.hotrod.server_failure_timeout=5000
infinispan.client.hotrod.client_intelligence=BASIC
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat