成功故事:Rust在企业领域的应用
#zalando
本文描述了zalando公司从Scala转向Rust的成功故事。
缘起:
2016年该文作者作为Scala开发者加入了Zalando公司。半年后,他们打算开始做一个新的应用,与此同时,团队内商量该使用什么新技术,Rust就在这时被提及,同时他们也用Rust快速实现了原型,但是最后这个新应用被取消了。但Rust却成为了该团队的一门候选语言。
碰壁:
不久之后,Zalando的主要服务(Scala Web)出现了一些问题。在高负载情况下,应用程序出现了大量的内存占用,有时也会耗尽内存。所以他们起了一个念头:用Rust重写整个服务会怎么样?经过几天的实验,重写了该服务,测试以后发现比之前的scala程序有更好的延迟,内存和CPU也占用更少。而且可以处理更多的负载。这时,他们的领导友情提醒,Rust并不是团队的「官方」技术,如果要将此Rust程序正式上线到生产环境,可能会出现严重的风险。最后经过Zalando技术团队内部协商,Rust最终被决定为「评估」状态,所以这件事就又就此作罢了。
破竹:
事情在2017年中期实施新的服务产生了转机。他们准备实现一个简单的流服务,就是执行一些RESTful调用再将数据写入redis。领导再次对他们表示了关切:是否可以真的上生产环境?新人来了以后如何接手Rust?于是他们在接下来的几周内,重点分析了应用程序中可能出现的问题,并找出了如何使用Rust来避免这些问题,核心原因是Rust的安全性和生产力,而且使用Rust可以有效地利用资源。他们有计划使用k8s来运行pods节省成本。就这样和领导「推杯换盏」持续说服花了半年时间,接近年底的时候他们都不知道到底Rust能不能上生产。
在2017年年底的时候,为了应对需求变化而对团队进行了重组。作者本来是6人团队,减少到4人。然后领导说:你们这是一个Rust团队。这真的是出乎了作者的意料。事情就这么落地了。他们从一个简单的CRUD项目开始逐步将旧的系统替换为Rust实现的新系统。最后,他们实现了最初的目标,将Rust引入了团队成为了「官方技术」。
(也许这个故事可以给你一些启示,帮助你在公司内推广Rust)
PingCAP Talent Plan 第二期火热来袭,线上课程全面开放!
另外,我给准备参与此人才计划的选择阅读《Rust编程之道》的读者,提供一些提高学习效率的建议。
- 先看第一章,对Rust有整体了解,重点是了解Rust社区、Rust语言架构和Rust编译过程
- 使用检索式阅读,把Rust By example过一遍,把Rust语法先通览一遍。
- 然后再看《Rust编程之道》第二章,重点理解「一切皆表达式」的概念,借此把语法再次梳理一遍
- 攻克所有权,同样检索式阅读看三四五章。
- 可以结合其他的学习资料,进行主题式阅读(针对一个主题,比较式阅读学习)
下图为检视阅读方法:
「系列文章」Rust中实现DSL的挑战
#DSL
「系列文章」理解Futrue Part I
#future #async
使用Tensorflow Rust进行人脸识别
#tensorflow #dl
本文将引导你基于一些现有模型来使用rust和tensorflow完成面部识别。 使用的是名为mtcnn的预训练模型进行人脸识别。
zexe: 基于零知识证明的去中心化私有计算库
#Zeroknowledge
themis 0.11.1发布
#crypto
Themis 是一个高级加密服务库。它提供了复杂的加密方式用于各种基础架构平台,新版本增加了对Rust的全力支持。
tract: 适用于TF和ONNX的小型推理引擎
#ONNX #TensorFlow #deeplearn
对语音处理等实时应用也提供半实验性支持。
使用Rust编写你的第一个CLI应用
#cli
文章介绍了如何使用Rust构建一个简化的cat命令
trassh: 一个简单的SSH蜜罐
#sshtrapit
类似于Endlessh,它会打开一个套接字并伪装成一个 SSH 服务器,非常缓慢地发送一个无休止的随机 SSH banner,使 SSH 客户端一次锁定数小时甚至数天。目的是将真正的 SSH 服务器放在另一个端口上,而在虚假的服务器上卡住入侵者,防止其影响到真正的服务器。
Inko: Rust实现的面向对象语言
#lang
号称安全无痛地处理并发,主要是支持类Erlang轻量级进程来处理并发。
Rust和性能测试指南
#benchmarking
这篇文章主要关注在Rust中如何创建令人满意的基准测试
日报订阅地址:
评论区
写评论还没有评论