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