diff --git a/notes/pics/fencing-token.png b/notes/pics/fencing-token.png
new file mode 100644
index 00000000..9f714c3e
Binary files /dev/null and b/notes/pics/fencing-token.png differ
diff --git a/notes/pics/paxos-example.png b/notes/pics/paxos-example.png
new file mode 100644
index 00000000..3f66cdbf
Binary files /dev/null and b/notes/pics/paxos-example.png differ
diff --git a/notes/分布式.md b/notes/分布式.md
index 5653b23d..1e26e4c3 100644
--- a/notes/分布式.md
+++ b/notes/分布式.md
@@ -89,6 +89,8 @@ Redis 8.4 新增了 `DELEX lock_key IFEQ unique_value` 指令,可以直接原
RedLock 依赖各个节点的时钟基本同步,并且无法应对进程暂停(例如 GC)导致锁过期后客户端仍然认为自己持有锁的情况,因此存在争议。更可靠的做法是让锁服务每次加锁时返回一个单调递增的栅栏令牌(Fencing Token),客户端访问资源时带上令牌,资源拒绝令牌比已处理过的更小的请求。
+
+
### 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),而不能使用自己的提议值,从而保证了选定的值不会改变。
+
+
### 约束条件
#### 1\. 正确性
diff --git a/tools/diagram/src/fencing-token.svg b/tools/diagram/src/fencing-token.svg
new file mode 100644
index 00000000..d6f2f6fd
--- /dev/null
+++ b/tools/diagram/src/fencing-token.svg
@@ -0,0 +1,59 @@
+
diff --git a/tools/diagram/src/paxos-example.svg b/tools/diagram/src/paxos-example.svg
new file mode 100644
index 00000000..28e0bcc7
--- /dev/null
+++ b/tools/diagram/src/paxos-example.svg
@@ -0,0 +1,75 @@
+