作者:Luc Perkins
Rust是一种系统语言,最初由Mozilla创建,用于驱动其实验性的Servo浏览器引擎的部分组件。Rust曾经是高度实验性的,很少使用,但近年来已经变得非常稳定和成熟,现在被用于从数据库到操作系统再到Web应用程序的各种环境中,甚至远远超出了这一范围。而且开发人员似乎真的很喜欢它。
你可能会惊讶地发现,令人尊敬的Rust也在CNCF建立了坚实的立足点。事实上,我们的两个孵化项目,TiKV和Linkerd,都有用Rust编写的基本组件,这两个项目用另一种语言会有很大的不同-而且可能不太成功。
在这篇文章中,我想阐明TiKV和Linkerd是如何为Rust生态系统做出贡献的。
TiKV
TiKV是最初由PingCAP公司创建的分布式事务性键值数据库。它的核心概念取自久负盛名的Google Spanner和Apache HBase,主要用于为高层数据库(如TiDB)提供低级键/值-“TiKV”中的“KV”-存储。
除了核心仓库,TiKV项目还为Rust生态系统贡献了多个库:
grpc-rs,一种用于GRPC内核的Rust包装器
raft-rs,RAFT共识协议的Rust实现。这是TiKV和etcd使用的共识协议,etcd是Kubernetes和另一个CNCF项目使用的分布式键值存储
fail-rs,用于在运行时注入“故障点”
async-speed-limit,一个用于异步限速多字节流的库
rust-prometheus,一个用于Rust的Prometheus客户端,使你能够检测你的Rust服务,即暴露由Prometheus抓取的格式正确的指标。
pprof-rs,一个可以集成到Rust程序中的CPU分析器。使你能够创建CPU活动的火焰图,并支持Protocol Buffers输出。
PingCAP的博客也有一些很受好评的关于Rust的文章,包括 The Rust Compilation Model Calamity 和 Why did we choose Rust over Golang or C/C++ to develop TiKV? 如果你和我一样对见证用Rust编写的新一代数据库感到兴奋,那么你真的应该密切关注TiKV及其对Rust生态系统的贡献。
https://pingcap.com/blog/rust-compilation-model-calamity
https://pingcap.com/blog/2017-09-26-whyrust
Linkerd
Linkerd是一个专注于简单性和用户友好性的服务网格。如果你曾经对其他服务网格技术的复杂性感到沮丧或不知所措,我推荐Linkerd入门指南。如果你错过了,Linkerd有一个丰盛的2019年,并将在2020年继续快速增长。
可以说,Linkerd最重要的组件是它的服务代理,它与你的服务一起位于同一Kubernetes Pod中,并处理进出服务的所有网络流量。服务代理很难编写,因为它们需要快速、安全,并且需要具有与速度和安全性相称的最小内存占用。
Linkerd的创建者选择Rust作为Linkerd服务代理。他们为什么要做出这个选择呢?我联系了Linkerd的联合创作者Oliver Gould,提供了详细的信息:
当我们在5年前开始构建Linkerd时,我们的一些第一批原型实际上以Rust编写(早在语言发布1.0之前)。不幸的是,当时它还不够成熟,不能满足我们的需求,所以Linkerd的第一个实现源于Twitter的Scala生态系统。当我们在Linkerd1.x上工作时,Rust的Tokio运行时已经初具规模,特别适合构建类似代理的东西。因此,在2017年初,我们开始使用Go控制平面和Rust数据平面重写Linkerd。Tokio(及其姊妹项目Tower和Hyper)通过使用异步网络构建块扩展了Rust的安全、正确的内存模型,从而使这一切成为可能。这些构建块现在正在Linkerd之外的各种性能敏感用例中使用,我们已经围绕这两个项目构建了一个巨大的贡献者社区。如果你对此感兴趣,请来参与!
虽然Linkerd还没有像TiKV那样开源Rust库,但该项目最近通过CNCF赞助的Rustls库安全审计为Rust生态系统做出了重大贡献。顾名思义,Rustls是Rust的传输安全层(TLS)库,Linkerd代理使用该库实现其相互TLS(MTLS)特性,这是其安全保证的关键部分。你可以在 此PDF 中查看审核结果。负责其他几个CNCF项目安全审计的公司Cure53“无法发现任何破坏应用程序的安全缺陷”。
https://github.com/ctz/rustls/raw/master/audit/TLS-01-report.pdf
还有更多吗?
我自己就是Rust的铁杆粉丝,虽然我真的 只涉猎过 它。我祈祷TiKV和Linkerd只是个开始,我们将在云原生世界中看到更多的Rust,无论是用Rust编写的新CNCF项目、将组件移植到Rust的现有项目,还是现有系统的新Rust客户端库。
https://github.com/lucperkins/rust-graphql-juniper-actix-diesel-postgres
如果你对CNCF众多项目中正在使用的所有编程语言感兴趣,请继续关注即将发布的关于该主题的博客文章。
点击【阅读原文】阅读英文原文。
: 线上峰会介绍
: 这里有封H5【邀请函】
: 官方报名通道正式开启,首届线上KubeCon开源盛会即将起航
扫码 免费 注册
: 大会网站,https://cncf.lfasiallc.cn/
扫描二维码联系我们!
CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF ( 云原生计算基金会 )致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。