标签 AI 下的文章

特斯拉首席工程师的忠告:用“单向门 vs 双向门”决策,看清分布式系统的未来

本文永久链接 – https://tonybai.com/2025/07/01/predicting-the-future-of-distributed-systems

大家好,我是Tony Bai。

身处技术浪潮之中,我们每个人或许都曾有过这样的焦虑:新的数据库、新的编程模型、新的 AI 框架层出不穷,我该如何选择?选错了,会不会让团队陷入泥潭,给自己留下难以偿还的技术债?

最近,特斯拉首席工程师 Colin Breck 在 Craft 2025 大会上做了一场题为《预测分布式系统的未来》的精彩分享。他并没有给出非黑即白的答案,而是提供了一个极其强大的思维武器,来帮助我们拨开迷雾,做出更有效的工程决策。这个武器,就是源自亚马逊创始人 Jeff Bezos 的——“单向门 vs. 双向门”决策框架

今天,我们就以这个框架为钥匙,跟随 Colin 的思路,去打开分布式系统的未来之门。

决策的“导航仪”:单向门 vs. 双向门

在深入技术细节之前,我们必须先理解这个核心框架。它将决策分为两类:

  1. 单向门 (One-Way Door): 这类决策后果严重,且难以逆转,甚至根本无法回头。一旦你迈进了这扇门,想再出来就要付出巨大的代价。对于“单向门”决策,Bezos 的建议是:必须极其谨慎,放慢速度,召集最相关的人,尽可能多地收集信息再做决定。

  2. 双向门 (Two-Way Door): 这类决策的影响不大,即使做错了,也可以轻松地“退出来”,再选择另一扇门。它的试错成本很低。对于“双向门”决策,应该快速、轻量地由个人或小团队做出,以保持高效率。

这个框架最大的价值在于,它提醒我们警惕一个致命的错误:把一个“单向门”决策,当作“双向门”来草率处理。 这种失误,可能会让你的组织背上沉重的技术包袱,长达数年。

现在,让我们带着这个“导航仪”,去审视 Colin 预测的分布式系统三大趋势。

趋势一:对象存储 —— 充满“双向门”的乐园

Colin 的第一个预测是,对象存储(以 S3 为代表)正在从过去的分析型负载,越来越多地走向事务型和操作型负载,成为下一代数据库和系统的基石。

为什么这个趋势如此确定?因为它为我们创造了大量的“双向门”。

过去,我们选择一个数据库(比如 MySQL),我们的数据、查询方式、扩展模式都被这个“整体”方案深度绑定。想从 MySQL 迁移到 PostgreSQL?这是一项艰巨的任务,更像一扇“单向门”。

而基于对象存储的新架构正在“解体”(Disaggregation) 传统数据库,将其拆分为多个可自由组合的组件:

  • 统一的存储层: S3 API 已成为事实标准。你可以用 AWS S3,也可以用 Google Cloud Storage,或者在本地部署 MinIO。更换存储后端的门是“双向”的。
  • 开放的数据格式: Parquet、ORC等开放格式让你的数据不再被数据库私有格式锁定。今天你可以用 Spark 分析它,明天可以用 DuckDB 查询它,后天可以加载到 Snowflake。更换计算引擎的门是“双向”的。
  • 可插拔的计算/查询引擎: DuckDB、DataFusion 这类库的崛起,让我们能像使用 SQLite 一样,直接对 S3 上的 Parquet 文件执行高性能 SQL 查询。这个查询引擎不满意?换一个!这扇门也是“双向”的。

这种架构的核心是互操作性与可移植性。它通过标准化和解耦,极大地降低了我们的决策风险和迁移成本。 正因为到处都是“双向门”,开发者可以放心大胆地拥抱这个趋势。

趋势二:新编程模型 —— 遍布“单向门”的迷宫

与对象存储的清晰图景相反,Colin 认为下一代编程模型的未来则要模糊得多,充满了艰难的“单向门”决策。

