【Rust China Tour 深圳站 Meetup 回顾,附 PPT 下载】TiKV 内核研发工程师梁杨可欣老师分享 Rust 如何帮助 TiKV 保持代码鲁棒性

8 月 31 日下午,Rust China Tour 深圳站 Meetup 成功举办啦!活动现场吸引了近 80 位 Rust 爱好者参与,同时超过 1100 名观众在线上观看了直播,充分展示了 Rust 技术在中国开发者社区中的火热关注度,咱们的梁杨可欣老师也在现场分享 TiKV 项目,以及项目使用 Rust 过程中在代码鲁棒性方面的挑战与实践经验!一起来看看吧!

资料下载

01 Rust 如何帮助 TiKV 保持代码鲁棒性_梁杨可欣.pdf (1.5 MB)

梁杨可欣:Rust 如何帮助 TiKV 保持代码鲁棒性

:rocket: 分享嘉宾:

梁杨可欣|PingCAP 研发工程师,负责 TiKV 内核的研发工作

:orange_heart: 关键内容:

TiKV 作为 TiDB 的分布式事务型键值存储引擎,其代码的稳定性和可靠性对于整个数据库系统至关重要。梁杨可欣老师也向我们展示了 Rust 语言在构建高可靠性系统方面的独特优势。

TiKV 是由 Rust 语言构建的分布式键值存储系统,它是 TiDB 分布式数据库的核心组件。TiKV 以其高度分层和结构化的设计,以及强大的水平扩展能力而闻名。它支持多种数据模型,包括 SQL、事务、以及原始键值存储,这些都是通过其内部的组件如 RaftKV、MVCC 和 Local KV Storage 实现的。

在分布式系统中,代码鲁棒性是一个关键的考量因素。TiKV 作为一个分布式数据库的存储引擎,需要处理各种异常情况,如 IO 错误、网络异常等。这些异常在分布式事务中尤为复杂,传统的测试方法难以模拟这些边界条件,导致代码在实际运行中可能遇到未被充分测试的异常情况。

为了提高 TiKV 代码的鲁棒性,TiKV 引入了一个名为 fail-rs 的异常注入工具。这个工具的设计灵感来源于 FreeBSD 的 fail points,它允许开发者在代码中注入异常,以此来测试系统在各种异常情况下的行为。

fail-rs 的实现包括异常定义、注册和解析三个主要步骤。开发者可以通过特定的语法定义异常触发的概率、次数和具体行为,fail-rs 会在运行时解析这些定义并注入相应的异常。

它的使用非常简单,开发者可以在代码中引入 fail-rs,并通过简单的配置来启用异常注入。这使得在开发和测试过程中,可以更加方便地模拟各种异常情况,从而提高代码的鲁棒性。

通过这次分享,我们了解到 Rust 语言和 fail-rs 工具在构建高鲁棒性分布式系统中的应用。TiKV 通过利用 Rust 的安全性和 fail-rs 的异常注入能力,能够有效地提高代码质量,减少生产环境中的潜在问题。这对于任何构建高可靠性系统的开发者来说,都是一次宝贵的学习经验。

现场回顾

再次感谢梁老师的精彩分享!!:partying_face: