2023年6月13日,云原生计算基金会(CNCF)宣布Xline正式被纳入CNCF沙箱(Sandbox)项目。Xline是由达坦科技(DatenLord)于2022年年底推出的开源项目,是一个用Rust语言写就的,用于元数据管理的分布式KV存储。
Xline是CNCF首个跨云元数据KV存储项目。Xline进入CNCF沙箱项目充分表明,在跨云领域,达坦科技(DatenLord)的开源技术被全球顶级开源基金会所认可。而Xline作为一个开源中立的项目,将与CNCF社区共同发展,助力云原生生态体系稳步迈入跨云时代。
#Birth
Xline的诞生
在单数据中心场景下,元数据的管理已经有很多成熟的解决方案,etcd就是其中的佼佼者,但是在多数据中心场景下,etcd的性能受Raft共识协议的限制,它的性能和稳定性都大打折扣。随着互联网和云计算的业务规模越来越大,单个数据中心已经无法满足业务的需求,业务系统从单数据中心向多数据中心发展,多地多中心多活部署的需求也越来越普遍。
多数据中心架构最大的挑战是,如何保证数据跨数据中心访问的一致性和性能。比如索引、权限、配置等这类需要跨数据中心共享访问的元数据,如何在多中心竞争修改的场景下,仍然能保持一致性,并且保证访问性能。Xline由此应运而生。Xline是一个开源的分布式的KV存储,用来管理少量的关键性数据,并在跨云跨数据中心的场景下仍然保证高性能和数据强一致性。
#Feature
Xline的特点
一个分布式多集群KV存储引擎:在多集群场景下实现统一数据管理,使相互访问、发现和修改变得简单和方便。
一个统一的元数据管理系统:通过在内存中缓存热数据实现跨云数据访问,并通过提供统一的数据管理来实现自动数据迁移和备份。
一个高性能的多数据中心共识协议:它是第一个基于广域网共识协议的跨数据中心一致性管理服务器,解决了跨云融合和一致性的挑战。
兼容etcd接口:提供KV接口,多版本并发控制,同时与K8S兼容,让用户使用和迁移更加流畅。
#Core
Curp共识协议
CURP共识协议( Curp 共识协议的重新思考)的优势是将非冲突的proposal达成共识所需要的RTT从2个降为1,对于冲突的proposal仍然需要两个RTT,而etcd等主流分布式系统采用的Raft协议在任何情况下都需要两个RTT。
尽管Raft很稳定,也很易于实现,但从客户的角度来看,它需要2个RTT来完成一个共识请求。一个RTT发生在客户端和领导者服务器之间,而领导者服务器需要另一个RTT将消息广播给跟随者服务器。在广域网下的高延迟环境中,一个RTT的运行时间从几十到几百毫秒不等,两个RTT将是两个费时的过程。
两个RTT降为一个RTT所带来的性能提升在单数据中心场景下体现的并不明显,但是在多数据中心或者跨云场景下,RTT一般在几十到几百ms的数量级上,这时一个RTT的性能提升则相当明显。
#Growth
版本持续迭代
2023年5-6月刚发布的新版本实现如下改进:
通过引入批处理机制提高网络带宽利用率;
为CURP共识协议实现快照功能;
实现快照相关API,且与etcdctl兼容。其余etcdctl维护中的API会在未来实现。
添加watch进度通知机制
在对 Xline 做 benchmark 测试中,我们将 Xline 运行在多个 docker 镜像中,并通过 tc 来设置不同节点之间的网络延迟,模拟真实世界下广域网的延迟情况,具体的网络拓扑及 latency 大小可参考 Xline 测试网络拓扑。
基准测试报告也显示,Xline 在高网络延迟的场景下,针对无冲突的并发 PUT 请求,Xline 在吞吐量接近 etcd 的两倍,而在完全冲突的情况下,Xline 的吞吐量则略低于 etcd。这足以证明 Xline 在高延迟的广域网环境下能够比 etcd 有更好的性能表现。目前 Xline 还处在开发的早期阶段,我们也会在接下来的开发过程中,不断完善 benchmark 的测试用例,并提升 Xline 在冲突状态下的性能。
在下一个版本 v0.5.0 当中,我们计划增加如下特性:
开始提供第一个基于 rust 版本 cmd line tool
为 Xline 提供 k8s operator 来使其融入到 K8S 的生态当中
提升 Xline 相关 TXN 操作的性能
Together We Grow!
在此感谢每一位参与的社区伙伴对Xline的帮助和支持,也欢迎更多使用者和开发者参与体验和使用Xline。我们希望得到你的参与和支持,你可以:
加入Xline Discord:
在GitHub上点颗星:
作为贡献者加入Xline:
/blob/master/CONTRIBUTING.md