项目简介
本项目是用C语言实现的Raft一致性算法库,用于构建系统的一致性模块。Raft是由Diego Ongaro和John Ousterhout推广的分布式系统中的共识算法,此库为分布式系统提供了基础的Raft算法实现。
项目的主要特性和功能
- 核心算法功能:具备领导者选举、日志复制、单服务器成员变更、客户端交互等Raft算法核心功能。
- 测试与演示:提供用于测试和演示的模拟器,能对算法进行全面测试。
- 可嵌入性:是独立的组件库,不包含RPC和存储部分,可方便地嵌入到应用程序中。
- 代码简洁:代码结构简洁,便于理解和维护。
- 功能检查:模拟器具备多种检查功能,如活性检查、选举安全检查、日志匹配检查等。
- 多种策略支持:支持动态改变节点数量、随机驱动时间、消息处理(丢弃、重复、延迟)、分区、节点重启、快速测试和日志控制等策略。
安装使用步骤
环境要求
- 操作系统:Ubuntu 18.04 Desktop
- 工具:GCC、g++、CMake、make
安装依赖
在Debian/Ubuntu Linux系统中,使用以下命令安装gflags:
sudo apt-get install libgflags-dev
编译项目
进入项目的根目录,执行以下操作:
mkdir build
cmake --build build --config Debug --target craft
编译完成后,在build
目录下会生成libcraft.a
库文件以及libsds.a
、liblmdb.a
、libsimple_logger.a
三个额外的库文件,同时还会生成Raft模拟器二进制文件basicsimulator
。
运行模拟器
清理临时目录
首先,清理上一次执行留下的临时目录:
sh removelmdb.sh
运行模拟器
在shell中运行以下命令:
sudo build/basicsimulator --nodeCount=3 --testTime=40 --rebootRate=3 --enableCheckLiveness=false --msgDropRate=60 --msgDuplicateRate=60 --msgDelayRate=70 --partitionRate=60 --memberChangeRate=30
若需要在gdb环境中进行错误追踪,可使用以下命令:
sudo gdb --args build/basicsimulator --nodeCount=3 --testTime=40 --rebootRate=3 --enableCheckLiveness=false --msgDropRate=60 --msgDuplicateRate=60 --msgDelayRate=70 --partitionRate=60 --memberChangeRate=30
通常,模拟器每30秒会输出一次统计信息。更多关于模拟器使用的提示可参考testcmd.txt
、basicsimulator.h
和basicsimulator.cpp
文件。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】