图3:使用多Proxy策略时扩展数据库
相反,如果我们在使用多Proxy策略时扩展数据库,会发生什么情况呢?在这种情况下,我们有多个 Proxy 在同一个端点后面运行。
(在 Redis Enterprise 中,也可以通过使用 OSS Cluster API 的形式扩展数据库。 在这种情况下,每个 Proxy 都有自己的端点)
图 3 显示了将一个双分片数据库扩展到一个四分片数据库。左侧的集群中添加了一个新节点,其中包含一个仍处于非活动状态的 Proxy。扩展完成后,分片 1 和分片 2 位于节点 1,分片 3 和分片 4 位于节点 2。这两个节点现在都包含启用的Proxy。
横向扩展也不会改变客户端连接数据库的方式,因为这些变化对客户端来说都是“透明”的,客户端无需关心集群内部的变化。数据库继续像以前一样向相同的数据库端点发送请求。处理每个请求的 Proxy 会将这些请求转发给相关的分片。
4.自动故障转移
Redis Enterprise 实现高可用性的一个关键在于自动故障转移,它依赖于数据复制。当检测到 Redis Enterprise 集群内出现故障时,无论是数据库分片中断还是整个节点失效,集群都能在几秒钟内实现自我修复。
修复过程由集群管理器执行,通常会改变集群内的数据库拓扑结构。Proxy 会收到通知,并根据新的拓扑结构进行调整。
而从数据库客户端的角度来看,没有任何变化。客户端将继续使用与以前相同的数据库端点,因为拓扑变化是隐藏在代理之后的内部变化。
下面我们来看两个故障转移示例
下面是个关于主分片故障转移的例子。