根据我对 jboss 文档的阅读,它说,
我们将高可用性定义为系统在一台或多台服务器发生故障后继续运行的能力。高可用性的一部分是故障转移,我们将其定义为在服务器发生故障时客户端连接从一台服务器迁移到另一台服务器的能力,以便客户端应用程序可以继续运行。
故障转移是高可用性的一部分吗?我们如何区分故障转移与高可用性?
根据我对 jboss 文档的阅读,它说,
我们将高可用性定义为系统在一台或多台服务器发生故障后继续运行的能力。高可用性的一部分是故障转移,我们将其定义为在服务器发生故障时客户端连接从一台服务器迁移到另一台服务器的能力,以便客户端应用程序可以继续运行。
故障转移是高可用性的一部分吗?我们如何区分故障转移与高可用性?
故障转移是实现高可用性 (HA) 的一种方式。将 HA 视为一项功能,将故障转移视为该功能的一种可能实现。在实现 HA 时,故障转移并不总是唯一的考虑因素。
例如,Cassandra 通过复制实现 HA,但可用性的程度由数据一致性设置决定。本质上,这些设置决定了需要多少节点响应操作(读取或写入)才能成功。需要更多节点来响应意味着更少的可用性,而需要更少的节点意味着更高的可用性。严格来说,这是一个与故障转移无关的 HA 示例。
高可用性
指服务器系统以某种方式容忍故障的事实。大多数情况下,这是通过硬件冗余完成的。假设一台机器有冗余电源,如果一个出现故障,机器将继续运行。
故障转移
然后你有应用程序冗余(故障转移),这通常是指在多个硬件安装上运行的应用程序能够以一致的方式从任何这些硬件安装响应客户端。这样,如果硬件完全失败,或者特定机器上的 O/S 死机,另一台机器可以继续运行。
SQL Server 以四种方式处理应用程序冗余:
高可用性(简称 HA)是一个广义的术语,所以当我想到它时,我倾向于认为是HA 集群。
来自维基百科高可用性集群:
高可用性集群是支持服务器应用程序的计算机组,可以在最短的停机时间内可靠地利用这些应用程序。它们通过使用高可用性软件来利用组或集群中的冗余计算机来运行,从而在系统组件发生故障时提供持续的服务。如果没有集群,如果运行特定应用程序的服务器崩溃,该应用程序将不可用,直到崩溃的服务器得到修复。
因此,从上面的描述中得出的结论是,HA 集群将在故障转移期间为您提供最少的停机时间。让我解释一下HA 集群可以为您提供的两种故障转移:
Hot-Hot / Active-Active:冗余计算机真正并行运行,产生完全相同的状态和完全相同的输出。它们都是活动节点,作为彼此的完美镜像运行。在这种情况下,您的故障转移停机时间为零,您可以简单地从集群中的任何机器上拔下电源插头,而不会造成任何停机或服务中断。
Hot-Warn / Active-Passive:只有一台主计算机是主动计算机,而集群中的其他计算机正在被动地重建与主计算机相同的状态。当主计算机发生故障时,它必须被禁用或终止(自动或由操作员),然后集群中的被动计算机需要激活(自动或由操作员)。
那么问题是什么?问题是,可以在 HA 集群中运行的应用程序的设计并非易事,因为它们需要是真正的确定性有限状态机。一个典型的问题是当您的应用程序需要使用时钟来根据时间构建状态时,因为时钟本质上是非常不确定的。
免责声明:我是 CoralSequencer 的开发者之一。