标签 Concurrency 下的文章

AI 时代,Go 语言会“失宠”还是“封神”?—— GopherCon 2025 圆桌深度复盘

本文永久链接 – https://tonybai.com/2026/01/20/ai-and-go-opportunities-and-challenges

大家好,我是Tony Bai。

在 AI 的滔天巨浪面前,每一位 Go 开发者心中或许都曾闪过一丝不安:Python 似乎统治了一切,我的 Go 语言技能树还值钱吗?AI 会取代我写代码吗?我该如何在这个喧嚣的时代保持清醒?

GopherCon 2025 的压轴圆桌会议上,一场名为“AI 与 Go:机遇与挑战”的深度对话给出了答案。

嘉宾阵容堪称豪华(从左二到右分别是):

  • Ian Cottrell: Google工程师,现从事 AI Agent 开发
  • Katie Hawkman: 前 Go 团队成员,现 Mercari 平台工程师
  • David Soria Parra: Anthropic 技术专家,MCP (Model Context Protocol) 联合创始人
  • Jaana Dogan: 前 Go团队成员,Google Gemini Serving 团队专家, adk-go项目成员
  • Samir Ajmani: Google Go 团队工程总监

他们没有贩卖焦虑,也没有盲目吹捧,而是用冷静、务实的工程师视角,为我们描绘了 Go 在 AI 时代的真实版图。

Go 的新机遇:AI 基础设施的“基石”

当被问及“Go 能提供什么 Python以及其他编程语言 无法提供的价值”时,嘉宾们的回答出奇一致:生产级的可靠性与并发能力。

Samir Ajmani 提出了一个精准的洞察:Go 的崛起得益于云原生时代的爆发,而 AI 正在带来“第二次云原生机遇”。

  • 现状:目前的 AI/ML 基础设施大量依赖 Python,适合快速原型和实验。
  • 痛点:当这些原型需要走向大规模生产,需要处理高并发推理、构建复杂的 Agent 编排、或者实现像 MCP (Model Context Protocol) 这样需要高度可靠性的协议时,Python 的动态特性和性能瓶颈开始显现。
  • Go 的位置:Go 语言天生的高并发模型、静态类型安全、以及构建大规模分布式系统的基因,使其成为构建 AI 生产基础设施(Serving, Orchestration, Agent Protocols)的完美选择。

Katie 分享了一个真实案例:她在黑客马拉松中选择用 Go 而非 TypeScript 来编写 MCP Server,因为 Go 的代码在处理复杂协议逻辑时更易读、更易维护。

David(Anthropic)就个人经验和观察,认为Go 是目前AI最擅长生成的语言代码之一,这也是Go的一大优势!

Python 也许是 AI 的“训练语言”,但 Go 有望成为 AI 的“运行语言”

职业焦虑:AI 会取代我们吗?

面对“AI 取代程序员”的言论,嘉宾们的态度是——“这只是另一种生产力工具,它改变了工作方式,但提升了人的价值。”

  • Samir Ajmani:未来的软件构建方式可能会变成“组件组装”。但这依然需要懂系统设计、安全性和可靠性的专业人士来构建这些高质量的组件。对于初级开发者,门槛确实变高了(简单的代码生成不再是技能壁垒),但对于具备系统思维的工程师,这是最好的时代。
  • Jaana Dogan (Google):她提出了一个令人耳目一新的视角——“代码写得快了,不仅没让我失业,反而让我更强大了。” AI 极大地缩短了编码时间,这意味着工程师可以更快地去“连接点” (connect the dots):将孤立的组件串联成系统,与更多人协作,验证更多设计想法。个人的产出能力被放大了,你不再是一个单纯的“螺丝钉制造者”,而更容易成为一名“系统架构师”。
  • David Suryapara (Anthropic):作为一名非 Go 核心开发者,David 的观察更为冷静。他认为,纯粹的“代码编写”技能(例如熟练背诵 API、手写 CSS)确实面临贬值。但核心工程能力——如拆解复杂需求、设计分布式系统、处理边缘情况——将变得前所未有的重要。 AI 抬高了入行的地板,但也让那些拥有深厚解决问题能力的工程师变得更加不可替代。
  • Katie Hawkman:写代码从来不是工作中“最难”的部分,而是“最有趣”的部分。真正的难点在于——如何渐进式交付?如何设计良好的 UX?如何优化系统性能?这些是 AI 短期内无法完全替代的工程智慧。
  • Ian Cottrell:我有 40 年的开发经验,每一次生产力工具的飞跃(从汇编到 C,从 IDE 到自动补全),人们都说“不需要程序员了”。结果呢?我们的需求量反而更大了。我们只是在提升期望值,尝试解决更难的问题。

