我用 Rust 重写了一个 Java 微服务,然后丢了工作

罪名?我把一个叫 “Billing-Quotes” 的、波澜不惊的 Java 微服务(13 个上游)用 Rust 重写了。p95 更瘦了、CPU 更冷静、内存更低,基础设施账单开始像小冰箱数字那样往下掉。然后 CTO 叫我带个箱子来。

一出关于“选了不合时宜的技术”的黑色喜剧。

周一我还有工牌。

周二我的工牌成了杯垫。

罪名?我把一个叫 “Billing-Quotes” 的、波澜不惊的 Java 微服务(13 个上游)用 Rust 重写了。p95 更瘦了、CPU 更冷静内存更低,基础设施账单开始像小冰箱数字那样往下掉。然后 CTO 叫我带个箱子来。

这是一份技术正确、政治错误、文化核污染的事后剖析。

如果你也曾在凌晨两点盯着 JVM 火焰图,幻想着交付一个干净利落的 Rust 单一二进制——这就是你的带人头数的爱情喜剧

现场:看上去“有罪”的服务

  • 患者:Spring Boot 3.x,Java 21;双副本;每个 2 vCPU / 4 GB RAM
  • SLO:p95 < 120 ms;可用性四个 9(和我健身卡一样“立志”)
  • 流量:午间尖峰——批量刷新 + 用户像“打了浓缩咖啡的啄木鸟”一样猛点 Get Quote
  • 性能异味:JSON 瞬时高峰引发 GC 打嗝;“DTO 的 DTO”善意设计把分配量吹胀
  • 额外阻力:一个“为一致性”而触一切的网关跳转;以及负责鉴权、指标、零食(?) 的 sidecar

不是不能跑——只是穿着羽绒服去健身

痒点:为什么伸手去拿 Rust

三个信号在喊“上系统语言”:

  1. 高扇出 I/O:内部 gRPC + 话多的支付适配器
  2. 炙热 JSON 路径:每一次多余分配都会折返到 p99 身上
  3. 尾延迟比吞吐更重要:长尾在咬收入

我搞了个 spike:Axum、Tokio、serde、reqwest(gRPC 用 tonic)、sqlx 接 Postgres、tracing + OpenTelemetry。 镜像了每个 endpoint 与错误契约,像博物馆藏品一样保留了 header,用可灰度的 strangler 做壳,从 1% → 10% → 50% → 100% 切,不惊动 Security。

两周金丝雀,同样的流量结构:

  • p95:118 ms → 94 ms(稳)
  • p99:由刺儿变顺滑(短且少的尖 spikes)
  • 峰值 CPU / RPS:降约 30%
  • 稳态内存:降约 45%
  • 基础设施账单:个位数百分比下降(不是电影桥段,但 CFO 会笑)
  • 启动时间“眨眼即绪”,产物小巧,仪表盘无聊到刚刚好

我有图表。我有 README。我有笑容。很快,我没有工作。

那场让我“丢剧情”的评审会

开头是乐观的:

  • SRE:“数字很好看。”
  • DevOps:“二进制体量可爱。”
  • 经理:“值班轮换能接住吗?”
  • 安全:“威胁建模在哪儿?”
  • CTO:“我们对语言蔓延(language creep)的政策是什么?”

语言蔓延。我追的是毫秒;他们担的是治理——让公司可预测的安静胶水

眉头的潜台词:

  • 值班素养:我们的 Playbook 是 JVM 型:JFR、heap dump、熟悉的告警。Rust 需要新肌肉
  • 招聘与覆盖:凌晨三点,谁能安全下手?我们的板凳深度在 Java
  • 安全流水线:SBOM、SAST、许可证校验——全为 JVM 调了味。Rust 很棒,我们的链路没准备好
  • 平台一致性千百个局部胜利,扛不住一个组织级异类
  • 变更周期:我们削了延迟,却加了几周的跨团队工作。

