转载

TiKV和Linkerd是如何为Rust生态系统做出贡献的

作者: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众多项目中正在使用的所有编程语言感兴趣,请继续关注即将发布的关于该主题的博客文章。

点击【阅读原文】阅读英文原文。

TiKV和Linkerd是如何为Rust生态系统做出贡献的

2020年7月30日-8月1日

线上峰会介绍

这里有封H5【邀请函】

官方报名通道正式开启,首届线上KubeCon开源盛会即将起航

TiKV和Linkerd是如何为Rust生态系统做出贡献的

扫码 免费 注册

大会网站,https://cncf.lfasiallc.cn/

TiKV和Linkerd是如何为Rust生态系统做出贡献的

扫描二维码联系我们!

CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。 

CNCF 云原生计算基金会 )致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。

TiKV和Linkerd是如何为Rust生态系统做出贡献的

原文  http://mp.weixin.qq.com/s?__biz=MzI5ODk5ODI4Nw==&mid=2247491302&idx=2&sn=e6f0d6b4dc83eb254d830a5565742f56
正文到此结束
Loading...