我们当前的开发模式(容器 + 应用代码 + 一堆库)存在很多问题:每个应用都在重复解决持久化、重试、状态管理等难题;安全补丁也难以管理。

为了解决这些问题,涌现出了一批新的编程模型,例如:

  • 持久化工作流平台: 如 Temporal
  • 分布式应用运行时: 如 Akka Platform、WasmCloud
  • 独特的运行时环境:GollumUnison

它们的目标很宏大:让开发者只关心业务逻辑,把持久化执行、状态管理、部分失败处理等分布式难题下沉到基础设施。

但选择其中任何一个,都几乎是一个不可逆的“单向门”决策。为什么?

  1. 巨大的投资: 这不仅是金钱投入,更是整个团队的学习成本和思维模式的转变。
  2. 深度锁定: 你的核心业务逻辑将与平台的 API 和抽象深度绑定,想迁移出去?难于登天。
  3. 生态系统风险: 这个平台或框架五年后还活着吗?如果它死掉了,你的系统怎么办?

正因为这些决策都是沉重的“单向门”,大多数团队宁愿继续使用 Kubernetes + 应用容器这种“我们已经知道”的模式,也不愿轻易踏入这个迷宫。

趋势三:AI 工程化 —— 可能是打开“单向门”的催化剂

那么,僵局如何打破?Colin 认为,催化剂可能就是 AI。

他一针见血地指出:“所谓的 AI 工程化(Operationalizing AI),其本质就是系统工程。”

那些时髦的术语背后,无论是 AI 工作流(AI Workflows)还是智能体(Agentic AI),其核心都是在解决经典的分布式系统难题:如何管理长周期任务、如何保证持久化执行、如何处理状态、如何容错……正如那句经典吐槽:“到35岁,你应该已经重复造过工作流引擎、任务队列和对象关系映射的轮子了。”

AI 的浪潮带来了巨大的需求压力和创新动力,使得人们愿意去冒更大的风险,去尝试那些能解决这些复杂问题的“单向门”方案。一个创业公司为了快速实现一个复杂的 AI Agent,可能会选择直接拥抱 Temporal,因为从头造轮子的成本更高。

但这同样是一个陷阱。Colin 警告说,要警惕那些看似“先跑起来再说”的“双向门”决策,比如随便搭一个临时的任务队列来驱动 AI 应用。这种决策很可能在未来演变成一笔巨大的、难以偿还的技术债,最终变成一个你当初没意识到的“单向门”。

给 Gopher 的启示:用“门”的思维审视我们的技术栈

这个决策框架对我们 Gopher 来说,同样具有极强的指导意义。我们可以用它来审视日常的技术选型:

  • 选择 Web 框架(Gin vs. 标准库): 这更像一个“双向门”。Gin 遵循了标准库的 http.Handler接口,即使以后想换,迁移成本也是可控的。
  • 引入一个新的数据库(PostgreSQL vs. TiDB): 这更偏向“单向门”。它涉及到数据模型、ORM、运维、团队知识储备等方方面面,一旦深入使用,更换成本极高。
  • 采用一个微服务框架(Go-kit vs. Kratos): 这也接近“单向门”。它会深度影响你的项目结构、RPC 方式、服务治理逻辑,更换起来伤筋动骨。

反观 Go 语言自身的设计哲学——简洁、小接口、组合优于继承——是不是正是在鼓励我们创造更多的“双向门”?Go 避免了庞大而笨重的“全家桶”式框架,而是提供小而美的标准库和可组合的组件,让我们能以更低的锁定风险构建系统。这本身就是一种降低决策成本的智慧。

小结:决策的智慧,在于选择正确的“门”

Colin Breck 的分享,并没有给我们一张未来的藏宝图,而是给了我们一个更宝贵的东西:一个决策的指南针

