用于高可用性的动态缓存集群

NCache 具有基于对等架构的自我修复动态缓存集群,可提供 100% 的正常运行时间。 这是一个基于 TCP 的集群,其中没有主/从节点,而是集群中的每个服务器都是对等点。 这允许您在运行时从集群中添加或删除任何缓存服务器,而无需停止缓存或您的应用程序。

点对点架构(自我修复)

NCache 集群具有点对点架构。 这意味着没有主/从节点,每个服务器都是对等的。 有一个集群协调器节点是集群中最老的节点。 如果集群协调器节点出现故障,则下一个最旧的节点将自动成为协调器。

Cluster Coordinator 管理所有与集群相关的操作,包括添加或删除节点时的集群成员资格、分配图 分区缓存 / 分区副本缓存 拓扑和其他缓存配置信息。 Cluster Coordinator 还管理集群运行状况,并强制删除与集群中所有其他服务器部分连接的任何缓存服务器。

动态缓存集群

动态聚类

NCache 有一个 动态集群架构. 这意味着你可以 或从集群中删除任何缓存服务器而不停止缓存或应用程序。 无论何时添加或删除缓存服务器,集群成员身份都会在运行时立即更新,并传播到集群中的所有服务器以及连接到集群的所有客户端。 此运行时更新和传播允许 NCache 即使进行此类更改,也始终保持正常运行。

动态集群允许您执行以下操作:

  • 在运行时添加/删除缓存服务器: 无需停止缓存或您的应用程序
  • 集群成员: 在运行时更新并传播到集群中的所有服务器和连接到集群的所有客户端。

动态客户端连接

NCache 还允许您添加或删除 缓存客户端 在运行时不停止缓存或其他客户端。 添加客户端时,该客户端只需要知道集群中要连接的任何一台缓存服务器。 一旦连接到该服务器,它就会接收集群成员资格和缓存拓扑信息,并根据这些信息决定连接到哪些其他服务器。

  • 在运行时添加/删除客户端: 无需停止缓存或您的应用程序。
  • 分区缓存/分区副本缓存: 客户端连接到所有缓存服务器中的所有分区(不是副本,因为分区与其副本对话)。 这允许客户端直接到数据所在的位置进行读取和写入。 并且,如果将新服务器添加到集群中,客户端会收到更新的集群成员信息,然后也会连接到这个新添加的缓存服务器。
  • 复制缓存: 在壳体的 复制缓存,客户端只连接到集群中的一个缓存服务器,但以负载平衡的方式确保所有缓存服务器具有相同数量的客户端。 客户端从该缓存服务器获取负载平衡信息,然后根据需要重新连接到适当的缓存服务器。 客户端只连接到一个缓存服务器,因为每个服务器都有整个缓存,所以所有的读取和写入都可以在那里进行。
  • 镜像缓存: 在壳体的 镜像缓存,客户端只连接到这个 2 节点集群中的活动节点。 如果客户端连接到被动节点,被动节点会告诉客户端主动节点,客户端会自动重新连接到主动节点。 如果主动节点宕机而被动节点变为主动节点,所有客户端都会自动连接到新的主动节点。
动态客户端连接

动态配置

NCache 还提供缓存和客户端的动态配置。 目的是允许您稍后在缓存运行时进行更改,而无需停止缓存或您的应用程序。

  • 在运行时传播到所有服务器和客户端: 这包括所有配置及其更改以及分布图。
  • 缓存配置: 当通过管理工具创建缓存配置时,此配置信息将复制到当时已知的所有缓存服务器。 并且,在运行时添加的任何新服务器都会收到整个缓存配置并将其复制到其本地磁盘。
  • 热应用配置更改: 您可以在运行时通过“热申请"的特点 NCache. 当您这样做时,更新的配置信息会在运行时传播到所有缓存服务器并保存在它们的磁盘上。 该信息的一部分也会发送给与其需求相关的所有客户。
  • 分布图(分区/分区副本缓存): 这是在缓存启动时创建的,然后复制到所有缓存服务器和缓存客户端。 此分布图包含有关哪些存储桶(在集群缓存中总共 1000 个存储桶中)位于哪个分区上的信息。

集群内的连接故障转移

集群中的所有缓存服务器都通过 TCP 相互连接。 而且,每个缓存服务器都连接到集群中的所有其他缓存服务器,包括在运行时添加的任何新服务器。 NCache 提供各种方法来确保集群内的任何连接在连接中断的情况下仍保持活动状态。 连接中断通常是由于路由器或防火墙引起的网络故障或网卡或网络驱动程序的问题而发生的。

  • 连接重试: 如果两个缓存服务器之间的连接中断, NCache 服务器自动进行多次重试以建立此连接。 这些重试一直进行到“超时”时间用完为止。 在大多数情况下,这会重新建立连接。
  • 保活心跳: NCache 还有一个功能是让每个缓存服务器不断向所有其他服务器发送一些小数据包作为心跳。 这确保了如果存在网络套接字损坏问题,缓存服务器将知道它并通过重试来修复它。
  • 部分连接的服务器: 尽管重试,有时连接未在超时期限内恢复,并且缓存服务器假定一个或多个其他缓存服务器已关闭。 因此,它在没有它们的情况下继续工作。 但是,实际上其他服务器并没有关闭,实际上集群中的其他一些服务器可以看到。 这称为部分连接的服务器。 发生这种情况时,集群协调器会记下这一点,并从集群中强制删除“部分连接”服务器。 通过这样做,集群再次变得健康。 并且,被移除的服务器可以通过人工干预重新加入集群。

与客户端的连接故障转移

根据缓存拓扑,所有缓存客户端都通过 TCP 连接到集群中的一个或多个缓存服务器。 对于分区/分区副本缓存,每个客户端都连接到所有缓存服务器。 对于复制缓存,每个客户端通常通过缓存服务器使用的负载平衡算法仅连接到一个缓存服务器。 而且,对于镜像缓存,所有客户端仅连接到主动节点,并且仅在主动节点关闭并且被动节点变为主动节点时连接到被动节点。

  • 连接重试: 如果客户端和缓存服务器之间的连接中断, NCache 客户端自动执行多个 连接重试 建立这个连接。 这些重试一直进行到“超时”时间用完为止。 在大多数情况下,这会在客户端应用程序甚至没有注意到它的情况下重新建立连接。 如果无法建立连接,则会向客户端应用程序抛出异常,以便它可以处理它。
  • 保活心跳: NCache 还有一个功能是让每个客户端不断发送一些小数据包作为 心跳 到它连接到的所有缓存服务器。 这确保了如果存在网络套接字损坏问题,客户端将知道它并通过连接重试来修复它。
  • 部分连接的客户端(分区/分区副本缓存): 尽管重试,但有时连接未在超时期限内恢复,并且缓存客户端假定它无法访问一个或多个其他缓存服务器,即使它们可能没有关闭。 因此,在分区/分区副本缓存的情况下,它与其他服务器交互以读取或写入所有数据,即使它的分布图告诉它它无法与之通信的服务器拥有数据。 在这种情况下,其他缓存服务器充当中介以成功执行操作。
  • 与服务器断开连接(复制/镜像缓存): 在复制缓存的情况下,客户端仅与一台服务器连接,如果此连接中断,客户端将自动连接到其他缓存服务器之一。 在镜像缓存的情况下,如果客户端无法连接到主动节点,则它假定它已关闭并尝试连接到被动节点。

接下来做什么?

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。