Xline是什么?我们为什么要做Xline?
Xline是一个基于Curp协议的,用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议,需要两次RTT才能完成一次请求。当部署在单个数据中心时,节点之间的延迟较低,因此不会对性能产生大的影响。
但是,当跨数据中心部署时,节点之间的延迟可能是几十或几百毫秒,此时 Raft 协议将成为性能瓶颈。Curp 协议就是为了解决这个问题而设计的。它可以在命令不冲突的情况下减少一个RTT,从而提高性能。因此,Xline旨在实现高性能的数据访问和跨数据中心场景下的强一致性。
V0.4.1版本有什么新功能?
v0.4.1新版本功能、修复问题以及重构如下:
功能
- 增加观察进度通知机制(issue#309),在pr#278 中解决。
修复错误
- 修复一个BUG #285,即在集成测试中,cmd_worker会出现panic,在pr #286中解决。
- 修复一个BUG #291,即集成测试案例 "test_kv_authorization "在某些情况下会阻塞,在pr #292中解决。
- 修复一个bug #252,即通过发送SIGINT信号终止xline客户端后,xline客户端的工作会出现异常,在pr #255中解决。
- 修复bug #284和#303,即集成测试用例 "test_lock_timeout "会出现panic,并且锁的验证测试会阻塞,在pr #312中解决。
重构
- 重构`XlineServer`,将一些巨大的结构和方法分解成小的结构和方法,提高可读性(issue#293),在pr #294中解决。
- 重构curp快速读取实现(issue#270),在pr #297中解决。
- 改进 "RocksSnapshot "的读写逻辑(issue#263),在pr#264中解决。
- 重构watch服务器的实现(issue#253),在pr#262、#268、#278中解决。
- 重构kv服务器的实现(issue#250),在pr #260中解决。
- 重构lease服务器的实现(issue#251),在pr #276中解决。
- 使用更好的方法来生成stream(issue#248),在pr #249中解决。
欢迎参与到Xline项目中
我们欢迎任何对于Xline的积极贡献。目前在GitHub上有些任务并不需要深入了解Curp协议或Xline这个项目,只需要了解API和Rust语言即可。即使您现处于入门阶段,并想要在开源项目中使用Rust语言,社区也会提供指导和帮助,来引导您更好地参与项目。
目前Xline提供如下4个 good first issue:
- Improve the readability of boot up errors in Xline #330
- [Bug]: Wrong version from help #327
- [Refactor]: Merge entries and batch_index #256
- Use a unique propose id #219
Xline的建设需要每一位对此感兴趣且愿意付出的你们的参与,我们期待你们的加入。
相关链接
· GitHub: https://github.com/datenlord/Xline
· Curp相关论文:
https://www.usenix.org/system/files/nsdi19-park.pdf
· Curp相关文章:
https://medium.com/@datenlord/curp-revisit-the-consensus-protocol-384464be1600
· Xline官网:www.xline.cloud
往期推荐
1. Xline 持久化存储设计与实现
2. Xline v0.4.0: 一个用于元数据管理的分布式KV存储
3. 从云计算到天空计算(一)
4. 从云计算到天空计算(二)
Xline是一个用于元数据管理的分布式KV存储。Xline项目以Rust语言写就,欢迎大家参与我们的开源项目!
GitHub链接:https://github.com/datenlord/Xline
Xline官网:www.xline.cloud
Xline Discord:
https://discord.gg/XyFXGpSfvb