技术世界里没有绝对的“好”与“坏”,只有在特定场景下的“合适”与“不合适”。“单向门 vs. 双向门”框架的价值,不在于帮你找到唯一的正确答案,而在于帮你为不同类型的决策,建立起正确的决策流程。

对于那些充满不确定性、一旦走错就万劫不复的“单向门”,请务必保持敬畏,放慢脚步。而对于那些无伤大雅的“双向门”,不妨大胆尝试,快速迭代。

正如 Colin 在结尾引用的那句话:“让我们的抽象保持流动性。” 这或许不仅是对技术架构的建议,更是对我们决策方式的邀请——去寻找和创造尽可能多的“双向门”,以降低风险、拥抱变化,并保护我们最宝贵的投资:时间和精力。

你最近面临过哪些“单向门”或“双向门”决策?你是如何思考的?欢迎在评论区分享你的故事。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!



商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

RedMonk最新排行出炉:Go语言稳居Top 12,AI 冲击下 Stack Overflow 权重生变?

本文永久链接 – https://tonybai.com/2025/06/20/redmonk-index-2025-jan

大家好,我是Tony Bai。

编程语言的江湖,总是风起云涌,新旧更迭。而 RedMonk 编程语言排行榜,以其独特的视角(结合 GitHub 的代码活跃度和 Stack Overflow 的讨论热度),长期以来都是我们观察这片江湖风向的重要参考。

就在最近,RedMonk发布了其2025年1月的编程语言排行榜。榜单本身波澜不惊,Top 20 的名单几乎与上一期如出一辙,这似乎预示着编程语言领域正进入一个相对“固化”的时期。然而,在这份看似平静的榜单背后,却潜藏着一个巨大的变量,一个足以让 RedMonk 自身都开始反思其排行方法论的“房间里的大象”——那就是 AI 的崛起,及其对 Stack Overflow 数据源的颠覆性冲击。

今天,我们就来解读这份最新的 RedMonk 排行榜,看看 Go 语言在其中表现如何,更重要的是,探讨在 AI 时代,我们该如何看待这类排行榜,以及 Go 语言的未来又将走向何方。

RedMonk 排行榜:方法论回顾与本次看点

在解读具体排名之前,我们有必要简单回顾一下 RedMonk 排行榜的方法论。它并非统计当前“谁用得多”,而是试图通过两个维度的数据来预测语言的未来采用趋势

  1. GitHub 数据: 主要通过 GitHub Archive 拉取数据,分析代码提交中使用的语言,代表了语言在实际项目开发中的活跃度和受开发者青睐的程度。
  2. Stack Overflow 数据: 通过其 Data Explorer 查询,分析特定语言标签下的问题和讨论数量,代表了语言在开发者社区中的关注度和开发者在学习、使用过程中遇到的问题量(间接反映了活跃度)。

RedMonk 强调,榜单的“分层 (Tiering)”比具体的数字名次更重要,因为精确排名本身就存在误差。同时,对于排名靠后的语言,由于数据量较小,其排名的波动性和不确定性会更大。

本次 2025 年 1 月的排行,最大的看点莫过于 RedMonk 博客作者 Stephen O’Grady 对 Stack Overflow (以下有时简称SO)数据有效性的公开疑虑。他明确指出,随着 ChatGPT、GitHub Copilot 等 AI 工具的普及,开发者遇到问题时,直接向 AI 提问的比例越来越高,而去 Stack Overflow 搜索或提问的需求显著下降。这导致 Stack Overflow 整体流量和特定语言标签下的讨论量都在萎缩,从而可能扭曲了基于 StackOverflow 数据的排名。RedMonk 甚至在考虑未来是否要调整 SO 数据的权重,甚至完全放弃使用它。

这无疑为我们解读本次榜单,尤其是观察那些 SO 数据占比较重的语言,提供了一个全新的、也是更具挑战性的视角。

Go语言:稳坐 Top 12,GitHub 根基深厚

