项目简介
本项目是基于Go语言实现的分布式共识系统,实现了Raft和PBFT两种分布式一致性协议。系统包含Master、Server和Client三种角色,Master管理Server注册信息,Server间通过PBFT协议达成共识,Client向Server发送请求并获取结果,有助于用户深入理解分布式系统共识机制及实现细节。
项目的主要特性和功能
- 节点注册与管理:Master节点管理Server注册信息并分发集群信息。
- PBFT共识协议:Server节点使用PBFT协议保证分布式系统一致性。
- 分布式KV数据库:各Server节点维护独立KV数据库,通过相同命令序列保持状态一致。
- 多角色支持:支持Master、Server和Client三种角色,分别负责集群管理、共识处理和请求发送。
- 容错机制:系统具备容错能力,一定数量节点故障时仍可运行。
- 命令行交互:Client通过命令行交互,支持
get
、put
、del
、all
等操作。
安装使用步骤
1. 环境准备
确保已安装Go语言开发环境,并配置好GOPATH
和GOROOT
。
2. 编译项目
在项目根目录下执行以下命令,编译生成可执行文件:
bash
go build naive.go
3. 启动Master节点
首先启动Master节点,默认容错数f
为1:
bash
./naive -role master
4. 启动Server节点
启动4个Server节点(默认f = 1
,需要4个Server):
bash
./naive -role server -id 0 -addr localhost:8001
./naive -role server -id 1 -addr localhost:8002
./naive -role server -id 2 -addr localhost:8003
./naive -role server -id 3 -addr localhost:8004
5. 启动Client节点
启动Client节点,连接Master并获取Server集群信息:
bash
./naive -role client
6. 交互操作
在Client节点中输入命令,例如:
- 添加键值对:put x 10
- 获取键值:get x
- 删除键值:del x
- 查看所有键值:all
7. 观察共识过程
在Server节点中观察PBFT共识协议的交互过程,确保所有Server节点的状态保持一致。
8. 容错测试
关闭某个Server节点,观察系统是否仍能正常达成共识。默认容错数为1,最多允许1个节点故障。
注意事项
- 本实验建议在Linux环境下运行,其他系统可能存在换行符解析问题。
- 默认容错数
f
为1,需启动4个Server节点。若修改f
值,需启动3f + 1
个Server节点。 - 日志输出可通过环境变量
LOG
控制,便于调试和追踪系统运行状态。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】