分布式系统Paxos算法简化架构图解
该思维导图描述了一个分布式系统架构,包含客户端和服务器角色。系统初始化时客户端持有初始命令,并试图获取票据编号。 系统分为三个阶段:阶段1,客户端递增票据编号并向所有服务器请求,更新最大票据编号Tmax;阶段2,客户端提交请求,服务器响应并更新本地状态;阶段3,客户端若获得所有服务器成功响应,则发送执行命令,服务器执行该命令。 整个流程保证了命令的一致性和有序执行,Tmax和C分别代表最大票据编号和命令。
源码
# 分布式系统Paxos算法简化架构图解
## 角色
- Client(客户端)
- Server(服务器)
## 初始化过程
- Client拥有初始命令c
- 尝试获取编号为t的票
## 阶段1
### 步骤
- **步骤1**: t = t + 1
- **步骤2**: 向所有服务器发送请求获取编号为t的票
- 服务器处理请求
- **步骤3**: 如果 t > Tmax,则 Tmax = t
- **步骤4**: 服务器回应: ok Tmax, C
- **拒绝请求**: 如果 C 与存储的命令不一致
- **步骤5**: 客户端存储 Tmax 和 C
- **步骤6**: 结束if
## 阶段2
### 客户端请求
- **步骤1**: 客户端提出编号为t的请求
- **步骤2**: 接收服务器的响应: ok Tstore, C
- **步骤3**: 如果 Tstore > t,则选择 Tstore 和 C
- **步骤4**: 如果 Tstore 不大于 t,则继续等待
- **继续步骤**:
- **步骤12**: 向所有服务器发送提案 t, C
- **步骤13**: 结束if
### 服务器端处理
- **步骤1**: Tmax 可能不为零
- **步骤2**: 服务器发送: ok Tstore, C
- **步骤3**: 如果 t = Tmax:
- 存储 C 和 Tstore
- 返回 success
- **结束if**
## 阶段3
### 客户端执行
- **步骤**: 如果所有服务器返回 success:
- 向所有服务器发送执行命令: execute C
### 服务器处理
- **步骤**: 服务器执行来自客户端的命令 C
- 执行的命令不是存储的 Tstore,而是来自“标记有”execute的 C
图片