littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于Go语言的分布式共识系统实现

项目简介

本项目是基于Go语言实现的分布式共识系统,实现了Raft和PBFT两种分布式一致性协议。系统包含Master、Server和Client三种角色,Master管理Server注册信息,Server间通过PBFT协议达成共识,Client向Server发送请求并获取结果,有助于用户深入理解分布式系统共识机制及实现细节。

项目的主要特性和功能

  1. 节点注册与管理:Master节点管理Server注册信息并分发集群信息。
  2. PBFT共识协议:Server节点使用PBFT协议保证分布式系统一致性。
  3. 分布式KV数据库:各Server节点维护独立KV数据库,通过相同命令序列保持状态一致。
  4. 多角色支持:支持Master、Server和Client三种角色,分别负责集群管理、共识处理和请求发送。
  5. 容错机制:系统具备容错能力,一定数量节点故障时仍可运行。
  6. 命令行交互:Client通过命令行交互,支持getputdelall等操作。

安装使用步骤

1. 环境准备

确保已安装Go语言开发环境,并配置好GOPATHGOROOT

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】