Rust不是凶手:Cloudflare宕机背后的行业焦虑与真相
前几天Cloudflare又双叒叕挂了,半个互联网跟着一起趴窝。
然后你猜怎么着?社交媒体上炸开了锅,大家开始找凶手。而这次被拎出来挨骂的,竟然是Rust。
是的,那个号称"内存安全"、“零成本抽象"的Rust,那个设计出来就是为了防止程序员搞出内存bug的语言,被扣上了"不靠谱"的帽子。
这就好比你家自来水管爆了,你不去怪年久失修的管道,反而跑去骂新装的净水器:“都是你的错!”
发生了什么?
简单说,Cloudflare服务出了问题,导致一大堆依赖它的网站和服务都跟着挂了。从电商到金融科技,从安全工具到各种API,全都躺平了。
然后网上就开始有声音说:“看吧,Rust果然不行,不稳定!”
等等,让我捋一捋这逻辑:
Cloudflare的架构设计导致了单点故障 → 服务挂了 → Rust刚好在技术栈里 → 所以Rust不行?
这推理链条断得比我的发际线还厉害。
真正的问题是什么?
让我打个比方。
想象一下,你们小区只有一个快递柜,所有快递都往这一个柜子塞。有一天快递柜坏了,整个小区的快递都没法取了。
这时候你会怪快递柜的锁是什么材质吗?还是应该想想为什么小区只装了一个柜子?
Cloudflare的情况差不多。我们把大半个互联网都搭在了少数几个基础设施服务商身上,然后祈祷他们永远不会打喷嚏。
这不是Rust的问题,这是系统架构设计的问题,是整个行业过度依赖单一节点造成的单点故障风险。
那为什么要骂Rust?
好问题。这里面有点门道。
Rust这门语言有个特点:它会强迫你面对那些你一直在逃避的问题。内存管理、所有权、生命周期、并发安全……这些东西在C/C++里你可以假装看不见,但在Rust里,编译器会像你妈一样追着你问:“这个变量谁负责释放?那个引用会不会悬空?”
写了二十年C++的老哥们,突然发现自己那套"靠经验和手感"的玩法不灵了。编译器不给面子,不管你是十年经验还是二十年经验,该报错就报错。
这让一些人很不爽。
所以当Cloudflare出事的时候,有些人心里那个小火苗就窜出来了:“哈!终于逮到机会说Rust不行了!”
但说实话,这更像是心理上的宣泄,而不是技术上的分析。
回顾一下历史吧
如果你觉得Rust社区drama,那你可能没见识过C/C++世界的精彩历史。
来,咱们数数这些年的名场面:
Heartbleed (2014年)
OpenSSL的一个越界读取漏洞。互联网加密的脊梁骨,被一个漏掉的边界检查给搞穿了。这是C代码。
Shellshock (2014年)
Bash里的一个解析漏洞,可以让攻击者远程注入命令。这个小bug在生产环境里安静地躺了22年才被发现。还是C代码。
WannaCry (2017年)
利用SMBv1的缓冲区溢出搞出来的勒索软件。一个内存bug,40亿美元的损失。C/C++代码。
Morris蠕虫 (1988年)
互联网历史上第一次大规模瘫痪。原因?C语言的缓冲区溢出。
你数数这些年有名有姓的安全漏洞,Heartbleed、Shellshock、Spectre、Meltdown……有多少是内存安全问题?
这些不是边角案例,这就是C/C++时代内存安全缺失的常态。
Rust的诞生,就是因为大家终于受够了——“也许让一个程序员忘了做边界检查就能搞瘫一个国家的医疗系统,这事儿不太对劲?”
真正该反思的系统架构问题
Cloudflare一倒,从金融科技到电商到安全工具,全跟着倒。
这说明什么?说明我们的系统架构设计有严重的单点故障隐患,把鸡蛋都放在一个篮子里了。
我们嘴上说着分布式、高可用、灾备冗余,实际上呢?把整个数字世界建在了几根柱子上,然后管这叫"最佳实践”。
互联网本来是设计成去中心化的,结果现在比当年的电话网还集中。Google、AWS、Cloudflare,这些不再是服务,而是基础设施。它们已经融入了经济运转的物理层面。
一个倒下,一片瘫痪。
然后我们不反思系统架构的单点故障问题,反而去骂编程语言?
这就像房子着火了,你不检讨为什么没装烟雾报警器,反而去骂灭火器的颜色不好看。
为什么有些C++开发者反应这么大
这部分其实挺好理解的,人之常情。
Rust正在做一件几十年来没有语言做成的事:让内存安全变成默认选项,而不是可选配置。Rust的内存安全机制从根本上改变了系统编程的游戏规则。
当Cloudflare出问题的时候,有些C++开发者心里会想:“终于有机会说一句’你看,Rust也不是完美的,你们还是需要我们’。”
但问题是:Rust不需要完美。
它只需要比那些造成历史上最大安全灾难的语言更安全就行了。而它已经做到了。
Rust真正的"罪行"
Rust让一件事变得很尴尬:在2025年还往生产环境里推送内存损坏bug,有点说不过去了。
它让你没法再用"未定义行为"来解释灾难性的bug。它让并发编程变得可控。它让安全成为默认值。它让工程师没法再自欺欺人。
Rust真正的"罪行"是:
它强迫工程师直面复杂性,而不是把复杂性外包给"经验"和"手感"。
说到底
Cloudflare事件不是Rust的问题,是架构的问题,是行业的问题。
如果互联网因为一家公司打了个喷嚏就瘫痪一片,那问题不在于人家用什么语言写代码,问题在于我们把整个文明建在了单点故障上。
有些人骂Rust,是因为Rust威胁到了他们的身份认同。它挑战了舒适区,让"我有二十年经验"这张牌没那么好使了。它暴露了多少技术债被当成正常现象。它证明了安全和性能可以兼得。
Rust不是在搞乱这个行业。
Rust是在照镜子。
编程语言之争从来不是关于语言本身,是关于人的心理。
而这一次,心理很简单:
Rust是几十年来第一门让老一套看起来不负责任的语言。
这就是为什么它会被骂。这就是为什么它会被攻击。这就是为什么Cloudflare的宕机会变成一场文化战争。
Rust不是问题。Rust是那面镜子。
只是很多人不太喜欢镜子里的样子。
写在最后
如果这篇文章让你有所收获,或者你也有类似的经历和看法,欢迎在评论区聊聊。
技术圈的争论年年有,但能让我们跳出情绪、看清本质的讨论不多。希望这篇文章能给你带来一些不一样的视角。
觉得有用的话,点赞、收藏、转发三连走起,让更多人看到不一样的声音。
关注公众号「梦兽编程」,我会持续分享编程技术、行业观察和一些有意思的技术八卦。咱们下篇文章见。