在这样的背景下,我们来看看Go语言的表现:

  • 排名: Go 语言在此次排行中位列 第 12 位,与统计语言 R 并列。
  • 稳定性: Top 20 的榜单几乎“纹丝不动”,Go 的排名也保持了稳定。回顾历史,Go 从 2015 年的第 17 位,稳步上升,并在近几年持续超越了曾经在 JVM 生态中势头强劲的 Scala 和 Kotlin。
  • 解读 Go 的“稳”: 在 Stack Overflow 数据可能“失真”、整体排行趋于“凝固”的大环境下,Go 语言能够牢牢占据 Top 12 的位置,这本身就充分说明了其在 GitHub 上的代码活跃度和开发者基础的极端稳固。这与 Go 在云原生、后端服务、基础设施等领域的深厚积累和广泛应用密不可分。

关键语言动态:Go 在比较中更显价值

RedMonk 的博文还特别点出了一些值得关注的语言动态,通过与这些语言的对比,我们可以更清晰地看到 Go 的独特价值和发展趋势。

  • TypeScript (第 6) 的“平台期”与 Go 的“幕后英雄”角色

尽管 TypeScript 在 JavaScript 生态中不可或缺,其排名也高居第 6,但博文指出它似乎进入了一个“增长平台期”,难以再向上突破。

RedMonk 提到了 TypeScript 在可扩展性 (scalability) 方面可能遇到的挑战,并直接点名了微软决定使用 Go 语言重写 TypeScript 的编译器 (tsc) 和相关工具链这一标志性事件。

当然,这无疑是对 Go 语言在构建大规模、高性能开发工具和基础设施方面能力的最好背书。当连 TypeScript 这样的语言工具自身都遇到扩展性瓶颈时,他们选择了 Go 作为解决方案。这充分证明了 Go 在工程效率、编译速度、并发处理和静态二进制部署等方面的核心优势,使其成为构建下一代开发工具(编译器、Linter、语言服务器等)的优选语言。Go,正在成为越来越多关键技术的“幕后英雄”。

  • Kotlin (并列 14) / Scala (并列 14) 的“增长天花板”

这两位 JVM 生态的“优等生”排名稳定,但向上突破的动力似乎不足。Go 早已在排名上超越它们。

随着 Go 在微软等传统“非 Go”大厂中找到新的应用场景(如上述 TypeScript 工具链),以及 Rust 在对安全和性能有极致要求的服务端负载中逐渐蚕食地盘,Kotlin 和 Scala 的增长路径面临着不小的挑战。

Go 凭借其简洁的语法、高效的并发模型、出色的网络性能、以及与云原生生态的无缝集成,在现代后端服务开发领域,对传统的 JVM 语言形成了持续且强劲的竞争压力。对于追求快速迭代、高并发、低资源占用的新项目,Go 往往是更具吸引力的选择。

  • 新兴语言 (Ballerina, Bicep, Zig 等) 的“SO 困境”

许多被 RedMonk 关注的新兴语言,在本次排名中大多出现了下滑,并且呈现出 GitHub 排名远好于 Stack Overflow 排名的特点。

这很可能就是前文提到的 AI 对 Stack Overflow 数据冲击的直接体现。新兴语言本身在 SO 上的讨论基数就小,当整体 SO 流量下降时,它们受到的负面影响会更加不成比例。

这再次提醒我们,在评估语言趋势时,需要警惕单一数据源(尤其是易受外部因素干扰的数据源)的局限性。Go 之所以能在榜单中保持稳定,更多是依赖其在 GitHub 上庞大且活跃的真实代码贡献和项目应用,这比社区讨论热度更能反映语言的实际生命力。

AI 时代,编程语言排行榜的挑战与 Go 的新机遇

AI 代码助手(如 ChatGPT, GitHub Copilot)的普及,正在深刻改变开发者的工作习惯。遇到问题,许多人可能首先想到的是“问 AI”,而不是去 Stack Overflow 搜索或提问。这对依赖 SO 数据的 RedMonk 排行榜方法论构成了前所未有的挑战。Stephen O’Grady 的坦诚,也预示着未来编程语言趋势的观察方法可能需要革新。

