专栏名称: Java编程精选
关注语言编程Java,分享、交流Java编程技巧和信息
目录
相关文章推荐
芋道源码  ·  Spring Boot 中使用 JSON ... ·  昨天  
芋道源码  ·  高性能、无侵入的 Java 性能监控神器 ·  昨天  
Java编程精选  ·  手把手教你Java文件断点下载 ·  3 天前  
芋道源码  ·  别乱分层,PO、VO、DAO、BO、DTO、 ... ·  2 天前  
51好读  ›  专栏  ›  Java编程精选

公司Rust团队全员被裁,只因把服务写得「太稳定」:“项目0故障、0报警,那养着3个Rust工程师没...

Java编程精选  · 公众号  · Java  · 2025-06-03 18:00

主要观点总结

文章讲述了开发者Drogus所在公司因为一个成功的Rust项目而引发的一系列事件,包括项目选型、基准测试、服务上线、运行稳定后的团队调整、服务优化的惊人成果以及最终由于管理层变动导致的Rust服务被全面封禁和重写为Node.js的历程。文章还引发了开发者们的热议,许多人有类似的经历,并对这种现状进行了讨论。

关键观点总结

关键观点1: 项目背景介绍

一个疫情期间快速成长的独角兽初创公司,主要应用采用Ruby on Rails编写,部分工具使用Node.js。考虑用户增长预期,需要开发一个实时服务来支撑大量并发用户。

关键观点2: 技术选型与基准测试

团队最初倾向使用Rust,管理层对此有疑虑,于是进行了原型服务的对比测试。最终发现Rust版本速度最快、内存占用最低,被选定为实施方案。

关键观点3: Rust项目的成功与挑战

Rust实时服务成功上线并稳定运行,支撑起大量并发用户。但随着公司战略的调整和管理层的变动,Rust服务被全面封禁,原因是服务过于稳定导致团队无事可做。

关键观点4: Rust服务的后续遭遇

管理层决定重写Rust服务为Node.js版本。但首次重写尝试失败,因为Node.js实现同类服务需要重构架构,并且性能远不达标。最后,虽然Rust服务仍在运行,但由于没有维护团队,扩展需求被放弃或替换为次优方案。

关键观点5: 开发者热议

许多开发者分享了类似的经历,认为这种事情几乎在所有公司都会发生。有开发者指出,这不仅仅是管理决策的问题,更是决策者对技术认知的不足和对新技术的抵触情绪。


正文

请到「今天看啥」查看全文


技术选型与基准测试:Rust 脱颖而出

起初, 负责该项目的团队倾向用 Rust, 不过管理层 对此 有疑虑,便要求用不同的语言写几个原型服务做个对比测试。

于是, 团队 决定 用 Elixir、Rust、Ruby 和 Node.js 分别写一个原型 —— 不知为何 ,当时 Go 没有列入候选 Drogus 猜测可能是因为那时他在休假所以没人提。

几天后,四个原型都写完了,他们 开始对 进行性能测试。 测试结果 属于是意料之中

  • Rust 版本速度最快、内存占用最低

  • Elixir 次之;

  • Node.js 表现还可以,但受限于单线程运行时

  • Ruby 最慢。

值得注意的是,Rust 版本最初存在也一个小 bug:开发者用 async futures 给客户端发消息时,会遍历所有客户端来获取发送通道列表,这在高负载下会阻塞运行时几秒。 不过这个问题属于实现细节,对熟悉 Rust 的人来说并不难修复。

但由于写这个 Rust 原型的人是第一次写 Rust,经验不足, 而其他语言的原型都是由有经验的开发者完成的—— 所以,即使有些小 bug ,也不是不能理解


图片

从原型到正式上线,Rust 表现亮眼

测试完成后,团队成员讨论了各种语言的性能表现、易用性、在公司内部的适配性等等,最终再次选择了 Rust。很有意思的一点是,写 Rust 原型的那位开发者原本更偏好 Elixir(因为他用过),但实际写完后, 投票支持了 Rust。

原因很简单: Rust 太灵活了。

基于评估结果和团队判断,公司最终决定由 Rust 实现该实时服务。而出于项目进度考虑,原本应由独立团队开发的任务,转交给了有 Rust 经验 Drogus ,并由他与 Rust 原型作者合作开发。

为了赶进度, Drogus 决定 采用一个类似于数据库的极简设计。 在 Rust 中处理 10 万 连接不算难事,MVP( 最小可行产品 阶段也只需要实现基础功能: 查询某个用户是否在线、 用户在 应用的哪个区域;







请到「今天看啥」查看全文