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