我的技术胜利,成了社会性退步。我把尾巴收好了,却把地图炸了。

四个把“升职”写成“离场”的错误

1) 优化了错误的 KPI

死盯 p95,领导层在乎交付速度人员跨服务机动性。我的图没动他们的图。

2) 低估了“平均解释时间”

复盘靠共享语言与共享工具。我在一句话中途,引入了新方言

3) 把工具链债务当“以后再说”

工程师把 toil 当谜题;组织把 toil 当风险。我的谜题,是他们的呼叫器

4) 把“更快更省更稳”误以为“更可预测”

新语言重写一个服务,是穿着“局部重构”的外衣在宣布一项战略

Rust 到底改变了什么(和没改变什么)

真的改变了

  • 堆内戏码 → 所有权清晰:炙热的 JSON 路径不再像肥皂剧一样分配。
  • 尾延迟:更少的 GC 方差;更少“p99 在尖叫”的时刻。
  • 启动与空转足迹:冷启动与scale-to-zero 的游戏更轻松。

没改变(抱歉)

  • 数据库:如果你的瓶颈是 Java 里的 Postgres,换 Rust 后它还是 Postgres——只是生命周期干净了。
  • 跨团队牵引新栈 → 新工具 → 新人要训练
  • 功能上线速度:如果是产品逻辑占大头,语言速度不等于出货速度。

好笑的部分

财务刚发来账单变好的喜讯,安全就问谁批准了新 SBOM 流水线。 PM 问这会不会影响 Q4 促销。 SRE 问 eBPF 闹脾气怎么 on-box 调试。 CTO 问还有多少服务会“受益于 Rust”。

实话实说:“大概一把手,五个以内。” 他点头:“我爱工艺,我不爱先例。”

事实证明:先例的分量,比二进制还重。 周五,我的工牌——红了。

更好的路线图(我本该这么干)

如果你对 Rust 手痒(有时值得),请按这套无聊但正确的顺序来:

  1. 申请一条“运行时例外”通道一页纸、一个季度、一个服务。准入标准:量化 SLO 痛点、可隔离的热路径、成熟库、可回滚计划、以及达不到就日落的条款
  2. 先上 sidecar,不要重写把一个热路径(序列化、加密、图像处理)剥离成同机 Rust sidecar,Java 仍是老大同仪表盘测尾部改善。
  3. 让平台团队拥有工具链争取小额立项:SBOM、SAST、签名、追踪规范、崩溃捕获、仪表盘。平台点了头,你是公民,不是游击
  4. 把可观测性当“契约”写代码前,先锁定日志格式、Trace ID、错误分类、仪表盘“看起来一样,跑得更好”才是容易过会的叙事。
  5. Strangler + 业务级开关一个 endpoint起步。用开关或 Envoy 路由前滚/回滚。回滚要以分钟计,而不是开会计
  6. Day 1 就发布“删除计划”能删是实验的灵魂。出生证明上就写上讣告草稿

没行话的复盘

What Went Well(做得好)

  • 金丝雀干净度量清晰可逆切换
  • 真实可复现的尾部改善
  • 文档解释形态而不仅是语法

What Went Badly(做坏了)

  • 性能压过了可预测性
  • 未融资的工具与培训债
  • 治理当作“别人的 Jira”

Next Time(下次要这样)

  • 先 sidecar,后重写(也许永不)
  • 平台拥有安全与 SBOM 后再落代码
  • 先要政策,不要在 PR 里偷带战略

一个袖珍 Go/No-Go 清单(拿走就用)

  • SLO 痛点已量化业务可见
  • 热路径可被开关隔离
  • 平台已买入:SBOM / SAST / 签名 / 追踪
  • 值班素养:至少 4 人能在凌晨三点安全排障
  • 分钟级回滚
  • 删除计划已批准

把它贴在键盘边。对不齐就先去调 GC修 N+1,把英雄披风留到万圣节。

AI大模型学习福利

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。


因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值