Update 分布式.md

为 Paxos 示例和栅栏令牌各补一张时序图。
This commit is contained in:
CyC2018
2026-10-25 18:52:37 +08:00
parent 385df45164
commit c6c805e4f8
5 changed files with 138 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

+4
View File
@@ -89,6 +89,8 @@ Redis 8.4 新增了 `DELEX lock_key IFEQ unique_value` 指令,可以直接原
RedLock 依赖各个节点的时钟基本同步,并且无法应对进程暂停(例如 GC)导致锁过期后客户端仍然认为自己持有锁的情况,因此存在争议。更可靠的做法是让锁服务每次加锁时返回一个单调递增的栅栏令牌(Fencing Token),客户端访问资源时带上令牌,资源拒绝令牌比已处理过的更小的请求。
<div align="center"> <img src="pics/fencing-token.png" width="560px"/> </div><br>
### Zookeeper 的有序节点
#### 1. Zookeeper 抽象模型
@@ -332,6 +334,8 @@ Acceptor 接受一个提议之后,会将该提议发送给所有的 Learner。
- A 发送 Prepare(2),X 和 Y 做出承诺并响应。A 得到大多数响应之后发送 Accept(2, 8),X 和 Y 接受该提议,此时值 8 已经被选定;
- 之后 B 发送 Prepare(4),它收到的大多数响应中至少有一个来自 X 或 Y,响应中包含已经接受过的提议 [2, 8],因此 B 只能发送 Accept(4, 8),而不能使用自己的提议值,从而保证了选定的值不会改变。
<div align="center"> <img src="pics/paxos-example.png" width="600px"/> </div><br>
### 约束条件
#### 1\. 正确性