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 集群中的服务器。客户端执行请求平衡,如下所示:
使用分布感知智能的客户端仅对失败的请求使用请求平衡。当请求失败时,分发感知客户端会在下一个可用服务器上重试请求。
自定义平衡策略
您可以实现 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 客户端可以故障转移,但您应该使用事务缓存来确保操作不会部分完成,并在不同的节点上保留冲突的条目。