remove invalid code
Floyd是一个C++实现的Raft一致性协议库。
当我们在有服务发现、协调和管理的需求时,ZooKeeper是一个很好的选择,但是有一定成本.
我们认为,一个集成、单一的服务通常会比多个服务更加可控、简单. 所以,作为一个库来使用,能够简化整体的架构.
git clone --recursive https://github.com/Qihoo360/floyd.git
make
目前我们实现了3个使用floyd 的例子, 在example/ 目录下面, 可以直接去对应的目录进行编译使用
这个simple 示例主要包含好几个本机就能够运行的使用floyd 的例子. 在这些例子里面, 都会在一个进程启动5个 floyd 对象, 然后会有对象的停止, 重新启动等等操作来观察floyd 的一致性
执行 make 就可以编译所以的示例.在 output/bin/ 目录下面
raftis 是一个5个节点的floyd server. raftis 支持redis 协议里面的get, set 命令. raftis 是一个使用floyd 构建一致性集群的示例, 一般使用floyd 我们都推荐这么用, 非常的简单. raftis 可以直接使用 reids-cli, redis-benchmark 进行压测
使用make 编译 raftis, 然后运行run.sh 可以启动5个节点. 当然这里运行的5个节点都在本地, 你完全可以在5个不同的机器运行这5个节点
make sh run.sh
#!/bin/sh # start with five node ./output/bin/raftis "127.0.0.1:8901,127.0.0.1:8902,127.0.0.1:8903,127.0.0.1:8904,127.0.0.1:8905" "127.0.0.1" 8901 "./data1/" 6379 & ./output/bin/raftis "127.0.0.1:8901,127.0.0.1:8902,127.0.0.1:8903,127.0.0.1:8904,127.0.0.1:8905" "127.0.0.1" 8902 "./data2/" 6479 & ./output/bin/raftis "127.0.0.1:8901,127.0.0.1:8902,127.0.0.1:8903,127.0.0.1:8904,127.0.0.1:8905" "127.0.0.1" 8903 "./data3/" 6579 & ./output/bin/raftis "127.0.0.1:8901,127.0.0.1:8902,127.0.0.1:8903,127.0.0.1:8904,127.0.0.1:8905" "127.0.0.1" 8904 "./data4/" 6679 & ./output/bin/raftis "127.0.0.1:8901,127.0.0.1:8902,127.0.0.1:8903,127.0.0.1:8904,127.0.0.1:8905" "127.0.0.1" 8905 "./data5/" 6779 &
└─[$] ./src/redis-benchmark -t set -n 1000000 -r 100000000 -c 20 ====== SET ====== 1000000 requests completed in 219.76 seconds 20 parallel clients 3 bytes payload keep alive: 1 0.00% <= 2 milliseconds 0.00% <= 3 milliseconds 8.72% <= 4 milliseconds 95.39% <= 5 milliseconds 95.96% <= 6 milliseconds 99.21% <= 7 milliseconds 99.66% <= 8 milliseconds 99.97% <= 9 milliseconds 99.97% <= 11 milliseconds 99.97% <= 12 milliseconds 99.97% <= 14 milliseconds 99.97% <= 15 milliseconds 99.99% <= 16 milliseconds 99.99% <= 17 milliseconds 99.99% <= 18 milliseconds 99.99% <= 19 milliseconds 99.99% <= 26 milliseconds 99.99% <= 27 milliseconds 100.00% <= 28 milliseconds 100.00% <= 29 milliseconds 100.00% <= 30 milliseconds 100.00% <= 61 milliseconds 100.00% <= 62 milliseconds 100.00% <= 63 milliseconds 100.00% <= 63 milliseconds 4550.31 requests per second
一个使用floyd 实现强一致协议的server, 包含server, client
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
Floyd 中文
Floyd是一个C++实现的Raft一致性协议库。
用户
我们为什么倾向于库,而不是一个服务?
当我们在有服务发现、协调和管理的需求时,ZooKeeper是一个很好的选择,但是有一定成本.
我们认为,一个集成、单一的服务通常会比多个服务更加可控、简单. 所以,作为一个库来使用,能够简化整体的架构.
Floyd功能和API
编译运行
示例
目前我们实现了3个使用floyd 的例子, 在example/ 目录下面, 可以直接去对应的目录进行编译使用
example/simple/
这个simple 示例主要包含好几个本机就能够运行的使用floyd 的例子. 在这些例子里面, 都会在一个进程启动5个 floyd 对象, 然后会有对象的停止, 重新启动等等操作来观察floyd 的一致性
执行 make 就可以编译所以的示例.在 output/bin/ 目录下面
example/redis/
raftis 是一个5个节点的floyd server. raftis 支持redis 协议里面的get, set 命令. raftis 是一个使用floyd 构建一致性集群的示例, 一般使用floyd 我们都推荐这么用, 非常的简单. raftis 可以直接使用 reids-cli, redis-benchmark 进行压测
使用make 编译 raftis, 然后运行run.sh 可以启动5个节点. 当然这里运行的5个节点都在本地, 你完全可以在5个不同的机器运行这5个节点
example/kv/
一个使用floyd 实现强一致协议的server, 包含server, client
文档
联系我们