不要试图成为每一个 AI 工具的专家。选择一个工具(如 Cursor 或 Claude Code),深入掌握它,让它服务于你的工作流,而不是被它淹没。

理性审视:算力、能源与负责任的 AI

主持人提出了一个尖锐的问题:在区块链曾因高能耗饱受诟病之后,我们该如何理性看待 AI 巨大的算力和能源消耗?作为开发者,我们该如何权衡使用 AI 工具的成本?

嘉宾们的回答,揭示了工程优化在 AI 时代的巨大潜力:

  • Samir Ajmani (Google) 分享了一个令人振奋的实验:Go 团队尝试将 MCP 支持集成到 Go 语言服务器 (LSP) 中。结果发现,当 AI 能够直接调用精确的工具(Tools)而不是在那“空想”时,任务完成率提高了,延迟降低了,最重要的是——Token 消耗量减少了近 50%。 这意味着,通过优秀的工程工具(如 Go),我们可以显著降低 AI 的运行成本和碳排放。
  • Jaana Dogan (Google) 认为我们正处于优化的早期阶段。就像当年的数据库优化一样,模型推理 (Inference) 的效率优化将是接下来的重头戏。缓存、量化、专用硬件,这些工程手段将大幅抵消模型增长带来的成本。
  • David Suryapara (Anthropic) 提到了“小模型与蒸馏”。我们不需要每次都动用最昂贵、最慢的“超大模型”来解决所有问题。未来,针对特定领域(如代码生成)进行微调和蒸馏的小模型,将在效能和成本之间找到完美的平衡点。

不要盲目堆砌算力。“负责任的 AI”不仅是道德要求,更是工程优化的必然方向。 用更少的 Token 做更多的事,这本身就是 Go 开发者擅长的“资源优化”技能的延伸。

务实派的生存指南:过滤噪音,回归本质

在 AI 炒作的喧嚣中,如何保持清醒?

  1. 从“小”开始:不要被“AGI 即将到来”的宏大叙事吓倒。像 Katie 建议的那样,承认自己是初学者,哪怕是 MCP 的创始人也说“现在没有所谓的专家”。放下包袱,去尝试写一个简单的 Agent,去用 Go 写一个 MCP Server。
  2. 关注“确定性”:Jaana 和 Ian 都提到,AI 模型本质上是概率性的(非确定性),而工程系统需要确定性。Go 语言强大的静态分析、测试工具链和类型系统,是约束 AI 幻觉、构建可靠系统的最佳防线。用 Go 的“确定性”去包裹 AI 的“不确定性”,是未来的核心工程模式之一。
  3. 解决实际问题:不要为了 AI 而 AI。如果老板让你“加点 AI 进去”,试着去寻找那些真正能通过 AI 提升效率的痛点(比如自动化文档更新、复杂日志分析),而不是生搬硬套。

小结:Go 社区的“绿地”时刻

这场圆桌会议传递出的最强烈信号是:乐观

我们正处于一个类似于 2013 年 Docker 诞生前夜的时刻。AI 领域的“Kubernetes”、“Prometheus”还没有被写出来。这片巨大的空白,正是 Go 开发者施展拳脚的“绿地” (Greenfield)。

正如 Samir 所言:

“如果我想让 AI 真正能够与现实世界进行交易(比如订购 Pizza 并且真的送到),这中间需要大量的、可靠的基础设施。而 Go,是构建这一层的绝佳语言。”

所以,Gopher 们,别慌。带上你的并发模型,带上你的工程智慧,去构建 AI 时代的钢铁地基吧。

资料链接:https://www.youtube.com/watch?v=r40Mwdvg38M


你的 AI 实践

听了这些顶级专家的观点,你是否对 Go 在 AI 时代的未来更有信心了?在你目前的开发工作中,是否已经开始尝试用 Go 构建 AI 应用或基础设施?你认为 Go 在 AI 领域最大的短板是什么?

欢迎在评论区分享你的实战经验或困惑!让我们一起探索 Go + AI 的无限可能。

如果这篇文章为你扫除了职业焦虑,别忘了点个【赞】和【在看】,并转发给身边迷茫的 Gopher 朋友!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


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

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

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

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

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


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

Go 性能分析的“新范式”:用关键路径分析破解高并发延迟谜题

本文永久链接 – https://tonybai.com/2025/12/24/profiling-request-latency-with-critical-path-analysis

大家好,我是Tony Bai。

“如果你喜欢快速的软件,那么你来对地方了。”

在 GopherCon 2025 上,来自 Datadog 的工程师、Go Performance and diagnostics小组成员 Felix Geisendörfer 以这样一句开场白,将我们带入了一个 Go 性能分析的全新领域。

我们都知道 Go 是一门为高并发而生的高性能语言,同时也拥有强大的运行时和丰富的诊断工具(如 pprof, trace)。

但每一个在生产环境中调试过性能问题的 Gopher 都知道,面对一张复杂的 CPU 火焰图或是一个充满互斥锁争用的报告,想要准确地回答“到底是什么拖慢了我的请求?”这个问题,依然极其困难。

Felix 的演讲,正是为了解决这个终极难题。他提出了一种基于 关键路径分析 (Critical Path Analysis) 的全新方法论,试图将 Go 的性能分析从“看图猜谜”进化为“精准制导”。本文将带你深入这场演讲的核心,探索这一激动人心的前沿技术。

传统 Profile 的局限——“只见树木,不见森林”

Felix 首先展示了一个典型的互斥锁争用 (Mutex Contention) profile。我们可以看到某个锁争用了 439 秒,这听起来很可怕。

但问题在于:这 439 秒,真的影响了用户的请求延迟吗?

  • 这个锁可能是在一个不重要的后台清理任务中被争用的。
  • 或者它确实发生在请求处理路径上,但这 439 秒是分摊在 100 万个请求上的,每个请求只受阻了 0.4 毫秒,根本不构成瓶颈。

传统的 profile 工具(如 pprof)擅长告诉我们“哪里消耗了资源”或“哪里发生了等待”,但它们缺乏上下文。它们无法告诉我们:这些资源消耗或等待,是如何组合起来,最终构成了一个特定请求的端到端延迟的。

我们需要一种视角,能够将 CPU 时间、通道操作、调度延迟、GC 暂停、系统调用甚至网络等待,全部串联起来,还原出一个请求的完整生命周期。

数据金矿——Go Execution Tracer

要实现这种全景视角,我们需要一个全能的数据源。Felix 指出,Go 的 Execution Tracer (go tool trace) 就是这样一个宝库。

与采样式的 pprof 不同,Tracer 记录了运行时调度器的每一个动作:

  • Goroutine 从 Running 变为 Waiting(例如等待锁或 I/O)。
  • Goroutine 从 Waiting 变为 Runnable(被谁唤醒了?)。
  • Goroutine 从 Runnable 变为 Running(调度延迟是多少?)。

这提供了构建完整因果关系图所需的所有原子信息。但原始的 Trace 数据量巨大且难以人工分析(1MB 的 trace 数据相当于 4000 万个 token,连 LLM 都吃不消):

我们需要一种算法,从中提取出真正的信号。

核心算法——关键路径分析 (Critical Path Analysis)

