电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>Dragonboat Go实现的多组Raft库

Dragonboat Go实现的多组Raft库

2022-06-22 | zip | 0.79 MB | 次下载 | 免费

资料介绍

授权协议 Apache-2.0
开发语言 C/C++ Google Go 汇编
软件类型 开源软件

软件简介

关于

Dragonboat 是一个高性能 Go 实现的多组 Raft 共识算法库,它同时提供 C++11 支持。Dragonboat 是目前 github.com 上速度最快的 Raft 开源实现。

Raft 这样的共识算法使得只要系统中的多数成员在线便可使得系统持续运行。比如,一个拥有 5 台服务器的 Raft 集群中即使有两台服务器故障依旧可以工作。它同时向客户端展现一个单机节点,始终提供强一致保证的数据访存。同时,所有在线的成员节点都可用来提供读操作,从而提供更高的读吞吐总和。

所有 Raft 相关的技术难点都会由 Dragonboat 来承担,用户从而可以只关注他们各自的应用领域。Dragonboats 使用十分简便,详细的例程可使新用户在半小时内完全掌握它。

功能

  • 便于使用的可构建单组与多组 Raft 应用的 Go 和 C++ API

  • 功能完备的多组 Raft 协议的实现,同机支持数千 Raft 组

  • 完备的测试确保正确性,这包括 Jepsen 所带的 Knossos 强一致性检查,部分测试日志在此

  • 全流水线设计、TLS 支持,适合被部署于跨地域的高网络延时公网环境

  • 在中档硬件上即可获得约 300 万/秒的写或 1000 万/秒的强一致读的性能

  • 支持定制的 Raft log 存储与 Raft RPC 模块,可方便整合最新 IO 类技术产品

  • 多 Raft 组由自带的 Drummer 服务器组件管理以获得良好的高可用

性能

Dragonboat 是目前 GitHub 网站上最快的开源多组 Raft 实现。

在三节点系统上,使用中端硬件,如 22 核 2.8Ghz 的 Intel 至强处理器和 NVME 固态硬盘,在 16 字节的荷载下,Dragonboat 可持续每秒 900 万次写或在 9:1 的高读写比场景下提供每秒 1100 万次的混合读写操作。高吞吐在跨地域分布环境依旧被保持,在使用更多的 clients 的情况下,在 RTT 为 30ms 时依旧能实现 200 万次每秒的 IO 操作。 

pYYBAGKn5-WANHAcAAESVP6hFy4637.jpg

每个服务器上可轻易承载数千 Raft 组。并发的活跃 Raft 组数量对吞吐有直接影响,而大量的闲置 Raft 组对系统性能并无巨大影响。 

poYBAGKn5-mAYKVOAADtksSOL3s701.jpg

下表是毫秒为单位的写延迟数据。Dragonboat 可以在处理每秒 800 万次写(16 字节荷载)的时候做到 P99 的写延迟小于 5ms。读延迟低于写延迟,因为用于 linearizable 读的 ReadIndex 协议无需对每个读请求做落盘写。

pYYBAGKn5-uAbcW9AACJrN3Gdto927.jpg

当测试单组性能时,Dragonboat 可以在 16 字节负载下持续每秒完成 125 万次写,此时平均写延迟是 1.3 毫秒,P99 写延迟为 2.6 毫秒。上述性能是在平均单机占用三个 2.8Ghz 的核心的情况下实现的。

即使在很高的系统负载下,Go 的 GC 所带来的 Stop-the-World 停顿也显著低于 1 毫秒。在即将发布的 Go 1.12 版中,GC 的 Stop-the-World 停顿时间将进一步大幅减低。Golang 的 runtime.ReadMemStats 显示即使在很高的系统负载下,GC 也仅占用了少于 1% 的可利用 CPU 时间。 

poYBAGKn5-yATPQmAADOeDfZf-E262.jpg

系统需求

  • x86_64 Linux 或 MacOS, Go 1.10, 1.11,支持 C++11 的近期版本 GCC 或 Clang

  • RocksDB 5.13.4 或更新的版本

开始使用

下载 Dragonboat 库至您的 Go 工作环境:

$ go get -u -d github.com/lni/dragonboat

如果 RocksDB 5.13.4 或者更新版本尚未安装:

$ cd $GOPATH/src/github.com/lni/dragonboat
$ make install-rocksdb-ull

上述命令将把 RocksDB 5.13.4 安装到 /usr/local/lib和/usr/local/include/rocksdb。如果 RocksDB 已经被安装,则可跳过此步。

运行内建测试以检查安装是否完成:

$ cd $GOPATH/src/github.com/lni/dragonboat
$ make dragonboat-test

编译您的应用:

  go build -v pkgname

上述步骤使用的是 Master branch 的代码。Master 是用于开发的非稳定 branch。生产环境请使用已发布版本。

(可选)安装 C++ Binding:

$ cd $GOPATH/src/github.com/lni/dragonboat
$ make binding
$ sudo make install-binding

(可选)运行 C++ binding测试(需 gtest 库):

$ cd $GOPATH/src/github.com/lni/dragonboat
$ make clean
$ make test-cppwrapper

中文例程

中文例程在这里

项目状态

Dragonboat 适用于生产环境。

开源许可协议

本项目以 Apache License Version 2.0 授权开源,请参考 LICENSE 文件。

 

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1Keysight B1500A 半导体器件分析仪用户手册、说明书 (中文)
  2. 19.00 MB  |  4次下载  |  免费
  3. 2使用TL431设计电源
  4. 0.67 MB   |  2次下载  |  免费
  5. 3BT134双向可控硅手册
  6. 1.74 MB   |  2次下载  |  1 积分
  7. 4一种新型高效率的服务器电源系统
  8. 0.85 MB   |  1次下载  |  1 积分
  9. 5LabVIEW环形控件
  10. 0.01 MB   |  1次下载  |  1 积分
  11. 6PR735,使用UCC28060的600W交错式PFC转换器
  12. 540.03KB   |  1次下载  |  免费
  13. 751单片机核心板原理图
  14. 0.12 MB   |  1次下载  |  5 积分
  15. 8BP2879DB支持调光调灭的非隔离低 PF LED 驱动器
  16. 1.44 MB  |  1次下载  |  免费

本月

  1. 1开关电源设计原理手册
  2. 1.83 MB   |  54次下载  |  免费
  3. 2FS5080E 5V升压充电两串锂电池充电管理IC中文手册
  4. 8.45 MB   |  23次下载  |  免费
  5. 3DMT0660数字万用表产品说明书
  6. 0.70 MB   |  13次下载  |  免费
  7. 4UC3842/3/4/5电源管理芯片中文手册
  8. 1.75 MB   |  12次下载  |  免费
  9. 5ST7789V2单芯片控制器/驱动器英文手册
  10. 3.07 MB   |  11次下载  |  1 积分
  11. 6TPS54202H降压转换器评估模块用户指南
  12. 1.02MB   |  8次下载  |  免费
  13. 7STM32F101x8/STM32F101xB手册
  14. 1.69 MB   |  8次下载  |  1 积分
  15. 8基于MSP430FR6043的超声波气体流量计快速入门指南
  16. 2.26MB   |  7次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935119次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420061次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233084次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191367次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183335次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81581次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73807次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65987次下载  |  10 积分