我目前正在阅读有关分布式系统的内容,我面临着两个不同但描述方式相似的术语:复制和冗余。
有人可以逐一解释这两个术语吗?
我目前正在阅读有关分布式系统的内容,我面临着两个不同但描述方式相似的术语:复制和冗余。
有人可以逐一解释这两个术语吗?
"复制是冗余节点之间状态同步的过程。"
冗余: 重要组件(节点、进程)的复制,旨在实现可靠性。冗余有助于避免单点故障。例如,如果我们有两个运行实例,其中一个失败了,那么系统可以切换到另一个实例。
复制: 共享信息以确保冗余资源之间的一致性。
冗余可以提高可靠性,而复制则确保一致性。
在学习系统设计时,我对这些词感到困惑,但后来我从这里找到了一个简单的解释。
当你复制某物时,你得到的是一个几乎与原始物品相同但不完全相同的副本。通常原始物品和副本之间会有一些差异。例如,原始物品和其副本可以具有不同的大小。因此,复制背后的思想是,副本至少在其身份方面总是略微不同于原始物品。
至于另一个术语,复制过程的结果是一个副本,它是原始物品在所有方面上的完全相同的复制品。如果你复制房子的钥匙,那么副本将在所有方面上与原始钥匙完全相同。这意味着某物的副本与原件一样好,并且可以完全替代它,而这通常对副本不成立。
冗余性
是创建容错系统的术语。冗余性是指在系统中保留冗余容量(备份)以增加其可靠性。除了主要容量外,还保留了一种备用容量作为备份。
为了创建一个容错系统,我们有以下步骤:
提供冗余性
以自动化的方式构建系统,可以检测到发生的故障
然后利用已提供的冗余性来恢复检测到的故障
有三种类型的冗余性:
1- 主动冗余性(热备份)
例如,飞机上的备用引擎。主引擎和备用引擎同时运行,如果主引擎故障,我们的系统将切换到备用引擎。
2- 被动冗余性(温备份):
就像足球比赛中的替补球员。它不像主动冗余那样快速。
3- 冷备份冗余(备份):
汽车备用轮胎。这会有显著的时间延迟。
复制
是数据库设计中使用的术语。它是减少延迟的数据复制过程。
在数据库设计中,最常见的设计是主/从
设计。主节点用于写入数据,而从节点用于用户读取数据。如果主节点出现故障,我们的系统将把从节点分配为主节点。正如您所看到的,我们在这里具有冗余性,以防发生故障,我们会分配另一个组件来接管。
在同步复制
(原子)中,客户端将数据写入主节点后,相同的数据将传递到从节点。如果两个事务都成功,则提交此事务,否则,所有内容都将回滚以更改状态将导致更多的事务。这具有更高的延迟,但我们的主数据库和从数据库始终保持同步。因此,当主数据库崩溃时,从数据库将切换为主数据库,并且此操作将非常快速。这类似于飞机引擎的例子。通过同步复制,我们具有主动-主动冗余
。