龙舟(Dragonboat)——纯Go实现的高性能多组Raft库
项目地址:https://gitcode.com/gh_mirrors/dr/dragonboat
项目简介
龙舟(Dragonboat)是一个由纯Go语言编写的高性能多组Raft一致性算法库。它旨在提供强大的故障容忍能力,保证在大多数服务器可用的情况下系统仍能正常运行,且始终保持数据一致性。利用Raft协议,即使部分服务器出现故障,也能确保服务的连续性和数据的完整性。
技术分析
龙舟库将所有与Raft相关的复杂技术问题处理得井然有序,使得开发者只需专注于自己的业务逻辑。其特色包括:
- 多组支持:允许构建包含多个独立Raft分片的系统,每个分片都可以独立进行选举和复制日志。
- 存储引擎定制:支持硬盘和内存状态机,并可以自定义Raft日志的存储和传输方式,易于集成最新的I/O技术。
- 安全通信:内置TLS双向认证,适配高延迟环境下的低延迟需求。
- 健康监控:基于Prometheus的健康指标收集和展示,方便系统运维。
此外,还提供了丰富、易用的Go语言API接口,帮助开发者轻松上手。
应用场景
龙舟适用于需要强一致性的分布式应用,例如数据库、键值存储、分布式锁服务等。它能够帮助开发以下类型的系统:
- 微服务架构:在分布式环境中提供高可用性,确保服务之间的数据一致性。
- 云存储平台:作为底层一致性算法,保证数据在不同节点间的同步和恢复。
- 物联网(IoT):在设备间协调和同步状态,即使在网络不稳定或设备部分离线的情况下。
项目特点
- 易用性:提供清晰的示例和详尽的文档,新用户能在短时间内掌握使用方法。
- 高性能:在测试中,龙舟展现出出色的性能,即使是3节点系统,配合RocksDB作为存储引擎时,也能达到每秒9百万个16字节负载的写入速度。
- 可扩展性:支持大量并发的活跃Raft分片,且在上千个空闲分片的情况下对总体吞吐量的影响较小。
- 低延迟:99.9%的写操作在5毫秒内完成,读操作则更低,且在高负载下也有良好的Stop-the-World暂停时间控制。
- 多平台支持:支持x86_64/Linux、x86_64/MacOS和ARM64/Linux,兼容Go 1.15及以上版本。
开始使用
要将龙舟添加到你的项目中,只需执行以下命令:
go get github.com/lni/dragonboat/v3@latest
或者获取开发版本(目前处于v4阶段),以使用更新的API:
go get github.com/lni/dragonboat/v4@master
在示例中你可以找到如何使用龙舟的详细步骤,更多文档和常见问题解答,请参阅项目链接。
状态与贡献
龙舟已被广泛应用于生产环境并表现出稳定可靠的特性。欢迎通过提交问题或拉取请求参与到项目的改进和发展中来。该项目遵循Apache 2.0许可。
立即开始探索龙舟,体验纯粹的Go语言带来的强大一致性解决方案吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考