在这样的背景下,Go 语言的机遇何在?

  1. GitHub 数据权重可能提升: 如果 SO 数据权重下降或被弃用,那么更能反映语言实际使用和生态发展的 GitHub 数据将变得更加重要。Go 在这方面一直表现强劲,拥有大量高质量的开源项目和活跃的贡献者。
  2. AI 基础设施的构建者: 正如我在之前的文章中多次提到的,Go 语言凭借其高性能、高并发、易部署的特性,非常适合构建支撑 AI 大模型训练、推理服务的底层基础设施(如分布式计算框架、模型服务平台、向量数据库、数据管道等)。许多流行的 AI 开源项目(如 Ollama)也选择使用 Go。
  3. AI 应用的工程化落地: AI 模型最终需要被集成到实际的应用和服务中才能产生价值。Go 的简洁性、强大的网络库、以及出色的工程化特性(如编译速度、静态部署),使其成为将 AI 模型快速、可靠地工程化、产品化的优秀选择。
  4. “工具的工具”: Go 在构建开发工具方面的优势,在 AI 时代将更加凸显。无论是构建 AI 代码分析工具、模型部署工具,还是 AI 辅助开发平台的后端,Go 都能胜任。
  5. 对 LLM 的“友好性”探索: 虽然目前 Go 在 LLM 训练数据中的占比可能不如 Python,但 Go 语言相对简单的语法、明确的类型系统、以及强大的标准库,是否可能在未来使其更容易被 LLM 理解、分析和生成高质量代码?这是一个值得探索的方向。

小结:喧嚣之中,坚守价值,拥抱未来

RedMonk 的最新编程语言排行榜,在 AI 席卷技术圈的当下,给我们带来了新的思考。Stack Overflow 讨论热度的“失真”,或许只是 AI 改变我们工作和学习方式的一个缩影。

对于 Go 语言而言,其在榜单中的稳定表现,特别是在 GitHub 维度上的持续强势,证明了其深厚的开发者基础和旺盛的生态活力。像微软选择用 Go 重写 TypeScript 工具链这样的行业案例,更是对其核心竞争力的有力印证。

面对 AI 带来的不确定性,Go 语言凭借其在构建高性能网络服务、云原生基础设施、以及高效开发工具等领域的明确价值定位,依然展现出强大的韧性和广阔的前景。未来,它不仅将继续作为这些领域的中流砥柱,更有望在 AI 基础设施和工程化领域扮演越来越重要的角色。

作为 Gopher,我们既要看到排行榜数据的变化,更要理解变化背后的深层逻辑。坚守 Go 语言的核心价值,持续学习和实践,同时对新技术保持开放和探索的心态,这或许才是我们在这个快速变化的时代中,最稳妥的前行之道。

你对这份 RedMonk 榜单有什么看法?AI 的出现改变了你获取技术信息的习惯吗?欢迎在评论区分享你的观点!


精进有道,更上层楼

极客时间《Go语言进阶课》上架刚好一个月,受到了各位读者的热烈欢迎和反馈。在这里感谢大家的支持。目前我们已经完成了课程模块一『语法强化篇』的 13 讲,为你系统突破 Go 语言的语法认知瓶颈,打下坚实基础。

现在,我们已经进入模块二『设计先行篇』,这不仅包括 API 设计,更涵盖了项目布局、包设计、并发设计、接口设计、错误处理设计等构建高质量 Go 代码的关键要素。

这门进阶课程,是我多年 Go 实战经验和深度思考的结晶,旨在帮助你突破瓶颈,从“会用 Go”迈向“精通 Go”,真正驾驭 Go 语言,编写出更优雅、
更高效、更可靠的生产级代码!

扫描下方二维码,立即开启你的 Go 语言进阶之旅!

感谢阅读!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats