ITPub博客

首页 > 数据库 > 国内数据库 > CnosDB 涅槃重生:弃用Go, 全面拥抱Rust

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

原创 国内数据库 作者:CnosDB 时间:2023-08-27 10:56:51 0 删除 编辑

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

CnosDB Isipho是什么

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

相对于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进行系统内核的重构(   ),而且越来越多的数据库厂商开始尝试使用Rust去实现系统,我们也坚信,使用Rust可以构建更好的服务于客户的时序数据库。

为什么放弃Go版本

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

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

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

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




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70026635/viewspace-2978506/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
打造高性能、高压缩比、高可用的分布式云原生时间序列数据库,引领世界迈向万物智联。 欢迎关注 https://www.cnosdb.com

注册时间:2023-02-10

  • 博文量
    31
  • 访问量
    23528