镜像缓存拓扑
在镜像拓扑中,缓存集群不能有两个以上的节点。同一时刻,两个节点中只有一个作为主动节点,另一个作为被动节点。被动节点也称为备份节点,可减少单点故障。当主动节点出现故障时,被动节点将承担主动节点的角色,这可确保此拓扑中不存在单点故障。读写操作均在主动节点上执行,然后写入操作异步复制到备份或被动节点。然而,这种拓扑中的复制程度仅限于一个节点,这与复制拓扑不同,在复制拓扑中我们可以有多个副本。
备注
此功能也可用于 NCache Professional.
镜像缓存集群适用于缓存预计用户负载不会增长的少量数据。 由于所有客户端操作仅在集群的活动节点上执行,因此拓扑对于读取或写入操作均不可扩展。 但是,拓扑确实通过复制到备份节点提供了某种高可用性。 当主动节点离开集群时,被动节点自动接管主动节点的角色,所有客户端应用程序开始与这个新的主动节点通信。
镜像缓存中的活动节点选择
集群的最高级节点被认为是集群的活动节点。 您也可以在集群停止或运行时选择活动节点,但如果您更改正在运行的集群的活动节点,则必须重新启动集群才能使更改生效。 一旦主动节点离开集群,对应的被动节点自动成为主动节点。 当先前的主动节点重新联机时,它会作为被动节点加入集群。
异步复制
客户端仅直接与集群的主动节点连接,而集群的第二个节点(被动节点)有主动节点的备份。 集群的主动节点负责维护被动节点上的备份。 主动节点上的所有写操作都通过后台队列复制到被动节点。 每个写入操作都会排队,专用后台线程从该队列中分块选取数据并将其复制到被动节点。 客户端在主节点上成功执行写操作后立即得到响应。 该操作将排队并稍后复制到被动节点。
备注
应该注意的是,当操作从主动节点异步复制到被动节点时,客户端应用程序不会遇到任何性能下降。
由于数据复制是异步发生的,因此存在数据丢失的可能性。 如果活动节点发生故障而没有复制排队的操作,则会发生数据丢失。
协调服务器的角色
缓存集群的活动服务器节点充当协调服务器。 协调服务器负责执行多项任务,例如状态传输、后写操作、数据失效(过期和依赖项)等。在决定从缓存中删除任何项目后,它会询问另一个节点(被动节点)也将它们从缓存存储中删除。 当协调器服务器(主动节点)离开缓存集群时,被动节点成为协调器服务器并恢复其职责。
客户端连接
在镜像拓扑中,客户端仅连接到集群的主动节点。 这意味着,客户端连接在集群的被动节点上被阻止。 客户端不需要与集群的两个节点(主动和被动)建立连接,因为它们包含相同的数据。 如前所述,当主动节点宕机时,被动节点自动变为主动节点,客户端自动与其建立连接。
状态转移
当第二个节点加入镜像拓扑中的缓存集群时触发状态转移。 在这种情况下,协调服务器(主动节点)将其数据与第二个(被动)节点同步。