vlambda博客
学习文章列表

从Rust语言特性与应用说起,再谈与TDengine的有趣碰撞|系统软件Tech Day


系统软件Tech Day 第2期,我们邀请到了TDengine研发工程师霍琳贺为大家带来话题 Rust 语言特性与应用

该话题讲介绍Rust语言特性、内存安全机制、零开销抽象,以及在TDengine使用Rust做的一些有意思的应用。

主要面向有一定编程基础或对Rust有兴趣的开发者。

为了让大家更好地了解话题,活动组对霍琳贺老师就几个问题进行了简单采访。

Q请简单介绍一下您自己和目前从事的工作

霍琳贺 大家好,我是霍琳贺,2011年毕业于武汉大学,通信工程专业。 一直从事HPC平台高 性能计算软件开发和业务侧信息系统的开发工作。 2021年入职涛思数据,目前在涛思数据应用开发组做TDengine生态应用软件开发,负责Rust、Go、Python、Node.js 等语言TDengine客户端的开发和维护,以及TDengine Helm Chart 的开发工作。

Q 请介绍一下您在本次分享中的内容
霍琳贺 Rust 是一门高性能且内存安全的系统编程语言。Rust将底层编程能力与高级抽象熔于一身,让开发者在获得底层编程能力的同时,能够使用高级语言的很多特性,提高了底层编程的开发效率。Rust 的内存安全和编译期检查,可以让各种水平的开发者避免很多原本只有非常有经验的开发者、全面且高效率的代码检查工具才能发现和避免的程序错误。Cargo、Crates.io、Rustfmt、Rust Language Server 以及一切生态工具为开发者保证了开发效率,使开发者不再需要在性能、稳定性、开发效率之间做取舍。

次分享主要给大家介绍Rust的语言特性,内存安全的实现机制,类型系统,Async/await 异步编程等内容。 并给大家分享我在TDengine开发中使用Rust做的一些有意思的东西。

Q 您是什么时候接触Rust的?Rust语言有哪些优点?
霍琳贺 2014年因为开发需求(Perl语言代码库迁移,静态编译+操作系统无关的运行时),在C之外,同时调研了Go和Rust,并决定在一个项目中使用Rust进行开发。恰好2015年Rust正式发布了1.0版本,我的项目也在CentOS 6/7/Ubuntu 12/14下运行良好,就一直关注和使用Rust语言进行一些小项目的开发,并在16年入职的另外一家公司里逐步在我的团队中推广Rust的使用。我的第一个Rust开源项目在2015年10月发布到GitHub:
https://github.com/zitsen/libr.rs

是R语言C接口的Rust绑定。 跟随Rust版本和特 性的持续迭代,发布了几个Rust库或工具,至今仍然使用Rust语言作为我的主要工作语言。

Rust语言的优点很多,高性能、可靠性、生产力,是Rust官方提出的三个特性。 其中说的比较多的一点,是无GC情况下保证内存安全,最大限度地避免悬空指针和内存溢出。 另外,Rust语言与C语言的双向无缝衔接是Rust能够很快在开发者中推广开来的一大优势。 对我而言,更多会考虑Cargo + crates.io 这种现代包管理器和社区带来的开发效率的提升。

Q您目前是TDengine的软件开发工程师,TDengine是一款开源软件,您觉得TDengine的优势是什么?简单分享下TDengine应用与生态工具的roadmap吗?

霍琳贺 TDengine 优势是高性能、低成本、分布式以及核心代码完全开源。
  • 创新的时序数据结构和模型设计,使数据插入和查询的速度比通用数据库提升10倍以上。

  • 超强的性能以及列式存储和特定压缩算法带来的存储和计算成本的大幅降低。

  • 无中心化设计的集群高可用架构。

  • 核心代码完全开源,集群支持开源。

  • SQL + Schemaless, 使用方式既能让熟悉传统数据库的开发者快速上手,也能让使用其他时序数据库产品的开发者快速迁移。


TDengine 在开源应用与生态工具方面,一是会对 TDengine 监控和可视化功能进行非常大的提升,让监控和可视化工具更好用起来。二是进一步的优化 Docker 和 Kubenetes 平台上的部署和管理,提供更多工具的部署指南,使 TDengine 在云上部署更友好。另外,随着TDengine特性的快速迭代和功能添加,对尚不支持完整新功能特性的 Python、Go、Rust、NodeJS 连接器都将很快发布更新,便于开发者使用自己熟悉的编程语言来开发应用。


Q 从事系统软件研发是一件非常辛苦的事,有什么经验可以和大家分享?
霍琳贺 对于在偏业务的岗位上做开发的朋友,希望都能够在业务压力的横流中保持一颗冷静的技术初心,让自己有时间和精力去了解更多的技术,尝试去深入探究某个技术问题,在深度和广度上扩充自己的知识架构。他山之石,可以攻玉,你的技术积累最终都会体现在解决实际问题的能力上。

系统软件Tech Day由涛思数据主办,是一个有深度、有温度的技术分享舞台,内容中立,旨在促进系统软件研发人员的技术交流。相对来说,核心的系统软件开发人员还比较稀缺。我们希望能邀请这个领域比较资深的专家,给大家带来分享;也希望更多专家能主动走向前台,一起交流。

2021年8月28日14:00-17:00,系统软件Tech Day第2期,将由来自爱奇艺、小米和涛思数据的3位系统软件领域的专家为大家带来深度技术分享。让你学习技术干货的同时,也能从他人的实战经验中得到一些帮助。名额有限,感兴趣的扫描下方海报二维码,了解话题详情,免费报名参与!



👇点击阅读原文,报名系统软件Tech Day!