写点什么

CnosDB 涅槃重生:弃用 Go, 全面拥抱 Rust

作者:CnosDB
  • 2022 年 7 月 18 日
  • 本文字数:1641 字

    阅读完需:约 5 分钟

CnosDB 涅槃重生:弃用Go, 全面拥抱Rust

CnosDB 社区的爱码士们,想必大家最近已经发现了,基于 Rust 版本的 CnosDB Isipho 已经切换到 GitHub 主站,并且社区团队也不再维护与支持 Go 版本的 CnosDB。首先还是给大家致以诚挚的歉意,之前的计划和决策的仓促给大家带来了不必要的麻烦。但是本着对社区负责的态度,在这里也给大家一个详细的解释:为什么我们放弃 Go,拥抱 Rust 去构建一个新的时间序列数据库。


数据库与开源的未来

CnosDB Isipho 是什么

CnosDB Isipho 是一个基于 Rust 研发的时间序列数据库,具有高性能、高压缩比、高可用的特点,并且将来满足分布式云原生。从 2022 年 3 月开始,CnosDB 团队开始在 GitHub 上开源了 Isipho 的源码,并且持续构建系统。CnosDB Isipho 致力于解决时间线膨胀问题、具备超大规模时间序列支持以及更好的生态特性。关于 CnosDB Isipho 的特点及集体功能架构,可以参阅 CnosDB Isipho 的路线图:https://github.com/cnosdb/cnosdb/blob/main/README.md

相对于 Go,Rust 是一门更好的数据库开发语言

第一个版本的 CnosDB 选取了 Go 作为开发语言,当时认为 Go 可以很好的处理易用性和系统性能的平衡,但是随着对于 Go 语言的深入了解,我们也发现 Go 语言在数据库系统编写,尤其是时序数据库编写中的问题。


Go 带来的问题主要有:Go runtime 带来的 GC 会引起性能抖动,而时序数据库需要在大负载环境下极其稳定;Go 对泛型支持也不好,语言表达能力受限,如果需要对资源进行更好的操作,对于开发人员的要求非常高。我们的 Go 版本的性能测评并没有显著优于已有头部产品。Go 版本仍然有很多的问题要去解决,为了应对云原生带来的挑战,更好的服务好企业上云,Go 版本需要对原来的版本进行大规模重构,以便:提高分布式扩展性以及实现最终一致性模型;提升免运维的能力;提升存储和查询性能;同时支持多租户,云原生。


在我们困扰于 Go 语言所带来的的问题时,CnosDB 的 Isipho 团队已经在 Rust 上开展了近五个月的工作。相对于 Go 语言,Rust 具有以下特性:Rust 无 GC,更精确的内存控制,硬件亲和性高;Rust 支持范型 match 表达式,表达能力更加丰富;Rust 有更高的可靠性,可以在编译期发现各种错误。开发者对 Rust 的喜爱也是溢于言表。


随着 Rust 在基础软件领域的应用也蓬勃发展,甚至 Linux 也开始使用 Rust 进行系统内核的重构( https://www.zdnet.com/article/linus-torvalds-is-cautiously-optimistic-about-bringing-rust-into-the-linux-kernels-next-release/ ),而且越来越多的数据库厂商开始尝试使用 Rust 去实现系统,我们也坚信,使用 Rust 可以构建更好的服务于客户的时序数据库。

为什么放弃 Go 版本

对于一个初创团队组织的开源社区,同时维护两个不同技术栈的产品,十分困难;团队也是很难进行有效的沟通和管理。开发团队在技术栈割裂的情况下已经艰难地进行了两个季度的工作,而我们观察到在我们社区上也有了分裂的迹象,有些爱码士倾向于 Go 版本的学习和使用,而更多的开发者涌入社区是因为我们的 Rust 版本和它的课程:《使用Rust构建一个TSDB》


如上文所述,时序数据库在朝云原生生态大幅度迈进,在 Go 版本上去实现诸如多租户、云原生等功能,几乎就是把原来的代码推倒重新来。Rust 版本的进展顺利,让我们选择不继续在错误的路上蒙眼狂奔,而是进行了一个艰难的取舍,放弃 Go 语言版本,并将公司的全部开发力量投入 Rust 版本的研发,向社区和用户交付更好的下一代时序数据库产品。


现在,CnosDB Isipho 版本的存储引擎已经构建完毕,开发团队正在全力开发查询引擎和索引功能,计划将在今年年底之前带来单机版本的 CnosDB Isipho。同时 ConsDB 也竭诚希望对时序数据库、对 Rust 有兴趣的爱码士们加入 CnosDB 社区,贡献代码或者成为全职开发者。社区活动不会减少,大家在期待 CnosDB Isipho 的同时,我们继续推出丰富内容,包括但不限于混沌工程的课程以及 Rust 的后续课程。

始于万物互联,开源横跨五洲。希望大家继续关注和支持 CnosDB!


CnosDB 简介

CnosDB 是一款高性能、高易用性的开源分布式时序数据库,现已正式发布及全部开源。

欢迎关注我们的代码仓库,一键三连🙇🙇🙇:https://github.com/cnosdb/cnosdb

发布于: 刚刚阅读数: 4
用户头像

CnosDB

关注

还未添加个人签名 2022.04.18 加入

CnosDB是一个由社区驱动的开源时间序列数据库,适用于各种时序场景,如服务器/应用程序/性能指标/函数接口调用指标、网络流量/探测器数据、日志/市场交易记录等。代码仓库:https://github.com/cnosdb/cnosdb

评论

发布
暂无评论
CnosDB 涅槃重生:弃用Go, 全面拥抱Rust_rust_CnosDB_InfoQ写作社区