Felix 引入了源自曼哈顿计划项目管理的 关键路径分析 概念。在一个复杂的并发系统中,有些任务是并行的,有些是串行的。关键路径,就是那一串最长的、决定了整个项目(或请求)最终耗时的依赖链。

只有优化关键路径上的任务,才能真正缩短总耗时。 优化非关键路径(Sub-critical path),只是在做无用功。

那么如何在 Go 中寻找关键路径呢?

算法的核心是“回溯” (Backtracking)

  1. 从终点出发:找到请求结束的时刻。
  2. 追踪唤醒链:如果当前 goroutine 是在运行,我们就向前回溯。如果它是被阻塞的(例如在等待 channel),我们就跳转到那个唤醒它的 goroutine(例如发送 channel 的那个)。
  3. 处理并发:如果一个 goroutine 启动了多个子 goroutine 并等待它们(如 errgroup),关键路径就是那个最后完成的子 goroutine。其他的子 goroutine 都是非关键的。

通过这种方式,我们可以从海量的并发事件中,剥离出一条清晰的“红线”——这就是导致延迟的真凶。

挑战与突破——处理“丢失的边”

理论很完美,但现实很骨感。Felix 坦诚地分享了在实现该算法时遇到的棘手挑战,尤其是“丢失的边” (Missing Edges)

例如,在一个带有缓冲 channel 的 Worker Pool 模式中,生产者将任务放入缓冲 channel,然后继续运行;消费者稍后从 channel 取出任务。在 Trace 数据中,这两者之间没有直接的唤醒事件关联。追踪链条断裂了。

解决方案:启发式算法 (Heuristics)
Felix 和他的团队开发了一套启发式规则来修补这些断裂的链条:
* 时间限制:如果 G1 等待 G2,我们只在 G1 等待的那个时间窗口内追踪 G2 的行为。
* 互斥锁推断:通过分析堆栈信息和重叠的任务执行时间,推断出隐式的互斥锁依赖关系。

虽然无法做到 100% 精确,但在实际生产数据的测试中,这套算法的表现令人惊叹,往往能得出与人工专家分析完全一致的结论。

未来展望——自动化诊断的曙光

关键路径分析的最终产物,不仅仅是一张图,更是一种全新的自动化诊断能力

想象一下,当你点击一个慢请求时,系统不再只是给你一个乱糟糟的火焰图,而是直接告诉你:

  • “这个请求 40% 的时间花在了 mutex.Lock 上,这是因为另一个后台 goroutine G123 持有了锁。”
  • “这个请求 30% 的时间是在等待调度(Scheduling Latency),说明你的 CPU 资源不足或 GOMAXPROCS 设置不当。”
  • “虽然数据库查询很慢,但它不是瓶颈,因为它是与一个更慢的外部 API 调用并行执行的。”

Felix 展示的 “合成火焰图” (Stitched Stack Traces) 概念,就是这一愿景的雏形:它将跨越多个 goroutine 的关键路径,拼接成一个单一的、逻辑上的堆栈图,让开发者一眼就能看清延迟的构成。

小结

Felix Geisendörfer 的演讲,为我们展示了 Go 性能分析从“原始数据展示”向“智能因果分析”进化的激动人心的前景。

值得注意的是,虽然 Felix 团队此前贡献的“低开销 Tracer”已经是 Go 运行时的一部分,但本次演讲的核心——关键路径分析算法以及合成火
焰图
等高级功能,目前仍主要处于 Datadog 内部探索或商业产品阶段,尚未直接集成到标准的 go tool trace 中。

不过,Felix 在演讲最后表达了强烈的开源意愿。我们有理由期待,在不久的将来,这套能够像外科手术刀一样精准定位瓶颈的方法论,能够真
正成为每一位 Gopher 触手可及的通用工具。

在此之前,理解这一方法论背后的思维方式,本身就是一笔巨大的财富。

资料链接:https://www.youtube.com/watch?v=BayZ3k-QkFw


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


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

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

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

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

目标只有一个:助你完成从“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