2.3. 客户端 Intelligence


热 Rod 客户端智能是指查找用于高效路由请求的数据网格服务器的机制。

基本智能

客户端不存储任何有关 Data Grid 集群或密钥哈希值的信息。

topology-aware

客户端接收和存储有关 Data Grid 集群的信息。客户端维护集群拓扑的内部映射,该映射会在服务器加入或离开集群时进行更改。

要接收集群拓扑,客户端需要启动时至少一个 Hot Rod 服务器的地址(IP:HOST)。客户端连接到服务器后,Data Grid 将拓扑传送到客户端。当服务器加入或离开集群时,Data Grid 将更新的拓扑传输到客户端。

分发感知

客户端是拓扑感知型,并存储键的一致性哈希值。

例如,使用 put (k,v) 操作。客户端计算键的哈希值,以便它可以找到数据所在的确切服务器。然后,客户端可以直接连接到所有者来分配操作。

分发情报的好处在于,Data Grid 服务器不需要根据键哈希查找值,这在服务器端使用较少的资源。另一个好处是,服务器可以更快地响应客户端请求,因为它跳过了额外的网络往返。

2.3.1. 请求负载平衡

使用拓扑感知智能的客户端对所有请求使用请求平衡。默认平衡策略是 round-robin,因此拓扑感知客户端始终以轮循顺序向服务器发送请求。

例如,s1、 s2、 s3 是 Data Grid 集群中的服务器。客户端执行请求平衡,如下所示:

CacheContainer cacheContainer = new RemoteCacheManager();
Cache<String, String> cache = cacheContainer.getCache();

//client sends put request to s1
cache.put("key1", "aValue");
//client sends put request to s2
cache.put("key2", "aValue");
//client sends get request to s3
String value = cache.get("key1");
//client dispatches to s1 again
cache.remove("key2");
//and so on...
Copy to Clipboard Toggle word wrap

使用分布感知智能的客户端仅对失败的请求使用请求平衡。当请求失败时,分发感知客户端会在下一个可用服务器上重试请求。

自定义平衡策略

您可以实现 FailoverRequestBalancingStrategy,并使用以下属性在 hotrod-client.properties 配置中指定您的类:

infinispan.client.hotrod.request_balancing_strategy

2.3.2. 客户端故障切换

当 Data Grid 集群拓扑更改时,热 Rod 客户端可以自动进行故障转移。例如,具有拓扑感知的 Hot Rod 客户端可以检测一个或多个数据网格服务器何时失败。

除了集群数据网格服务器之间故障转移外,Hot Rod 客户端还可在 Data Grid 集群之间进行故障转移。

例如,您有一个 Data Grid 集群在 New York (NYC)中运行,另一个集群在伦敦(LON)中运行。向 NYC 发送请求的客户端检测到没有可用的节点,以便它们在 LON 中切换到集群。然后,客户端会维护到 LON 的连接,直到您手动切换集群或故障转移再次发生。

带有故障切换的事务缓存

条件操作(如 putIfAbsent (), replace (), remove () )具有严格的方法返回保证。同样,一些操作可能需要返回前面的值。

虽然 Hot Rod 客户端可以故障转移,但您应该使用事务缓存来确保操作不会部分完成,并在不同的节点上保留冲突的条目。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部