我很难理解replica
Docker Swarm Mode 中实例的概念。我读过它是一个有助于高可用性的功能。
但是,即使为服务定义了 1,如果一个节点出现故障,Docker 也会自动在另一个节点上启动一个新任务replica
,这也提供了高可用性。
replica
那么对于任意服务来说,拥有 3 个实例而不是 1 个实例有什么好处呢?我的假设是,有了更多的副本,Docker 在发生故障时花费更少的时间在另一个节点上创建新实例,这有助于提高性能。它是否正确?
我很难理解replica
Docker Swarm Mode 中实例的概念。我读过它是一个有助于高可用性的功能。
但是,即使为服务定义了 1,如果一个节点出现故障,Docker 也会自动在另一个节点上启动一个新任务replica
,这也提供了高可用性。
replica
那么对于任意服务来说,拥有 3 个实例而不是 1 个实例有什么好处呢?我的假设是,有了更多的副本,Docker 在发生故障时花费更少的时间在另一个节点上创建新实例,这有助于提高性能。它是否正确?
高可用性的目标之一是消除基础架构中的单点故障。单点故障是技术堆栈的一个组件,如果它变得不可用会导致服务中断。
让我们以包含单个实例的副本为例。现在让我们假设有一个失败。Docker Swarm 会注意到服务失败并重新启动它。服务重新启动,但重新启动不是即时的。假设重新启动需要 5 秒。在这 5 秒内,您的服务不可用。单点故障。
如果您有一个包含 3 个实例的副本怎么办。现在,当其中一个失败(没有服务是完美的)时,Docker Swarm 会注意到其中一个实例不可用并创建一个新实例。在此期间,您仍有 2 个运行良好的实例为请求提供服务。对于您的服务的用户来说,似乎没有停机时间。该组件不再是单点故障。
ROMANARMY 的回答非常好,我只想提一下,副本可以位于不同的节点上,因此如果您的一台服务器出现故障(变得不可用),另一台服务器上的容器(副本)可以毫无问题地运行。