File tree 1 file changed +2
-2
lines changed
1 file changed +2
-2
lines changed Original file line number Diff line number Diff line change 17
17
18
18
现在我们将继续沿着同样的路线前进,寻求可以让应用忽略分布式系统部分问题的抽象概念。例如,分布式系统最重要的抽象之一就是** 共识(consensus)** :** 就是让所有的节点对某件事达成一致** 。正如我们在本章中将会看到的那样,尽管存在网络故障和流程故障,可靠地达成共识是一个令人惊讶的棘手问题。
19
19
20
- 一旦达成共识,应用可以将其用于各种目的。例如,假设你有一个单主复制的数据库。如果领导者挂掉 ,并且需要故障切换到另一个节点,剩余的数据库节点可以使用共识来选举新的领导者。正如在“[ 处理节点宕机] ( ch5.md#处理节点宕机 ) ”中所讨论的那样,重要的是只有一个领导者,且所有的节点都认同其领导。如果两个节点都认为自己是领导者,这种情况被称为** 脑裂(split brain)** ,且经常导致数据丢失。正确实现共识有助于避免这种问题。
20
+ 一旦达成共识,应用可以将其用于各种目的。例如,假设你有一个单主复制的数据库。如果主库挂掉 ,并且需要故障切换到另一个节点,剩余的数据库节点可以使用共识来选举新的领导者。正如在“[ 处理节点宕机] ( ch5.md#处理节点宕机 ) ”中所讨论的那样,重要的是只有一个领导者,且所有的节点都认同其领导。如果两个节点都认为自己是领导者,这种情况被称为** 脑裂(split brain)** ,且经常导致数据丢失。正确实现共识有助于避免这种问题。
21
21
22
22
在本章后面的“[ 分布式事务和共识] ( #分布式事务和共识 ) ”中,我们将研究解决共识和相关问题的算法。但首先,我们首先需要探索可以在分布式系统中提供的保证和抽象的范围。
23
23
73
73
线性一致性背后的基本思想很简单:使系统看起来好像只有一个数据副本。然而确切来讲,实际上有更多要操心的地方。为了更好地理解线性一致性,让我们再看几个例子。
74
74
75
75
[ 图9-2] ( img/fig9-2.png ) 显示了三个客户端在线性一致数据库中同时读写相同的键` x ` 。在分布式系统文献中,` x ` 被称为** 寄存器(register)** ,例如,它可以是键值存储中的一个** 键** ,关系数据库中的一** 行** ,或文档数据库中的一个** 文档** 。
76
-
76
+
77
77
![ ] ( img/fig9-2.png )
78
78
79
79
** 图9-2 如果读取请求与写入请求并发,则可能会返回旧值或新值**
You can’t perform that action at this time.
0 commit comments