复制拓扑
NCache 它提供复制拓扑结构,确保用户数据不会丢失——即使多个服务器同时发生故障。在集群中,如果所有服务器节点都拥有相同的数据副本,即可实现高可用性。这意味着集群可以承受几个节点的故障而不会丢失数据。 复制拓扑 该系统允许用户拥有多台服务器,每台服务器都存储着相同的数据副本。因此,每台服务器都是彼此的精确复制品。所以,即使多台服务器同时发生故障,也不会造成任何数据丢失。

同步复制以实现数据一致性
每当客户端执行写操作时(增加, 更新 或 移除了),此操作会在整个集群中广播,以便在所有缓存服务器上复制此操作,然后再将控制权返回给客户端。接收来自客户端的操作的服务器负责广播这些操作。在此过程中, 序列标记 取自 协调服务器 并与当前操作关联,以确保在所有服务器上按相同顺序执行此操作,从而实现数据一致性。
如果广播写入操作在任何缓存服务器上失败,它的失败也会广播到所有缓存服务器以删除此数据。 这样做是为了在整个集群中实现数据一致性,这意味着如果缓存中存在数据,则所有服务器都具有相同的数据。
由于复制是同步完成的,这意味着此拓扑不适合写入操作,因为更多服务器需要更多时间将数据复制到所有缓存服务器,然后再将控制权返回给写入应用程序。 如果您不想体验写入操作性能的任何下降,建议将集群大小限制为 3 个服务器。
协调器服务器的角色
此 协调服务器 (最高级的服务器节点)执行多项任务,例如 状态转移, 后写操作, 数据失效如 到期等等。在决定从缓存中移除任何项目后,它会请求所有其他节点也从它们的缓存存储中移除这些项目。当 协调服务器 离开集群后,下一个级别最高的服务器将成为下一个服务器。 协调服务器 并恢复其职责。
读取操作的线性可扩展性
由于所有服务器都具有相同的数据,并且客户端分布在所有缓存服务器之间。 因此,每台服务器都向客户端提供相同的数据。 集群中更多的服务器意味着同时处理更多的数据读取请求。
连接负载平衡
复制拓扑有一个特殊功能, 自动平衡客户端连接 服务器之间共享缓存服务器之间的数据负载。 当客户端与服务器连接时,该服务器会验证所有其他服务器节点是否也具有相同数量的客户端。 如果其他服务器的客户端较少,它会优雅地拒绝客户端连接请求并将其重定向到其他服务器。 这样,所有服务器都具有相同数量的客户端,并且与其他缓存服务器相比,没有服务器因更多客户端而负担过重。
客户端连接
在复制拓扑中,客户端一次仅与集群中的一台服务器连接。 如果连接的服务器出现故障,客户端会自动与集群中的另一台服务器连接,无需任何人工干预。
数据同步和状态转移
当节点加入或离开集群时,会触发状态转移。在集群中任何节点进行状态转移期间,不允许其他节点加入或离开集群。
此限制适用于所有节点,即使是那些未直接参与状态转移的节点。例如,在一个三节点集群中,如果节点 3 正在进行状态转移,则节点 2 必须等到节点 3 的状态转移完成后才能离开集群。同样,在当前状态转移完成之前,任何其他节点都不能加入集群。
当节点离开集群触发状态转移时,由于所有节点的数据已经完全相同,因此转移过程非常简便。然而,当新节点加入集群时,它必须将其缓存与集群中的其他节点同步。为此,新加入的节点会向协调器服务器请求完整的缓存数据集。由于所有状态转移都由协调器管理,因此协调器会维护必要的同步信息,以确保每个节点都能正确同步。