<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tony Bai &#187; docker</title>
	<atom:link href="http://tonybai.com/tag/docker/feed/" rel="self" type="application/rss+xml" />
	<link>https://tonybai.com</link>
	<description>一个程序员的心路历程</description>
	<lastBuildDate>Mon, 20 Apr 2026 00:23:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Docker 的十年：重塑云原生基础设施的“底层炼金术”</title>
		<link>https://tonybai.com/2026/03/09/a-decade-of-docker-containers/</link>
		<comments>https://tonybai.com/2026/03/09/a-decade-of-docker-containers/#comments</comments>
		<pubDate>Mon, 09 Mar 2026 00:33:53 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AIAgents]]></category>
		<category><![CDATA[AI代理]]></category>
		<category><![CDATA[BridgedNetwork]]></category>
		<category><![CDATA[CDI]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[ConfidentialComputing]]></category>
		<category><![CDATA[ContainerDeviceInterface]]></category>
		<category><![CDATA[Containerization]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[DynamicLibraryDependencies]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GPUContainerization]]></category>
		<category><![CDATA[GPU容器化]]></category>
		<category><![CDATA[HeterogeneousComputing]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[LibraryOS]]></category>
		<category><![CDATA[LibraryVMM]]></category>
		<category><![CDATA[LinuxKernel]]></category>
		<category><![CDATA[Linux内核]]></category>
		<category><![CDATA[MultiarchManifests]]></category>
		<category><![CDATA[namespaces]]></category>
		<category><![CDATA[OverlayFS]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[SoftwareFactory]]></category>
		<category><![CDATA[TEE]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VirtualSocket]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[动态库依赖]]></category>
		<category><![CDATA[可信执行环境]]></category>
		<category><![CDATA[命名空间]]></category>
		<category><![CDATA[多架构清单]]></category>
		<category><![CDATA[容器]]></category>
		<category><![CDATA[容器化]]></category>
		<category><![CDATA[容器设备接口]]></category>
		<category><![CDATA[库操作系统]]></category>
		<category><![CDATA[库虚拟机监控器]]></category>
		<category><![CDATA[异构计算]]></category>
		<category><![CDATA[机密计算]]></category>
		<category><![CDATA[桥接网络]]></category>
		<category><![CDATA[联合文件系统]]></category>
		<category><![CDATA[虚拟化]]></category>
		<category><![CDATA[虚拟套接字]]></category>
		<category><![CDATA[软件工厂]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[镜像]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=6013</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/03/09/a-decade-of-docker-containers 大家好，我是Tony Bai。 2013年，当 Solomon Hykes 在 PyCon 上首次演示 Docker 时，他用一种名为“容器”的魔法，将开发者从依赖地狱中解救了出来。转眼间，十三年过去了。今天，Docker Hub 托管着超过 1400 万个镜像，每月拉取量超 110 亿次。它不仅是 Kubernetes 的基石，更是从流媒体到太空探索的底层引擎。 表面上看，Docker 只是简单的 build, push, run。但在这极简的开发者体验背后，是横跨操作系统、虚拟化、网络架构和硬件驱动的深水区。近日，Docker 领域的三位重量级人物（Anil Madhavapeddy, David J. Scott, Justin Cormack）在ACM通信上联合发表了万字长文《A Decade of Docker Containers》，首次全景式披露了 Docker 十年来的核心技术挑战与架构演进。 本文将带你一起解读这篇重磅论文，了解一下Docker这十年来背后不为人知的精彩故事。 容器的起源：寻找“妥协的艺术” 在 2000 年代初，配置一台服务器是一场噩梦，你需要手动解决各种动态库的依赖冲突。到了 2010 年代，云计算兴起，主流的隔离方案是虚拟机（VM）。 虚拟机虽然隔离性好，但极其笨重。它需要完整的客户机内核、独立的虚拟磁盘和重复的内存开销。如果你只想在一台机器上跑十个轻量级微服务，虚拟机显然不是最优解。 另一方面，早期的 Linux 提供了一些原生隔离工具（如 1978 年引入的 chroot），但它们无法解决网络端口冲突等问题。像 Nix 和 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/a-decade-of-docker-containers-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/03/09/a-decade-of-docker-containers">本文永久链接</a> &#8211; https://tonybai.com/2026/03/09/a-decade-of-docker-containers</p>
<p>大家好，我是Tony Bai。</p>
<p>2013年，当 Solomon Hykes 在 PyCon 上首次演示 Docker 时，他用一种名为“容器”的魔法，将开发者从依赖地狱中解救了出来。转眼间，十三年过去了。今天，Docker Hub 托管着超过 1400 万个镜像，每月拉取量超 110 亿次。它不仅是 <a href="https://tonybai.com/2025/11/26/how-google-built-a-130000-node-k8s-cluster">Kubernetes</a> 的基石，更是从流媒体到<a href="https://thenewstack.io/how-balenaos-ran-the-first-docker-containers-in-space/">太空探索</a>的底层引擎。</p>
<p>表面上看，Docker 只是简单的 build, push, run。但在这极简的开发者体验背后，是横跨操作系统、虚拟化、网络架构和硬件驱动的深水区。近日，Docker 领域的三位重量级人物（Anil Madhavapeddy, David J. Scott, Justin Cormack）在ACM通信上联合发表了万字长文《<a href="https://cacm.acm.org/research/a-decade-of-docker-containers/">A Decade of Docker Containers</a>》，首次全景式披露了 Docker 十年来的核心技术挑战与架构演进。</p>
<p>本文将带你一起解读这篇重磅论文，了解一下Docker这十年来背后不为人知的精彩故事。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/agentic-software-engineering-qr.png" alt="" /></p>
<h2>容器的起源：寻找“妥协的艺术”</h2>
<p>在 2000 年代初，配置一台服务器是一场噩梦，你需要手动解决各种动态库的依赖冲突。到了 2010 年代，云计算兴起，主流的隔离方案是<strong>虚拟机（VM）</strong>。</p>
<p>虚拟机虽然隔离性好，但极其笨重。它需要完整的客户机内核、独立的虚拟磁盘和重复的内存开销。如果你只想在一台机器上跑十个轻量级微服务，虚拟机显然不是最优解。</p>
<p>另一方面，早期的 Linux 提供了一些原生隔离工具（如 1978 年引入的 chroot），但它们无法解决网络端口冲突等问题。像 Nix 和 Guix 这样的系统试图通过重组文件目录来解决依赖问题，但这要求重写所有的软件打包方式，门槛极高。</p>
<p>Docker 的天才之处，在于它找到了一种“务实的妥协”：利用 Linux Namespaces。</p>
<p>Namespaces（命名空间）并非 Docker 发明。自 2001 年起，Linux 内核逐步引入了 Mount（文件系统）、IPC、Network 等七种命名空间。它们允许在共享同一个系统内核的前提下，让每个进程拥有独立的资源视图。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/a-decade-of-docker-containers-2.png" alt="" /></p>
<p>如上图所示，通过 Mount Namespace，容器 A 看到的是 /alice/etc/passwd，而容器 B 看到的是 /bob/etc/passwd，但它们都以为自己访问的是根目录下的 /etc/passwd。这种机制的开销远低于启动一个完整的 Linux VM，通常只需不到一秒即可完成环境隔离。</p>
<p>Docker 将这些原本低级且晦涩的内核 API 进行了高层封装，结合基于联合文件系统（如 overlayfs）的层级镜像（Layered Images）机制，彻底奠定了容器技术的物理基础。</p>
<p>Docker守护进程最初是一个单体程序，但在 2015 年左右，Docker团队将其拆分为如下图所示的 7 个专用组件。第一个组件 buildkit 负责组装文件系统镜像，然后 containerd 管理将这些镜像实例化为运行中的容器，并配置相关的网络和存储资源。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/a-decade-of-docker-containers-3.png" alt="" /></p>
<h2>跨越系统鸿沟：Docker for Mac/Windows 的工程奇迹</h2>
<p>Docker 诞生之初有一个致命的局限：<strong>它只能在 Linux 内核上运行。</strong></p>
<p>但在现实世界中，绝大多数开发者使用的是 macOS 或 Windows 笔记本。为了让这些开发者能在本地顺畅地构建和测试容器，Docker 团队面临着其历史上最大的工程挑战之一：如何在非 Linux 宿主机上，提供与 Linux 原生体验一致的 docker run 和 localhost 访问？</p>
<h3>抛弃 VirtualBox，走向“库操作系统”</h3>
<p>最初，开发者必须使用 VirtualBox 这样的重量级独立虚拟机来运行 Linux。这种体验是割裂的：你需要管理虚拟机的生命周期，网络端口映射极其繁琐。</p>
<p>Docker 团队决定重构架构。他们采用了一种被称为“库虚拟机监控器（Library VMM）”的先进理念，结合了他们在 Unikernel 领域的研究成果。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/a-decade-of-docker-containers-4.png" alt="" /></p>
<p>如上图所示，在 macOS 上，Docker 开发了 HyperKit，利用 Apple 原生的 Hypervisor 框架，将一个极简的 Linux 虚拟机（基于定制的 LinuxKit 操作系统）直接嵌入到了 Docker 桌面端应用进程中。开发者在终端敲下的 docker build 命令，会通过隐形的 AF_VSOCK (虚拟套接字) 直接发送到这个嵌入式 Linux 内核中的 dockerd 守护进程。</p>
<p>这种设计使得虚拟机变得“隐形”，实现了无缝的客户端-服务器交互。</p>
<h3>网络的黑魔法：复活 90 年代的拨号技术</h3>
<p>有了隐形虚拟机，更大的麻烦来了——<strong>网络联通性</strong>。</p>
<p>传统的桥接网络（Bridged Network）在企业环境中经常被防火墙和安全软件拦截，因为这种网络流量看起来像是绕过了宿主机网络栈的“未知进程”。同时，开发者希望在容器内监听 80 端口后，能在 Mac 的浏览器里直接通过 localhost:80 访问。</p>
<p>为了解决这个问题，Docker 团队做出了一个疯狂的决定：<strong>他们复活了一个诞生于 1990 年代中期、最初用于 Palm Pilot PDA 拨号上网的古老工具——SLIRP。</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/a-decade-of-docker-containers-5.png" alt="" /></p>
<p>如上图所示，Docker 团队用 OCaml 语言重写了一个用户态的 TCP/IP 协议栈（命名为 vpnkit）。</p>
<ol>
<li>当 Linux 容器内的应用尝试建立 TCP 连接时。</li>
<li>容器内的以太网帧通过 Virtio 协议传输到宿主机（Mac/Windows）。</li>
<li>宿主机上的 vpnkit 拦截这些底层数据包，并将其翻译为 macOS/Windows 原生的 Socket API 调用（如 connect()）。</li>
</ol>
<p>这样一来，从企业防火墙的角度看，所有的网络请求都像是 Docker Desktop 这个普通应用程序发出的，从而完美绕过了安全拦截。这项被称为 SLIRP 的古老技术，在云原生时代焕发了第二春，将企业用户的网络 Bug 报告减少了 99% 以上。</p>
<h3>存储桥接与 Windows WSL2</h3>
<p>不仅是网络，存储同样面临跨系统的挑战。Linux 的“绑定挂载（Bind Mount）”无法直接跨操作系统工作。Docker 利用 virtio-fs 协议，将 Mac/Windows 的文件系统操作转换为 FUSE 请求发送给宿主机，实现了代码热重载。</p>
<p>而在 Windows 阵营，随着 2018 年微软推出 <strong>WSL2</strong>（Windows Subsystem for Linux 2），情况迎来了转机。WSL2 本质上是在后台运行了一个高度优化的轻量级 Linux 虚拟机。Docker 顺势而为，将 Docker 引擎直接集成到 WSL2 中，彻底消除了早期使用 Hyper-V 时的性能损耗和体验割裂。</p>
<h2>迈向异构计算时代：ARM、TEE 与 GPU</h2>
<p>进入 2020 年代后，基础设施硬件发生了翻天覆地的变化。Docker 的技术版图也被迫（且成功地）向异构计算延伸。</p>
<h3>跨架构构建的痛点：ARM 崛起</h3>
<p>随着 Apple M 系列芯片和 AWS Graviton 架构的普及，开发者不再局限于 x86 (AMD64) 架构。Docker 必须支持“一次构建，多架构分发”。</p>
<p>除了在 OCI 镜像规范中引入“多架构清单（Multi-arch Manifests）”外，Docker 还利用了 Linux 的一个冷门特性 binfmt_misc，结合 QEMU 模拟器。这使得开发者在 Mac M1（ARM）上构建镜像时，遇到 x86 的二进制指令，可以透明地通过 QEMU 翻译执行。虽然在构建阶段有性能损耗，但这完美解决了交叉编译的噩梦。</p>
<h3>拥抱机密计算（TEE）</h3>
<p>随着安全要求的提高，机密计算（Confidential Computing）成为热门。可信执行环境（TEE，如 Intel SGX 或 AMD SEV）允许在内存中创建一个被硬件加密的飞地（Enclave），甚至连宿主机操作系统都无法窥探其中的数据。</p>
<p>由于配置 TEE 的复杂度极高（相当于在里面启动一个微型内核），Docker 将其客户端-服务器架构发挥到了极致。开发者可以在本地使用 Docker CLI，将加密信息通过安全的 Socket 转发，直接部署并管理运行在云端 TEE 环境中的容器，兼顾了本地开发的便利性和云端的极致安全。</p>
<h3>AI 的大考：GPU 容器化</h3>
<p>2023 年以来，AI 工作负载的爆发给容器带来了全新的难题：<strong>GPU 强绑定</strong>。</p>
<p>Docker 的初衷是解耦底层的硬件和系统，但 GPU 驱动却要求容器内的用户态动态库（User-space libraries）与宿主机的内核态驱动（Kernel driver）必须严格版本匹配。</p>
<p>为了解决这个矛盾，Docker 从 2023 年起全面支持了 <strong>容器设备接口（Container Device Interface, CDI）</strong>。这允许在容器启动时，动态地将特定 GPU 的设备文件和动态库“绑定挂载”到容器中，并重新生成链接器缓存（ld.so cache）。</p>
<p>然而，论文作者也坦言，目前的解决方案远未完美。GPU 的标准化程度远不及 CPU，针对 Nvidia GPU 编写的应用容器，依然无法在 Apple 的 M 系列 GPU 上无缝运行。硬件虚拟化和指令集翻译在 GPU 领域仍是一个巨大的挑战，整个社区仍在寻找更通用的抽象层（如 Triton 等中间语言）。</p>
<h2>未来展望：当 Docker 遇见 AI Agent</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2026/a-decade-of-docker-containers-6.png" alt="" /></p>
<p>时间来到 2026 年，软件开发的范式正在被 AI 重塑。</p>
<p>如图所示，今天的开发者工作流（Workflow）已经不仅仅是 build 和 run。它融合了持续部署、云端卸载（Docker Build Cloud）、以及运行在容器内的 AI 智能体（Agentic Coding）。</p>
<p>未来的AI 智能体将通过 MCP（模型上下文协议，Model Context Protocol）直接调用容器内的工具和环境进行代码的编写、测试和调试。在这个过程中，Docker 扮演了一个“隐形的安全沙箱”。它必须足够轻量，以便 AI Agent 瞬间启动成百上千个测试环境；又必须足够安全，防止 AI 生成的未知代码破坏宿主机甚至横向渗透网络。</p>
<h2>小结</h2>
<p>回望这十年，Docker 的成功绝不是偶然。它不是一项单一的颠覆性发明，而是一系列持续不断的、精妙的系统工程组合拳。</p>
<p>从最初利用 Linux Namespaces 寻找轻量级虚拟化的平衡点，到为了征服 macOS 和 Windows 桌面端而重构底层虚拟化和网络协议，再到如今积极适配 ARM、TEE 和 GPU 等异构硬件，Docker 始终在做一件事：<strong>为开发者屏蔽掉底层基础设施的混乱，提供一个统一、优雅、且安全的“集装箱”。</strong></p>
<p>在不可预测的 AI 时代，底层的复杂性只会呈指数级上升。而我们需要像 Docker 这样久经考验的基础设施，在幕后默默地为每一次“创新”提供稳固的地基。</p>
<p>正如论文作者所言：“如果说我们有一个终极目标，那就是<strong>让 Docker 成为一个隐形的伴侣</strong>。你看不见它，但它能让你更快、更享受地交付代码。”</p>
<p>资料链接：</p>
<ul>
<li>https://cacm.acm.org/research/a-decade-of-docker-containers/</li>
<li>https://thenewstack.io/how-balenaos-ran-the-first-docker-containers-in-space/</li>
</ul>
<hr />
<p><strong>你的第一个容器跑的是什么？</strong></p>
<p>回望十年，Docker 已经从一个“玩具”变成了世界的底座。你还记得自己第一次运行 docker run 时的感受吗？在你的开发流中，Docker 解决过的最让你难忘的 Bug 是什么？</p>
<p>欢迎在评论区分享你的 Docker 记忆或对“AI 容器”的脑洞！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p><strong>原「Gopher部落」已重装升级为「Go &amp; AI 精进营」知识星球，快来加入星球，开启你的技术跃迁之旅吧！</strong></p>
<p>我们致力于打造一个高品质的 <strong>Go 语言深度学习</strong> 与 <strong>AI 应用探索</strong> 平台。在这里，你将获得：</p>
<ul>
<li><strong>体系化 Go 核心进阶内容:</strong> 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏，夯实你的 Go 内功。</li>
<li><strong>前沿 Go+AI 实战赋能:</strong> 紧跟时代步伐，学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等，掌握 AI 时代新技能。 </li>
<li><strong>星主 Tony Bai 亲自答疑:</strong> 遇到难题？星主第一时间为你深度解析，扫清学习障碍。</li>
<li><strong>高活跃 Gopher 交流圈:</strong> 与众多优秀 Gopher 分享心得、讨论技术，碰撞思想火花。</li>
<li><strong>独家资源与内容首发:</strong> 技术文章、课程更新、精选资源，第一时间触达。</li>
</ul>
<p>衷心希望「Go &amp; AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚，享受技术精进的快乐！欢迎你的加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-and-ai-tribe-zsxq-small-card.jpg" alt="img{512x368}" /></p>
<hr />
<p><strong>想系统学习Go，构建扎实的知识体系？</strong></p>
<p>我的新书《<a href="https://book.douban.com/subject/37499496/">Go语言第一课</a>》是你的首选。源自2.4万人好评的极客时间专栏，内容全面升级，同步至Go 1.24。首发期有专属五折优惠，不到40元即可入手，扫码即可拥有这本300页的Go语言入门宝典，即刻开启你的Go语言高效学习之旅！</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/go-primer-published-4.png" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/03/09/a-decade-of-docker-containers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从第一位程序员到 AI 时代的领航者：代码世界里的“她”力量</title>
		<link>https://tonybai.com/2026/03/08/her-power-in-code-pioneers-to-ai-era/</link>
		<comments>https://tonybai.com/2026/03/08/her-power-in-code-pioneers-to-ai-era/#comments</comments>
		<pubDate>Sat, 07 Mar 2026 23:59:18 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AdaLovelace]]></category>
		<category><![CDATA[AIAge]]></category>
		<category><![CDATA[AIAlignment]]></category>
		<category><![CDATA[AIEthics]]></category>
		<category><![CDATA[AI伦理]]></category>
		<category><![CDATA[AI对齐]]></category>
		<category><![CDATA[AI时代]]></category>
		<category><![CDATA[AsynchronousExecutive]]></category>
		<category><![CDATA[ClaudeCode]]></category>
		<category><![CDATA[COBOL]]></category>
		<category><![CDATA[Codex]]></category>
		<category><![CDATA[CommunicationSkills]]></category>
		<category><![CDATA[Compiler]]></category>
		<category><![CDATA[ComputerPioneers]]></category>
		<category><![CDATA[DeepLearning]]></category>
		<category><![CDATA[Diversity]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[FeiFeiLi]]></category>
		<category><![CDATA[GraceHopper]]></category>
		<category><![CDATA[ImageNet]]></category>
		<category><![CDATA[InternationalWomensDay]]></category>
		<category><![CDATA[JessieFrazelle]]></category>
		<category><![CDATA[MargaretHamilton]]></category>
		<category><![CDATA[PromptEngineering]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[SystemsThinking]]></category>
		<category><![CDATA[国际妇女节]]></category>
		<category><![CDATA[多元化]]></category>
		<category><![CDATA[异步调度]]></category>
		<category><![CDATA[提示词工程]]></category>
		<category><![CDATA[李飞飞]]></category>
		<category><![CDATA[沟通能力]]></category>
		<category><![CDATA[深度学习]]></category>
		<category><![CDATA[系统思维]]></category>
		<category><![CDATA[编译器]]></category>
		<category><![CDATA[计算机先驱]]></category>
		<category><![CDATA[软件工程]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=6006</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/03/08/her-power-in-code-pioneers-to-ai-era 大家好，我是Tony Bai。 当我们闭上眼睛，想象一个“程序员”的形象时，脑海中浮现的画面是什么？ 很长一段时间里，流行文化和媒体在不遗余力地塑造一种刻板印象：穿着格子衬衫、戴着黑框眼镜、不善言辞的男性，在昏暗的灯光下敲击着键盘。硅谷的“兄弟会文化（Bro-culture）”更是将这种刻板印象固化，仿佛编程从诞生之日起，就是一项由男性绝对主导的活动。 然而，如果我们翻开计算机科学的真实历史，会发现一个令人惊讶，甚至有些反直觉的事实：在计算机刚刚诞生的黎明期，编程，曾经是一项被普遍认为“适合女性”的工作。 在二战期间，由于男性大量奔赴前线，世界上第一台通用电子计算机 ENIAC 的初代程序员团队，清一色全是由六位杰出的女性组成。她们在没有编程语言、没有编译器的时代，用插拔线缆和拨动开关的纯物理方式，完成了极其复杂的弹道轨迹计算。 然而，随着软件产业的爆炸式增长，薪资与地位水涨船高，女性在科技行业的比例却开始出现诡异的下滑，她们的名字也逐渐被隐藏在庞大服务器的阴影之中。 今天是 3 月 8 日国际妇女节。在这个特殊的日子里，让我们暂时停下手中正在 Review 的代码，去擦拭掉历史上的偏见灰尘。我们要重新认识那些在计算机科学发展史上立下不朽丰碑的女性先驱，看看当今站在技术浪潮之巅的领航者，并探讨在汹涌而来的 AI 时代，“巾帼力量”为何比以往任何时候都更加不可或缺。 历史丰碑：她们写下了改变世界的最初几行代码 代码是没有性别的，但在计算机还是一堆庞大齿轮或真空管的年代，是这些女性赋予了冷冰冰的机器以“逻辑的灵魂”。 “诗意科学”的先知：Ada Lovelace（埃达·洛夫莱斯） 要追溯程序员的祖师爷，我们必须回到 19 世纪中叶的英国。著名诗人拜伦的女儿，Ada Lovelace，被公认为世界上的第一位程序员。 当时的数学家查尔斯·巴贝奇正在设计一台名为“分析机”的庞大机械装置。在多数人看来，这只是一个能做加减乘除的超大号计算器。但 Ada 展现出了超越时代一个世纪的惊人洞察力。 在翻译和注释关于分析机的文章时，她不仅写下了世界上第一段计算机算法（用于计算伯努利数），更重要的是，她写下了一段堪称“预言”的批注。Ada 指出，如果分析机能够处理数字，那么只要将事物（如字母、音乐）转化为数字，机器就能处理任何事物。 “分析机编织的是代数模式，就像提花织机编织树叶和花朵一样。” 这是一种被称为“诗意科学”的浪漫与理性的结合。Ada 早在计算机诞生前 100 年，就看透了现代计算机的本质：它不仅仅是计算工具，而是通用的信息处理引擎。今天美国国防部开发的 Ada 语言，正是为了纪念这位伟大的女性“先知”。 编译器的鼻祖与“捉虫”专家：Grace Hopper（格蕾丝·霍珀） 如果说 Ada 给出了灵魂，那么 Grace Hopper 则是真正让机器“听懂”人类语言的架构师。 在 20 世纪 50 年代，程序员们必须用极其难懂的二进制机器码来编写指令。这种方式不仅痛苦，而且极易出错。Hopper 坚信，程序员应该能够用接近英语的语言来编写代码，然后再由机器自己将其翻译成机器码。 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/her-power-in-code-pioneers-to-ai-era-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/03/08/her-power-in-code-pioneers-to-ai-era">本文永久链接</a> &#8211; https://tonybai.com/2026/03/08/her-power-in-code-pioneers-to-ai-era</p>
<p>大家好，我是Tony Bai。</p>
<p>当我们闭上眼睛，想象一个“程序员”的形象时，脑海中浮现的画面是什么？</p>
<p>很长一段时间里，流行文化和媒体在不遗余力地塑造一种刻板印象：穿着格子衬衫、戴着黑框眼镜、不善言辞的男性，在昏暗的灯光下敲击着键盘。硅谷的“兄弟会文化（Bro-culture）”更是将这种刻板印象固化，仿佛编程从诞生之日起，就是一项由男性绝对主导的活动。</p>
<p>然而，如果我们翻开计算机科学的真实历史，会发现一个令人惊讶，甚至有些反直觉的事实：<strong>在计算机刚刚诞生的黎明期，编程，曾经是一项被普遍认为“适合女性”的工作。</strong></p>
<p>在二战期间，由于男性大量奔赴前线，世界上第一台通用电子计算机 ENIAC 的初代程序员团队，清一色全是由六位杰出的女性组成。她们在没有编程语言、没有编译器的时代，用插拔线缆和拨动开关的纯物理方式，完成了极其复杂的弹道轨迹计算。</p>
<p>然而，随着软件产业的爆炸式增长，薪资与地位水涨船高，女性在科技行业的比例却开始出现诡异的下滑，她们的名字也逐渐被隐藏在庞大服务器的阴影之中。</p>
<p>今天是 3 月 8 日国际妇女节。在这个特殊的日子里，让我们暂时停下手中正在 Review 的代码，去擦拭掉历史上的偏见灰尘。我们要重新认识那些在计算机科学发展史上立下不朽丰碑的女性先驱，看看当今站在技术浪潮之巅的领航者，并探讨在汹涌而来的 AI 时代，“巾帼力量”为何比以往任何时候都更加不可或缺。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/agentic-software-engineering-qr.png" alt="" /></p>
<h2>历史丰碑：她们写下了改变世界的最初几行代码</h2>
<p>代码是没有性别的，但在计算机还是一堆庞大齿轮或真空管的年代，是这些女性赋予了冷冰冰的机器以“逻辑的灵魂”。</p>
<h3>“诗意科学”的先知：Ada Lovelace（埃达·洛夫莱斯）</h3>
<p><img src="https://tonybai.com/wp-content/uploads/2026/her-power-in-code-pioneers-to-ai-era-2.png" alt="" /></p>
<p>要追溯程序员的祖师爷，我们必须回到 19 世纪中叶的英国。著名诗人拜伦的女儿，Ada Lovelace，被公认为世界上的<strong>第一位程序员</strong>。</p>
<p>当时的数学家查尔斯·巴贝奇正在设计一台名为“分析机”的庞大机械装置。在多数人看来，这只是一个能做加减乘除的超大号计算器。但 Ada 展现出了超越时代一个世纪的惊人洞察力。</p>
<p>在翻译和注释关于分析机的文章时，她不仅写下了世界上第一段计算机算法（用于计算伯努利数），更重要的是，她写下了一段堪称“预言”的批注。Ada 指出，如果分析机能够处理数字，那么只要将事物（如字母、音乐）转化为数字，机器就能处理任何事物。</p>
<blockquote>
<p>“分析机编织的是代数模式，就像提花织机编织树叶和花朵一样。”</p>
</blockquote>
<p>这是一种被称为“诗意科学”的浪漫与理性的结合。Ada 早在计算机诞生前 100 年，就看透了现代计算机的本质：它不仅仅是计算工具，而是通用的信息处理引擎。今天美国国防部开发的 Ada 语言，正是为了纪念这位伟大的女性“先知”。</p>
<h3>编译器的鼻祖与“捉虫”专家：Grace Hopper（格蕾丝·霍珀）</h3>
<p><img src="https://tonybai.com/wp-content/uploads/2026/her-power-in-code-pioneers-to-ai-era-3.png" alt="" /></p>
<p>如果说 Ada 给出了灵魂，那么 Grace Hopper 则是真正让机器“听懂”人类语言的架构师。</p>
<p>在 20 世纪 50 年代，程序员们必须用极其难懂的二进制机器码来编写指令。这种方式不仅痛苦，而且极易出错。Hopper 坚信，程序员应该能够用接近英语的语言来编写代码，然后再由机器自己将其翻译成机器码。</p>
<p>当她提出这个想法时，遭到了几乎所有同行的嘲笑和拒绝。他们认为“计算机只能懂数字，不可能懂英语”。但 Hopper 是一位拥有美国海军准将军衔的“硬核”女性，她顶住了所有压力，成功开发出了世界上<strong>第一个编译器 A-0</strong>，并直接主导了后来统治商业系统数十年的 COBOL 语言的诞生。</p>
<p>除了这项伟大的技术发明，Hopper 还给全世界程序员留下了一个最常用的口头禅。1947 年，她在哈佛大学的一台继电器计算机里发现了一只导致故障的真实飞蛾（Moth）。她将这只飞蛾粘在日志本上，并在旁边写下：“First actual case of bug being found.（发现的第一个真正的 Bug）”。从此，程序员排查错误的过程，就永远被称为了 “Debug”（除虫）。</p>
<h3>登月背后的无名英雄：Margaret Hamilton（玛格丽特·汉密尔顿）</h3>
<p><img src="https://tonybai.com/wp-content/uploads/2026/her-power-in-code-pioneers-to-ai-era-4.png" alt="" /></p>
<p>有一张在科技史流传甚广的照片：一位年轻的戴着大框眼镜的女性，微笑着站在一堆比她自己还要高的打印源代码旁。她就是 Margaret Hamilton，阿波罗 11 号登月计划的首席软件工程师。</p>
<p>在 1969 年那个登月舱只有几十 KB 内存的年代，写代码绝不容许有任何试错的空间。更重要的是，在那个年代，“软件”甚至不被认为是一门严谨的工程学科。是 Hamilton 第一次创造了 <strong>“软件工程 (Software Engineering)”</strong> 这个词，并为其赋予了与硬件工程同等的严谨性。</p>
<p>她的远见卓识在历史性的一刻拯救了全人类的心跳。就在阿波罗 11 号即将降落月球表面的最后 3 分钟，由于雷达系统的硬件故障，登月舱的计算机突然被大量无关的数据淹没，系统濒临崩溃，警报声大作。</p>
<p>在地面指挥中心准备下令中止登月时，Hamilton 带领团队设计的<strong>“异步优先调度（Asynchronous Executive）”机制</strong>发挥了奇效。这段极其健壮的容错代码，让计算机瞬间抛弃了低优先级的雷达任务，将全部仅存的算力集中在最关键的着陆控制上。</p>
<p>阿姆斯特朗成功踏上了月球，而这背后，是 Hamilton 用代码织就的绝对安全网。</p>
<h2>当代灯塔：站在技术浪潮之巅的开源与企业领袖</h2>
<p>历史的丰碑固然闪耀，但“巾帼力量”绝不仅仅存在于泛黄的黑白照片中。当我们把视线拉回当代，你会发现在云计算、开源社区和最前沿的人工智能领域，女性依然是不可或缺的领航者。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/her-power-in-code-pioneers-to-ai-era-5.png" alt="" /></p>
<p>在开源世界的深水区，也就是最具“硬核极客文化”的容器和底层基础设施领域，Jessie Frazelle 的名字如雷贯耳。作为 Docker 的核心维护者之一，她写下了 Docker 中许多最底层的安全和隔离特性代码。她以一人之力在充满偏见和偶尔充斥着“有毒（Toxic）”言论的开源社区中杀出一条血路，证明了女性同样可以在最底层的系统编程中达到登峰造极的水平。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/her-power-in-code-pioneers-to-ai-era-6.png" alt="" /></p>
<p>而在当今如火如荼的 AI 浪潮中，我们更不能忘记李飞飞 (Fei-Fei Li)。在深度学习还处于被学术界边缘化的低谷期时，李飞飞敏锐地意识到：模型再好，没有海量的高质量数据也无法发生质变。于是，她顶住巨大压力，发起了 ImageNet 计划，构建了一个包含 1400 万张标注图片的庞大数据库。</p>
<p>正是 ImageNet 的存在，直接催生了 2012 年 AlexNet 的横空出世，引发了这一轮浩浩荡荡的深度学习和 AI 大爆发。她被称为“AI 界的拓荒者”，用女性特有的坚韧和长远目光，为整个行业打下了最坚实的地基。</p>
<h2>AI 时代的新契机：为什么未来的技术世界更需要“她”？</h2>
<p>2024 年至今，随着生成式 AI（GenAI）、大型语言模型（LLM）以及自主 Agent（如 Claude Code, Cursor）的极速普及，<a href="https://tonybai.com/2026/02/28/agentic-software-engineering">软件工程的范式</a>正在经历一场彻底的颠覆。</p>
<p>“敲击代码”这一纯体力的动作正在被 AI 代替。很多从业者感到恐慌：如果机器能在几秒钟内写出完美的并发处理代码，程序员的价值到底在哪里？</p>
<p>讽刺的是，这场由机器主导的技术革命，反而为女性程序员在科技行业中的地位跃升，提供了百年难遇的新契机。为什么这么说？</p>
<h3>从“机器语者”到“交响乐指挥”：Prompt 工程与沟通的艺术</h3>
<p>在传统的编程时代，程序员需要像机器一样思考，用极其死板和严苛的语法去迎合编译器。这在某种程度上，筛选出了一批极度专注于逻辑细节、但不一定擅长横向沟通的人群。</p>
<p>但在 AI 辅助编程时代，人类的角色从“写代码的工人”变成了“指挥 AI 的产品经理”。你需要做的是深刻理解业务需求、拆解复杂系统，并用自然语言（Prompt）精准地将意图传达给 AI。</p>
<p>这要求极高的<strong>沟通能力、同理心、大局观以及对模糊意图的澄清能力</strong>。而这些，恰恰是许多女性在长期社会化过程中被培养出的显著优势。未来的顶级工程师，不再是那些能背诵冷门 API 的人，而是那些能够清晰表达意图、优雅编排多个 AI Agent 协同工作的“交响乐指挥”。</p>
<h3>消除算法的“傲慢与偏见”：AI 伦理的守门人</h3>
<p>AI 就像一面镜子，它会无情地反射并放大人类社会中存在的所有偏见。如果我们训练 AI 模型的工程师团队是清一色的单一性别、单一族裔（例如传统的“硅谷白人男性俱乐部”），那么这个 AI 生成的简历筛选算法、医疗诊断模型或是自动驾驶策略，必然会带有难以察觉的系统性偏见。</p>
<p>在 AI 对齐（Alignment）和 AI 安全（AI Safety）领域，我们需要多元化的视角来纠正机器的偏见。女性研究者和工程师在感知社会公平、识别弱势群体需求方面往往具有更敏锐的触觉。如今，在 OpenAI、Anthropic 等顶级 AI 实验室中，主导 AI 伦理和安全护栏工作的核心领导层中，出现了越来越多卓越的女性身影。比如Anthropic联合创始人阿曼达·阿斯克尔（Amanda Askell），就是一位训练有素的哲学家，她帮助管理Claude的个性。<strong>没有女性参与的 AI，注定是一个有缺陷的 AI。</strong></p>
<h3>全栈通才的崛起与“产品思维”的胜利</h3>
<p>由于 AI 极大地降低了后端的复杂度和前端页面的构建门槛，“一人公司”或“超级小团队”正在成为现实。</p>
<p>这要求未来的开发者必须是懂产品、懂设计、懂用户心理的“全栈通才”。仅仅会写高并发代码已经不够了，你还需要知道如何设计出让用户感到温暖、舒适的交互界面。女性往往具备更强的跨界融合能力和细腻的用户感知能力，在“技术与人文的十字路口”，她们将比纯粹的“代码机器”爆发出更强大的创造力。</p>
<h2>小结：传承遗产，编写未来</h2>
<p>回顾历史，从 Ada Lovelace 描绘在纸带上的第一个循环，到 Grace Hopper 拔出的第一只真实飞蛾；从 Margaret Hamilton 保护阿波罗登月的汇编指令，到如今女性工程师在 LLM 底层写的对齐代码。</p>
<p><strong>女性，从未在计算机科学的历史中缺席。</strong> 她们不仅是历史的参与者，更是很多决定性瞬间的缔造者。</p>
<p>然而，我们依然要清醒地看到，今天在 GitHub 的开源提交中、在科技公司的高管会议室里，女性的比例依然没有达到应有的平衡。打破这种隐形的“天花板”和玻璃墙，需要我们每一个人——无论男女——去对抗潜意识中的刻板印象。</p>
<p>代码没有性别，Bug 也不分男女。优秀的架构设计只认同逻辑的严密，而不关心键盘后那双手的粗细。</p>
<p>在这个 AI 浪潮奔涌的时代前夕，让我们向所有奋斗在键盘前、熬夜在服务器旁、在开源社区里无私贡献的女程序员们致以最崇高的敬意。</p>
<p>愿 Ada 的远见、Hopper 的坚持和 Hamilton 的严谨，能够化作一行行永不退色的代码，注入到每一位女性开发者的指尖。</p>
<p><strong>3.8 国际妇女节快乐！愿你们继续用代码，勇敢、自由地编译属于你们的未来！</strong></p>
<hr />
<p><strong>致敬身边的“她”</strong></p>
<p>在你的开发生涯中，是否曾遇到过让你深感佩服的女性技术伙伴？或者，作为一名女性开发者，你在 AI 时代的浪潮中有什么独特的感悟？</p>
<p>欢迎在评论区留下你对“她”的赞美或故事！我们将精选留言，一起传递这份力量。</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p><strong>原「Gopher部落」已重装升级为「Go &amp; AI 精进营」知识星球，快来加入星球，开启你的技术跃迁之旅吧！</strong></p>
<p>我们致力于打造一个高品质的 <strong>Go 语言深度学习</strong> 与 <strong>AI 应用探索</strong> 平台。在这里，你将获得：</p>
<ul>
<li><strong>体系化 Go 核心进阶内容:</strong> 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏，夯实你的 Go 内功。</li>
<li><strong>前沿 Go+AI 实战赋能:</strong> 紧跟时代步伐，学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等，掌握 AI 时代新技能。 </li>
<li><strong>星主 Tony Bai 亲自答疑:</strong> 遇到难题？星主第一时间为你深度解析，扫清学习障碍。</li>
<li><strong>高活跃 Gopher 交流圈:</strong> 与众多优秀 Gopher 分享心得、讨论技术，碰撞思想火花。</li>
<li><strong>独家资源与内容首发:</strong> 技术文章、课程更新、精选资源，第一时间触达。</li>
</ul>
<p>衷心希望「Go &amp; AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚，享受技术精进的快乐！欢迎你的加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-and-ai-tribe-zsxq-small-card.jpg" alt="img{512x368}" /></p>
<hr />
<p><strong>想系统学习Go，构建扎实的知识体系？</strong></p>
<p>我的新书《<a href="https://book.douban.com/subject/37499496/">Go语言第一课</a>》是你的首选。源自2.4万人好评的极客时间专栏，内容全面升级，同步至Go 1.24。首发期有专属五折优惠，不到40元即可入手，扫码即可拥有这本300页的Go语言入门宝典，即刻开启你的Go语言高效学习之旅！</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/go-primer-published-4.png" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/03/08/her-power-in-code-pioneers-to-ai-era/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>20 年 Java 老店的“背叛”：WSO2 为何高呼“Goodbye Java, Hello Go”？</title>
		<link>https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift/</link>
		<comments>https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift/#comments</comments>
		<pubDate>Wed, 28 Jan 2026 23:15:10 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AOT]]></category>
		<category><![CDATA[APIManagement]]></category>
		<category><![CDATA[API管理]]></category>
		<category><![CDATA[ArchitectureShift]]></category>
		<category><![CDATA[BackendDevelopment]]></category>
		<category><![CDATA[Ballerina]]></category>
		<category><![CDATA[BFF]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[CNCF]]></category>
		<category><![CDATA[ConcurrencyPrimitives]]></category>
		<category><![CDATA[Containerization]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[GarbageCollection]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoLanguage]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[GraalVM]]></category>
		<category><![CDATA[IdentityAuthentication]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[MemoryBloat]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[middleware]]></category>
		<category><![CDATA[OpenChoreo]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[ProjectLoom]]></category>
		<category><![CDATA[serverless]]></category>
		<category><![CDATA[SoftwareServer]]></category>
		<category><![CDATA[StartupSpeed]]></category>
		<category><![CDATA[StaticBinary]]></category>
		<category><![CDATA[VirtualThreads]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[中间件]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[内存膨胀]]></category>
		<category><![CDATA[后端开发]]></category>
		<category><![CDATA[启动速度]]></category>
		<category><![CDATA[垃圾回收]]></category>
		<category><![CDATA[基础设施]]></category>
		<category><![CDATA[容器化]]></category>
		<category><![CDATA[并发原语]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[微服务]]></category>
		<category><![CDATA[提前编译]]></category>
		<category><![CDATA[架构变迁]]></category>
		<category><![CDATA[虚拟线程]]></category>
		<category><![CDATA[身份认证]]></category>
		<category><![CDATA[软件服务器]]></category>
		<category><![CDATA[静态二进制]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5785</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift 大家好，我是Tony Bai。 “当我们 2005 年创办 WSO2 时，开发服务端企业级基础设施的正确语言毫无疑问是：Java。然而，当我们走过第 20 个年头并展望未来时，情况已经变了。” 近日，全球知名的开源中间件厂商 WSO2 发布了一篇震动技术圈的博文——《Goodbye Java, Hello Go!》。 这是企业级软件在云原生时代技术风向标的一次重要偏转。作为 Java 时代的既得利益者，WSO2 曾在 API 管理、集成中间件领域构建了庞大的 Java 帝国。为何在今天，他们会做出如此激进的转向？Java 真的不适合未来了吗？Go 到底赢在哪里？ 让我们深入剖析这背后的技术逻辑、架构变迁与社区的激烈争议。 时代的变迁——从“服务器”到“函数” WSO2 的转向并非一时冲动，而是基于对过去 15 年基础设施软件形态深刻变化的洞察。其博文中极其精准地总结了这一变迁： “服务器”概念的消亡 在 2010 年代之前，中间件是以独立“服务器”（Server）的形式交付的。 应用服务器 (App Servers)：如 WebLogic, WebSphere, Tomcat。 企业服务总线 (ESB)：集成了各种协议适配器的庞然大物。 业务流程服务器 (Process Servers)：管理长周期的业务状态。 那是一个“重量级”的时代。你部署一个服务器，然后把你的业务逻辑（WAR 包、JAR 包）扔进去运行。这正是 Java 和 JVM [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/wso2-goodbye-java-hello-go-tech-stack-shift-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift">本文永久链接</a> &#8211; https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift</p>
<p>大家好，我是Tony Bai。</p>
<p>“当我们 2005 年创办 WSO2 时，开发服务端企业级基础设施的正确语言毫无疑问是：Java。然而，当我们走过第 20 个年头并展望未来时，情况已经变了。”</p>
<p>近日，全球知名的开源中间件厂商 WSO2 发布了一篇震动技术圈的博文——《<a href="https://wso2.com/library/blogs/goodbye-java-hello-go">Goodbye Java, Hello Go!</a>》。</p>
<p>这是企业级软件在云原生时代技术风向标的一次重要偏转。作为 Java 时代的既得利益者，WSO2 曾在 API 管理、集成中间件领域构建了庞大的 Java 帝国。为何在今天，他们会做出如此激进的转向？Java 真的不适合未来了吗？Go 到底赢在哪里？</p>
<p>让我们深入剖析这背后的技术逻辑、架构变迁与<a href="https://www.reddit.com/r/golang/comments/1qomr6g/goodbye_java_hello_go/">社区的激烈争议</a>。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/distributed-system-guide-qr.png" alt="" /></p>
<h2>时代的变迁——从“服务器”到“函数”</h2>
<p>WSO2 的转向并非一时冲动，而是基于对过去 15 年基础设施软件形态深刻变化的洞察。其博文中极其精准地总结了这一变迁：</p>
<h3>“服务器”概念的消亡</h3>
<p>在 2010 年代之前，中间件是以独立“服务器”（Server）的形式交付的。</p>
<ul>
<li>应用服务器 (App Servers)：如 WebLogic, WebSphere, Tomcat。</li>
<li>企业服务总线 (ESB)：集成了各种协议适配器的庞然大物。</li>
<li>业务流程服务器 (Process Servers)：管理长周期的业务状态。</li>
</ul>
<p>那是一个“重量级”的时代。你部署一个服务器，然后把你的业务逻辑（WAR 包、JAR 包）扔进去运行。这正是 Java 和 JVM 的黄金时代——JVM 作为一个强大的运行时环境，提供了热加载、动态管理、JIT 优化等一系列高级功能，完美匹配了这种“长时间运行、多应用共享”的服务器模式。</p>
<p>然而，容器化时代终结了这一切。</p>
<p>现在的“服务器”不再是一个独立的实体，而变成了一个<strong>库 (Library)</strong>。</p>
<ul>
<li>你的业务逻辑不再是“寄生”在服务器里，而是包含了服务器。</li>
<li>整个应用打包成一个 Docker 镜像，作为一个独立的进程运行。</li>
<li>任务完成后，容器销毁，进程结束。</li>
</ul>
<p>在 WSO2 看来，“独立软件服务器的时代已经结束了”。这对于 Java 来说，是一个底层逻辑的打击。</p>
<h3>生命周期：从“月”到“毫秒”</h3>
<p>在过去，一个服务器启动慢点没关系，因为它一旦启动，可能会运行数月甚至数年。JVM 的 JIT（即时编译）机制通过预热来换取长期运行的高性能，这是一种非常合理的权衡。</p>
<p>但在 Kubernetes 和 Serverless 主导的今天，服务器变得极度短暂 (Ephemeral)。</p>
<ul>
<li>容器根据负载自动扩缩容，新实例必须瞬间就绪。</li>
<li>Serverless 函数可能只存活几秒钟。</li>
</ul>
<p>在这种场景下，启动时间就是服务质量 (SLA)。</p>
<p>WSO2 指出：“容器应该在毫秒级内准备好起舞，而不是秒级。” Java 庞大的生态依赖（Spring 初始化、类加载、注解扫描）和 JVM 的启动开销，在云原生环境下显得格格不入。内存膨胀（Memory Bloat）也直接推高了云厂商的账单。</p>
<h3>生态位的错位：修补 vs. 原生</h3>
<p>面对挑战，Java 社区并非无动于衷。<strong>GraalVM Native Image</strong> 试图通过 AOT（提前编译）解决启动速度问题；<strong>Project Loom</strong> 试图通过虚拟线程解决并发资源消耗问题。</p>
<p>但在 WSO2 的架构师们看来，这些努力更像是一种<strong>“追赶式的修补”</strong>。</p>
<blockquote>
<p>“这些解决方案感觉就像是在为一个不同时代设计的语言和运行时进行翻新。”</p>
</blockquote>
<p>GraalVM 虽然强大，但带来了构建时间的剧增、反射的限制以及调试的复杂性。相比之下，Go 语言在设计之初就<strong>原生 (Native)</strong> 地考虑了这些问题：编译即二进制，启动即巅峰，并发即协程。这是一种“原生契合”与“后天适配”的本质区别。</p>
<h2>WSO2 的架构重构——前端不动，后端大换血</h2>
<p>WSO2 并没有盲目地全盘推翻，他们对企业级软件的三层架构（前端、中间层、后端）进行了冷静的评估：</p>
<h3>前端 (Frontend)：维持现状</h3>
<ul>
<li><strong>现状</strong>：Web (JS/TS), iOS (Swift/Flutter), Android (Kotlin/Java)。</li>
<li><strong>未来</strong>：<strong>No Change</strong>。</li>
<li><strong>理由</strong>：前端技术栈受限于终端设备（浏览器、手机 OS），且更新换代极快（“fad-driven”，时尚驱动）。目前没有改变的必要。</li>
</ul>
<h3>中间层 (Middle Tier)：Ballerina 的独角戏</h3>
<ul>
<li><strong>现状</strong>：Java, Ballerina。</li>
<li><strong>未来</strong>：<strong>Ballerina</strong>。</li>
<li><strong>核心逻辑</strong>：这一层通常被称为 BFF (Backend for Frontend)，负责 API 聚合、编排。WSO2 自研的 <strong>Ballerina</strong> 语言正是为此而生，它将网络原语（Network Primitives）作为语言的一等公民，极其适合做集成工作。</li>
</ul>
<h3>后端 (Backend)：Go 与 Python 的双雄会</h3>
<ul>
<li><strong>现状</strong>：Java, Go, NodeJS, Python。</li>
<li><strong>未来</strong>：<strong>Go, Python</strong>。</li>
<li><strong>核心逻辑</strong>：这是基础设施逻辑的核心。Python 将继续统治 AI/ML 领域，而 Go 将彻底接管原本属于 Java 的领地，成为构建高性能、高并发基础设施的首选。</li>
</ul>
<h2>为什么是 Go，而不是 Rust？</h2>
<p>这是一个每个技术决策者都会面临的灵魂拷问：既然要追求性能和原生编译，为什么不选 Rust？它不是更快、更安全吗？</p>
<p>WSO2 的回答展现了极高的工程务实精神。他们确实评估了 Rust，但最终选择了 Go。理由如下：</p>
<h3>抽象层级的匹配</h3>
<ul>
<li><strong>Rust 的战场</strong>：操作系统内核、浏览器引擎、嵌入式设备。这些场景需要对内存布局、生命周期做极致的微操，且进程几乎永不重启。</li>
<li><strong>Go 的战场</strong>：中间件、API 网关、编排系统。</li>
</ul>
<p>WSO2 构建的是<strong>中间件基础设施</strong>（如 API Gateway, Identity Server）。在这个层级，“我们总是比裸金属 (Bare Metal) 高那么一点点”。Go 提供的自动垃圾回收 (GC) 和高效的并发原语，恰好处于这个“甜点”位置。</p>
<h3>避免“过度杀伤” (Overkill)</h3>
<p>Rust 的所有权模型 (Ownership) 和借用检查器 (Borrow Checker) 虽然保证了内存安全，但也带来了极高的学习曲线和开发摩擦。对于大多数企业级业务逻辑来说，Rust 提供的控制力是多余的，而为此付出的开发效率代价是昂贵的。</p>
<h3>云原生生态的引力</h3>
<p>这是一个无法忽视的因素。Go 是云原生的“普通话”。</p>
<p>Kubernetes、Docker、Prometheus、etcd、Terraform…… 几乎所有现代基础设施的基石都是用 Go 构建的。选择 Go，意味着：</p>
<ul>
<li><strong>库的复用</strong>：可以直接调用 K8s 的库，而不是通过 API。</li>
<li><strong>人才的复用</strong>：DevOps 工程师和 SRE 通常都懂 Go，可以无缝参与开发。</li>
<li><strong>社区的共鸣</strong>：更容易融入 CNCF 生态，获得社区贡献。</li>
</ul>
<h2>实战验证——WSO2 的 Go 之旅</h2>
<p>WSO2 并非纸上谈兵，他们在过去十年中已经在多个关键项目中验证了 Go 的能力：</p>
<h3>OpenChoreo (CNCF Sandbox Project)</h3>
<p>这是 WSO2 最具野心的项目之一，一个面向 Kubernetes 的开发者平台（IDP）。</p>
<ul>
<li><strong>挑战</strong>：需要深度集成 K8s，处理复杂的 GitOps 流程，且自身必须轻量、快速。</li>
<li><strong>Go 的价值</strong>：作为 K8s 原生语言，Go 让 OpenChoreo 能够像原生组件一样运行在集群中，资源占用极低。</li>
</ul>
<h3>Ballerina 编译器的彻底重写</h3>
<p>这是一个惊人的决定。Ballerina 语言最初是基于 Java 实现的（运行在 JVM 上）。现在，WSO2 正在用 Go 完全重写 Ballerina 编译器。</p>
<ul>
<li><strong>目标</strong>：摆脱 JVM 的束缚，实现瞬间启动。</li>
<li><strong>新架构</strong>：前端编译器用 Go 编写，直接生成基于 Go 的中间表示 (BIR)，这让 CLI 工具的体验得到了质的飞跃。</li>
</ul>
<h3>Thunder：下一代身份认证平台</h3>
<p>身份认证（IAM）通常处于请求链路的关键路径上，对延迟极其敏感。Thunder 利用 Go 的高并发处理能力，实现了在高负载下的低延迟认证，且在容器化环境中具备极快的冷启动能力。</p>
<h2>社区激辩——理性的探讨与情绪的宣泄</h2>
<p>这篇博文在 Reddit 的 r/golang 板块引发了数百条评论的激烈讨论。这不仅仅是语言之争，更是两种工程文化的碰撞。</p>
<h3>反方阵营：Java 依然是王者</h3>
<ol>
<li>
<p><strong>“这是管理层的愚蠢决定”</strong>：<br />
一位愤怒的网友评论道：“计算资源是廉价的，开发人员的时间才是昂贵的。” 他认为，虽然 Go 节省了内存，但在业务逻辑极其复杂的企业级应用中，Java 强大的 IDE 支持、成熟的设计模式和庞大的生态库能显著降低开发成本。强行切换到 Go，可能会导致开发效率的崩塌。</p>
</li>
<li>
<p><strong>“Java 并没有停滞不前”</strong>：<br />
很多 Java 支持者指出，WSO2 对 Java 的印象似乎还停留在 Java 8 时代。现代 Java (21+) 引入了 <strong>Virtual Threads (Project Loom)</strong>，在并发模型上已经可以与 Go 的 Goroutine 媲美；而 <strong>GraalVM</strong> 的成熟也让 Java 能够编译成原生镜像，启动速度不再是短板。</p>
</li>
<li>
<p><strong>“生态位的不可替代性”</strong>：<br />
在处理遗留系统（如 SOAP, XML, 复杂的事务处理）方面，Java 积累了 20 年的库是 Go 无法比拟的。用 Go 去重写这些复杂的业务逻辑，无异于“重新发明轮子”，且容易引入新的 Bug。</p>
</li>
</ol>
<h3>正方阵营：Go 是未来的选择</h3>
<ol>
<li>
<p><strong>“运维友好才是真的友好”</strong>：<br />
一位 DevOps 工程师反驳道：“在微服务架构下，运维成本是巨大的。” Go 生成的静态二进制文件（Static Binary）是运维的梦想——没有依赖地狱，没有 JVM 版本冲突，所有东西都打包在一个几 MB 的文件里。这种部署的便捷性，是 Java 永远无法达到的。</p>
</li>
<li>
<p><strong>“简洁是一种防御机制”</strong>：<br />
Java 项目容易陷入“过度设计”的泥潭——层层叠叠的抽象、复杂的继承关系、魔法般的注解。Go 的强制简洁性（没有继承、显式错误处理）虽然写起来啰嗦，但读起来轻松。在人员流动频繁的大型团队中，Go 代码的可维护性往往优于 Java。</p>
</li>
<li>
<p><strong>“云原生的网络效应”</strong>：<br />
正如 WSO2 所言，如果你在写 K8s Controller，如果你在写 Sidecar，如果你在写网关，Go 就是默认语言。这不仅仅是语言特性的问题，这是生态引力的问题。逆流而上使用 Java 编写这些组件，会让你失去整个社区的支持。</p>
</li>
</ol>
<h2>小结：没有终极语言，只有最适合的工具</h2>
<p>WSO2 的声明并非要“杀死” Java。他们明确表示，现有的 Java 产品线将继续得到长期支持。但在新一代的云原生基础设施平台上，他们坚定地选择了 Go。</p>
<p>这一选择揭示了软件行业的一个趋势：通用编程语言的时代似乎正在结束，“领域专用语言”的时代正在到来。</p>
<ul>
<li>做前端？选 TS/JS。</li>
<li>做 AI 模型训练？选 Python。</li>
<li>做操作系统、浏览器或者嵌入式系统？选 C/Rust/C++。</li>
<li>做企业级业务逻辑（尤其是遗留系统）？Java 依然稳健。</li>
<li>做云原生基础设施、中间件、高并发服务？Go 是当之无愧的王者。</li>
</ul>
<p>对于 Gopher 而言，WSO2 的转型是一个强有力的信号：你们选对了赛道。Go 不仅是 Google 的语言，它正在成为定义未来十年企业级基础设施的通用语。</p>
<p>资料链接：</p>
<ul>
<li>https://wso2.com/library/blogs/goodbye-java-hello-go</li>
<li>https://www.reddit.com/r/golang/comments/1qomr6g/goodbye_java_hello_go/</li>
</ul>
<hr />
<p><strong>你的技术栈“保卫战”</strong></p>
<p>WSO2 的转身，是时代的缩影，也是个体的写照。在你的团队中，是否也发生过类似的“去 Java 化”或“拥抱 Go”的讨论？你认为在云原生时代，Java 还能守住它的江山吗？</p>
<p>欢迎在评论区分享你的观点或经历，无论是坚守者还是转型者，我们都想听听你的声音！</p>
<p>如果这篇文章引发了你的思考，别忘了点个【赞】和【在看】，并转发给你的架构师朋友，看看他们怎么选！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kelsey Hightower 退休后的冷思考：为什么 10 年过去了，我们还在谈论容器？</title>
		<link>https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age/</link>
		<comments>https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age/#comments</comments>
		<pubDate>Thu, 22 Jan 2026 00:23:51 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[apple/container]]></category>
		<category><![CDATA[ChasingHype]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[container]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[FinishingWork]]></category>
		<category><![CDATA[FreeBSDServiceJails]]></category>
		<category><![CDATA[InvisibleTechnology]]></category>
		<category><![CDATA[KelseyHightower]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[LargeLanguageModel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[MichaelCrosby]]></category>
		<category><![CDATA[NativeIntegration]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[PromptEngineer]]></category>
		<category><![CDATA[Standardization]]></category>
		<category><![CDATA[TsunamiCycle]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[上下文]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[原生集成]]></category>
		<category><![CDATA[完成工作]]></category>
		<category><![CDATA[容器]]></category>
		<category><![CDATA[工匠精神]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[提示词工程师]]></category>
		<category><![CDATA[操作系统]]></category>
		<category><![CDATA[标准化]]></category>
		<category><![CDATA[海啸循环]]></category>
		<category><![CDATA[烂尾工程]]></category>
		<category><![CDATA[追逐热点]]></category>
		<category><![CDATA[隐形化]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5760</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age 大家好，我是Tony Bai。 “如果你在 2014 年告诉我，十年后我们还在讨论容器，我会觉得你疯了。但现在是 2025 年，我们依然在这里，谈论着同一个话题。” 在去年中旬举行的 ContainerDays Hamburg 2025 上，早已宣布“退休”的云原生传奇人物 Kelsey Hightower 发表了一场发人深省的主题演讲。在这个 AI 狂热席卷全球的时刻，他没有随波逐流地去谈论大模型，而是回过头来，向所有技术人抛出了一个灵魂拷问： 为什么我们总是在追逐下一个热点，却从来没有真正完成过手头的工作？ 烂尾工程的诅咒——技术圈的“海啸”循环 Kelsey 首先回顾了他职业生涯中经历的三次技术浪潮：Linux 取代 Unix(AIX、Solaris等)、DevOps 的兴起、以及 Docker/Kubernetes 的容器革命。 他敏锐地指出，技术圈似乎陷入了一个无休止的“海啸循环”： 热点爆发：一个新的技术（如 Docker）出现，VC 资金涌入，所有人都在谈论它。 疯狂追逐：为了抢占市场，大家都只做“足够发布”的工作，追求速度而非完美。 未竟而散：还没等这项技术真正成熟、稳定、标准化，下一个热点（如 AI）就来了。于是，半数工程师跳船去追新热点，留下一地鸡毛。 “我们就像一群踢足球的孩子，看到球滚到哪里，所有人就一窝蜂地冲过去，连守门员都离开了球门。结果是，球门大开，后方空虚。” 这就是为什么 10 年过去了，我们还在谈论容器。因为我们当年并没有真正“完成”它。我们留下了无数的复杂性、不兼容和“企业级发行版”，却忘了初衷。 Apple 的“非性感”工作——这才是未来 在演讲中，Kelsey 分享了他最近的一个惊人发现：Apple 正在 macOS 中原生集成容器运行时。 这不是 Docker Desktop，也不是虚拟机套娃，而是操作系统级别的原生支持。这就是 GitHub 上的一个名为 apple/container 的 Apple [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/why-are-we-still-talking-about-containers-in-ai-age-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age">本文永久链接</a> &#8211; https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age</p>
<p>大家好，我是Tony Bai。</p>
<p>“如果你在 2014 年告诉我，十年后我们还在讨论容器，我会觉得你疯了。但现在是 2025 年，我们依然在这里，谈论着同一个话题。”</p>
<p>在去年中旬举行的 ContainerDays Hamburg 2025 上，早已宣布“退休”的云原生传奇人物 <strong>Kelsey Hightower</strong> 发表了<a href="https://www.youtube.com/watch?v=x1t2GPChhX8">一场发人深省的主题演讲</a>。在这个 AI 狂热席卷全球的时刻，他没有随波逐流地去谈论大模型，而是回过头来，向所有技术人抛出了一个灵魂拷问：</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/why-are-we-still-talking-about-containers-in-ai-age-2.png" alt="" /></p>
<p><strong>为什么我们总是在追逐下一个热点，却从来没有真正完成过手头的工作？</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/distributed-system-guide-qr.png" alt="" /></p>
<h2>烂尾工程的诅咒——技术圈的“海啸”循环</h2>
<p>Kelsey 首先回顾了他职业生涯中经历的三次技术浪潮：Linux 取代 Unix(AIX、Solaris等)、DevOps 的兴起、以及 Docker/Kubernetes 的容器革命。</p>
<p>他敏锐地指出，技术圈似乎陷入了一个无休止的“海啸循环”：</p>
<ol>
<li><strong>热点爆发</strong>：一个新的技术（如 Docker）出现，VC 资金涌入，所有人都在谈论它。</li>
<li><strong>疯狂追逐</strong>：为了抢占市场，大家都只做“足够发布”的工作，追求速度而非完美。</li>
<li><strong>未竟而散</strong>：还没等这项技术真正成熟、稳定、标准化，下一个热点（如 AI）就来了。于是，半数工程师跳船去追新热点，留下一地鸡毛。</li>
</ol>
<blockquote>
<p>“我们就像一群踢足球的孩子，看到球滚到哪里，所有人就一窝蜂地冲过去，连守门员都离开了球门。结果是，球门大开，后方空虚。”</p>
</blockquote>
<p>这就是为什么 10 年过去了，我们还在谈论容器。因为我们当年并没有真正“完成”它。我们留下了无数的复杂性、不兼容和“企业级发行版”，却忘了初衷。</p>
<h2>Apple 的“非性感”工作——这才是未来</h2>
<p>在演讲中，Kelsey 分享了他最近的一个惊人发现：<strong>Apple 正在 macOS 中原生集成容器运行时。</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/why-are-we-still-talking-about-containers-in-ai-age-3.png" alt="" /></p>
<p>这不是 Docker Desktop，也不是虚拟机套娃，而是操作系统级别的原生支持。这就是 GitHub 上的一个名为 <strong>apple/container</strong> 的 Apple 开源项目：</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/why-are-we-still-talking-about-containers-in-ai-age-4.png" alt="" /></p>
<p>Kelsey 提到 contributors 中有 Docker 元老 Michael Crosby ，Michael Crosby 正在 Apple 做着这件“不性感”但极其重要的事情。</p>
<p>Kelsey 认为，这才是容器技术的<strong>终局</strong>：</p>
<ul>
<li><strong>标准化</strong>：容器运行时将成为像 TCP/IP 协议栈一样的操作系统标配，无论你是 Linux、macOS 还是 Windows。</li>
<li><strong>隐形化</strong>：你不再需要安装 Docker，不再需要关心运行时。它就在那里，像水和电一样自然。</li>
<li><strong>应用商店的重构</strong>：未来，App Store 分发的可能就是容器镜像，彻底解决依赖冲突和安全沙箱问题。</li>
</ul>
<p>这正是那些没有去追逐 AI 热点，而是选择留在“球门”前的人，正在默默完成的伟大工程。</p>
<h2>关于 AI——不要做“盲目的复制者”</h2>
<p>作为 Google 前员工，Kelsey 对 AI 并不陌生。但他对当前的 LLM 热潮保持着清醒的警惕。</p>
<p>他现场演示了一个有趣的实验：询问一个本地运行的 LLM “FreeBSD Service Jails 需要什么版本？”<br />
*   <strong>AI 的回答</strong>：FreeBSD 13（一本正经的胡说八道）。<br />
*   <strong>真相</strong>：FreeBSD 15（尚未发布）。</p>
<p>Kelsey 指出，现在的 AI 就像一个热心但糊涂的路人，它不懂装懂，只想取悦你。</p>
<p><strong>他的建议是</strong>：</p>
<ol>
<li><strong>不要迷信生成</strong>：不要因为 AI 生成了代码就直接用，就像你不会盲目复制 Stack Overflow 的代码一样。</li>
<li><strong>上下文为王</strong>：AI 不是魔法，它只是一个强大的搜索引擎。如果你想得到正确答案，你必须先给它提供正确的<strong>上下文（Context）</strong>。</li>
<li><strong>先训练自己，再训练模型</strong>：在成为“提示词工程师”之前，先成为一名合格的工程师。只有当你自己深刻理解了问题，你才能判断 AI 的回答是天才还是垃圾。</li>
</ol>
<h2>给技术人的最后忠告</h2>
<p>演讲的最后，Kelsey 回答了关于开源、职业发展和未来的提问。他的几条忠告，值得每一位技术人铭记：</p>
<ul>
<li><strong>关于职业</strong>：“你的职业生涯不应该是一场马拉松，而应该是一场<strong>接力赛</strong>。当你到达巅峰时，想的应该是如何把接力棒交给下一个人，而不是霸占着位置直到倒下。”</li>
<li><strong>关于开源</strong>：“不要被商业公司的许可证游戏迷惑。如果代码是公开的，你可以 fork，可以学习。真正的开源精神在于分享和协作，而不在于谁拥有控制权。”</li>
<li><strong>关于专注</strong>：像那家只做钳子的德国公司（Knipex）一样，专注做好一件事。技术圈不缺追风者，缺的是能够沉下心来，把一项技术打磨到极致、直到它变得“无聊”和“隐形”的工匠。</li>
</ul>
<h2>小结</h2>
<p>Kelsey Hightower 的这场演讲，是对当前浮躁技术圈的一剂清醒剂。</p>
<p>他提醒我们，技术的真正价值，不在于它有多新、多热，而在于它是否真正解决了问题，是否被<strong>完整地</strong>交付了。在所有人都在谈论 AI 的今天，或许我们更应该关注那些被遗忘的“球门”，去完成那些尚未完成的伟大工程。</p>
<p>资料链接：https://www.youtube.com/watch?v=x1t2GPChhX8</p>
<hr />
<p><strong>你的“烂尾”故事</strong></p>
<p>Kelsey 的“海啸循环”论断让人深思。在你的职业生涯中，是否也经历过这种“还没做完旧技术，就被迫去追新热点”的无奈？你认为在这个 AI 时代，我们该如何保持“工匠精神”？</p>
<p>欢迎在评论区分享你的经历或思考！让我们一起在喧嚣中寻找内心的宁静。</p>
<p>如果这篇文章让你停下来思考了片刻，别忘了点个【赞】和【在看】，并转发给那些还在焦虑中奔跑的同行！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如果《疯狂动物城》是一个分布式系统，那它一定是用 Go 写的</title>
		<link>https://tonybai.com/2025/12/06/zootopia-distributed-system-written-in-go/</link>
		<comments>https://tonybai.com/2025/12/06/zootopia-distributed-system-written-in-go/#comments</comments>
		<pubDate>Sat, 06 Dec 2025 14:05:50 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[影音坊]]></category>
		<category><![CDATA[技术志]]></category>
		<category><![CDATA[BlockingI/O]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Cgroup]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[distributedsystem]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[GMP]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[goroutine]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[Namespace]]></category>
		<category><![CDATA[QPS]]></category>
		<category><![CDATA[Zootopia]]></category>
		<category><![CDATA[Zootopia2]]></category>
		<category><![CDATA[分布式系统]]></category>
		<category><![CDATA[协程]]></category>
		<category><![CDATA[容器化]]></category>
		<category><![CDATA[微服务]]></category>
		<category><![CDATA[架构师]]></category>
		<category><![CDATA[环境隔离]]></category>
		<category><![CDATA[疯狂动物城]]></category>
		<category><![CDATA[疯狂动物城2]]></category>
		<category><![CDATA[调度模型]]></category>
		<category><![CDATA[高并发]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5489</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/12/06/zootopia-distributed-system-written-in-go 大家好，我是Tony Bai。 文章开始前，先给各位道个歉，今天的标题确实有点“党”。 毕竟，非要说一个满是毛茸茸动物的动画片是用 Go 语言写的，这脑洞开得确实有点大。 但请原谅一个老程序员的“职业病”。 为了迎接本周末《疯狂动物城2》的观影家庭活动，上个周末，我特意腾出时间，陪家里5岁的二娃重温了第一部经典。原本我是想好好享受亲子时光的，可看着看着，作为写了十几年代码的程序员，我的关注点却莫名其妙地“跑偏”了。 当看到那座容纳了冰川、沙漠、雨林，拥有千万级“居民并发量”的超级城市运转得如此丝滑时，我脑子里的画面变了：这越看越像一个设计精良的云原生分布式系统；而那个身手敏捷的兔子警官，怎么看都像一只跑在服务器里的 Gopher…… 于是，我忍不住这股“胡思乱想”的冲动，决定一本正经地胡说八道一番。 如果你也好奇，当一个架构师戴着“代码滤镜”看电影时，到底看到了什么？不妨继续听我聊聊 在我眼里，如果要把这座“动物城”搬到服务器上，它的底层架构，一定是用 Go 语言写的。 为什么这么说？因为陪娃看电影的过程中，我仿佛看到了 Go 语言设计哲学的完美具象化。 那个巨大的“空调墙”与容器化 电影最震撼的一幕，莫过于朱迪坐火车进城。 火车穿过烈日炎炎的撒哈拉广场（Sahara Square），下一秒就钻进了冰天雪地的冰川镇（Tundratown）。 女儿指着屏幕好奇地问我：“爸爸，为什么那边那么热，这边这么冷，它们在一起不会化掉吗？” 我指着那道巨大的分隔墙说：“因为有那堵墙呀，它把热气和冷气隔开了。” 在那一刻，我脑子里闪过的其实是 Docker 和 Kubernetes。 在传统的系统里，不同环境的应用混在一起很容易“打架”（环境冲突）。而在动物城里，为了让北极熊（需要低温库）和骆驼（需要高温环境）在同一台“物理机”上共存，设计师构建了最极致的环境隔离。 这不正是 Go 语言统治的云原生世界吗？ Go 语言构建了 Docker，构建了 Kubernetes。正是这些基础设施，像那道巨大的空调墙一样，通过 Namespace（命名空间）和 Cgroup（资源限制），让成千上万个习性迥异的“服务”互不干扰，在此消彼长的流量洪峰中，不仅没“化掉”，还活得很好。 树懒“闪电”与高并发的噩梦 重温经典，依然被树懒“闪电”查车牌那段笑出内伤。 女儿笑得在沙发上捧腹：“爸爸，他太慢了！朱迪急死了！” 我跟着笑，但心里却是一阵恶寒——这简直是每一个后端工程师的噩梦：主线程阻塞（Blocking I/O）。 试想一下，如果动物城的市政大厅系统是单线程的，一只树懒卡在窗口办业务，后面排队的一万只动物全得等着。整个城市的吞吐量（QPS）瞬间归零，系统直接宕机。 但动物城（Zootopia）作为一个千万人口的超大系统，依然运转良好，说明它底层一定解决了这个问题。 如果是用 Go 写的，这就很好解释了。 Go 的设计哲学里，最核心的就是“高并发”。面对慢吞吞的“树懒式”任务（比如网络等待、文件读取），Go 不会傻等。它会派出一个轻量级的 goroutine（协程）去盯着树懒，主线程立马转头去处理下一只豹子或兔子的请求。 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/zootopia-distributed-system-written-in-go-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/12/06/zootopia-distributed-system-written-in-go">本文永久链接</a> &#8211; https://tonybai.com/2025/12/06/zootopia-distributed-system-written-in-go</p>
<p>大家好，我是Tony Bai。</p>
<p><strong>文章开始前，先给各位道个歉，今天的标题确实有点“党”。</strong></p>
<p>毕竟，非要说一个满是毛茸茸动物的动画片是用 Go 语言写的，这脑洞开得确实有点大。</p>
<p>但请原谅一个老程序员的“职业病”。</p>
<p>为了迎接本周末《疯狂动物城2》的观影家庭活动，上个周末，我特意腾出时间，陪家里5岁的二娃重温了第一部经典。原本我是想好好享受亲子时光的，可看着看着，作为写了十几年代码的程序员，我的关注点却莫名其妙地“跑偏”了。</p>
<p>当看到那座容纳了冰川、沙漠、雨林，拥有千万级“居民并发量”的超级城市运转得如此丝滑时，我脑子里的画面变了：这越看越像一个设计精良的<strong>云原生分布式系统</strong>；而那个身手敏捷的兔子警官，怎么看都像一只跑在服务器里的 <strong>Gopher</strong>……</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/zootopia-distributed-system-written-in-go-2.jpg" alt="" /></p>
<p>于是，我忍不住这股“胡思乱想”的冲动，决定一本正经地胡说八道一番。</p>
<p><strong>如果你也好奇，当一个架构师戴着“代码滤镜”看电影时，到底看到了什么？不妨继续听我聊聊</strong></p>
<p>在我眼里，如果要把这座“动物城”搬到服务器上，它的底层架构，一定是用 <strong>Go 语言</strong>写的。</p>
<p>为什么这么说？因为陪娃看电影的过程中，我仿佛看到了 Go 语言设计哲学的完美具象化。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>那个巨大的“空调墙”与容器化</h2>
<p>电影最震撼的一幕，莫过于朱迪坐火车进城。</p>
<p>火车穿过烈日炎炎的撒哈拉广场（Sahara Square），下一秒就钻进了冰天雪地的冰川镇（Tundratown）。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/zootopia-distributed-system-written-in-go-3.jpg" alt="" /></p>
<p>女儿指着屏幕好奇地问我：“爸爸，为什么那边那么热，这边这么冷，它们在一起不会化掉吗？”</p>
<p>我指着那道巨大的分隔墙说：“因为有那堵墙呀，它把热气和冷气隔开了。”</p>
<p>在那一刻，我脑子里闪过的其实是 <strong>Docker 和 Kubernetes</strong>。</p>
<p>在传统的系统里，不同环境的应用混在一起很容易“打架”（环境冲突）。而在动物城里，为了让北极熊（需要低温库）和骆驼（需要高温环境）在同一台“物理机”上共存，设计师构建了最极致的<strong>环境隔离</strong>。</p>
<p>这不正是 Go 语言统治的云原生世界吗？</p>
<p>Go 语言构建了 Docker，构建了 Kubernetes。正是这些基础设施，像那道巨大的空调墙一样，通过 Namespace（命名空间）和 Cgroup（资源限制），让成千上万个习性迥异的“服务”互不干扰，在此消彼长的流量洪峰中，不仅没“化掉”，还活得很好。</p>
<h2>树懒“闪电”与高并发的噩梦</h2>
<p>重温经典，依然被树懒“闪电”查车牌那段笑出内伤。</p>
<p>女儿笑得在沙发上捧腹：“爸爸，他太慢了！朱迪急死了！”</p>
<p>我跟着笑，但心里却是一阵恶寒——这简直是每一个后端工程师的噩梦：<strong>主线程阻塞（Blocking I/O）</strong>。</p>
<p>试想一下，如果动物城的市政大厅系统是单线程的，一只树懒卡在窗口办业务，后面排队的一万只动物全得等着。整个城市的吞吐量（QPS）瞬间归零，系统直接宕机。</p>
<p>但动物城（Zootopia）作为一个千万人口的超大系统，依然运转良好，说明它底层一定解决了这个问题。</p>
<p>如果是用 <strong>Go</strong> 写的，这就很好解释了。</p>
<p>Go 的设计哲学里，最核心的就是<strong>“高并发”</strong>。面对慢吞吞的“树懒式”任务（比如网络等待、文件读取），Go 不会傻等。它会派出一个轻量级的 goroutine（协程）去盯着树懒，主线程立马转头去处理下一只豹子或兔子的请求。</p>
<p>在这个庞大的系统里，也许有成千上万只“树懒”在慢动作，但整个城市依然像朱迪一样反应灵敏、健步如飞。这就是 Go 语言 GMP 调度模型的魔力。</p>
<h2>朱迪警官：小身材，大能量</h2>
<p>最后，说说我们的主角，兔子朱迪。</p>
<p>在满是大象、犀牛、北极熊的警局里，朱迪显得太小了。她没有庞大的身躯，起初也不被看好，被安排去贴罚单。</p>
<p>这像极了 Go 语言刚诞生时的处境。相比于 Java（大象）的厚重、C++（犀牛）的复杂，Go 显得语法简单、标准库精简，甚至生成的二进制文件都很小，一度被认为是“玩具语言”。</p>
<p>但朱迪凭什么破了大案？</p>
<p><strong>靠的是灵活性、执行力和低资源消耗。</strong></p>
<p>她能钻进犀牛进不去的狭窄管道（相对低内存的占用），她能在他人的视野盲区快速穿梭（极速启动）。</p>
<p>在构建现代微服务架构时，我们越来越不喜欢笨重的“单体应用”，而倾向于像朱迪这样<strong>小而美、独立部署、逻辑清晰</strong>的服务。</p>
<p>Go 语言就是代码世界里的“朱迪”。它剔除了所有花哨的语法糖，强制你写出清晰（甚至有点死板）的代码，但正是这种克制和高效，让它成为了支撑起整个动物城（云原生生态）最坚实的骨架。</p>
<h2>写在最后</h2>
<p>电影结束了，女儿意犹未尽，还在模仿朱迪的动作。</p>
<p>她问我：“爸爸，下周我们去看《疯狂动物城》第二部，朱迪会不会变得更厉害？”</p>
<p>我说：“肯定会啊，因为她一直在努力让这个城市变得更好。”</p>
<p>作为程序员，我们写下的每一行代码，何尝不是在构建一个虚拟的“动物城”？我们选择 Go，选择各种架构，不过是为了让这个系统更包容、更稳定，让里面的“居民”生活得更好。</p>
<p><strong>这周末，我将带娃直击《疯狂动物城2》。</strong> 听说这一次，动物城面临了前所未有的复杂危机。</p>
<p>届时，我会继续为大家带来<strong>“程序员眼中的《疯狂动物城2》”</strong>，看看在新的挑战下，我们的“系统架构”又该如何进化？</p>
<p>敬请期待！</p>
<hr />
<p><strong>互动话题：</strong></p>
<p>在重温经典电影时，你有没有因为“职业病”而产生过什么奇怪的联想？欢迎在评论区分享你的脑洞！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/12/06/zootopia-distributed-system-written-in-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go 2025云原生与可观测年度报告：底层性能革新与生态固防</title>
		<link>https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report/</link>
		<comments>https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report/#comments</comments>
		<pubDate>Wed, 03 Dec 2025 00:09:11 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AI调度]]></category>
		<category><![CDATA[AmbientMesh]]></category>
		<category><![CDATA[APIGateway]]></category>
		<category><![CDATA[AWSCDK]]></category>
		<category><![CDATA[CgroupAware]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[CNCF]]></category>
		<category><![CDATA[containerd]]></category>
		<category><![CDATA[ContextSwitching]]></category>
		<category><![CDATA[ControlPlane]]></category>
		<category><![CDATA[CRIO]]></category>
		<category><![CDATA[CVE-2025-64329]]></category>
		<category><![CDATA[DataPlane]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[DRA]]></category>
		<category><![CDATA[DynamicResourceAllocation]]></category>
		<category><![CDATA[eBPF]]></category>
		<category><![CDATA[encoding/json]]></category>
		<category><![CDATA[etcd]]></category>
		<category><![CDATA[ExtendedTolerationOperators]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[go1.25]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GOMAXPROCS]]></category>
		<category><![CDATA[GoroutineLeak]]></category>
		<category><![CDATA[GreenTeaGC]]></category>
		<category><![CDATA[IaC]]></category>
		<category><![CDATA[InplacePodResize]]></category>
		<category><![CDATA[istio]]></category>
		<category><![CDATA[jsonv2]]></category>
		<category><![CDATA[Knative]]></category>
		<category><![CDATA[kubebuilder]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OBI]]></category>
		<category><![CDATA[observability]]></category>
		<category><![CDATA[opentelemetry]]></category>
		<category><![CDATA[OperatorSDK]]></category>
		<category><![CDATA[Otel]]></category>
		<category><![CDATA[OTelGoSDK]]></category>
		<category><![CDATA[prometheus]]></category>
		<category><![CDATA[Pulumi]]></category>
		<category><![CDATA[RequestReply]]></category>
		<category><![CDATA[RuntimeMetrics]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[serverless]]></category>
		<category><![CDATA[ServiceMesh]]></category>
		<category><![CDATA[terraform]]></category>
		<category><![CDATA[v1.35]]></category>
		<category><![CDATA[ZeroAllocation]]></category>
		<category><![CDATA[事件驱动架构]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[内存泄露]]></category>
		<category><![CDATA[去Sidecar化]]></category>
		<category><![CDATA[双活模式]]></category>
		<category><![CDATA[反射]]></category>
		<category><![CDATA[可观测性]]></category>
		<category><![CDATA[垃圾回收]]></category>
		<category><![CDATA[基础设施即代码]]></category>
		<category><![CDATA[容器]]></category>
		<category><![CDATA[性能革新]]></category>
		<category><![CDATA[零侵入]]></category>
		<category><![CDATA[默认稳定]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5468</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report 大家好，我是Tony Bai。 2025年，对于 Go 语言和云原生生态来说，是充满挑战与变革的一年。 凭借务实的并发模型、极快的编译速度和极简的部署体验，Go 语言在过去十年间毫无争议地坐稳了现代云原生基础设施的“铁王座”。从 Kubernetes 到 Docker，从 Prometheus 到 etcd，CNCF 生态中那些最耀眼的明星项目，几乎都流淌着 Go 的血液。 但技术世界没有永远的王座。2025年，面对日益复杂的云原生挑战——如容器资源的极致限制、大规模并发状态管理，以及来自 Rust 等追求极致性能的新生代语言的“围剿”——Go 语言并非高枕无忧。 面对挑战，Go 在 2025 年交出了一份怎样的答卷？它是如何通过 Go 1.25 的底层性能革新、Kubernetes 的架构演进以及 OpenTelemetry 的生态防御来巩固壁垒的？ 本文将带你全景式复盘 Go 语言在 2025 年的硬核反击战。 底层突破：Go 1.25 为云原生带来的“性能红利” 所有上层应用的性能飞跃，都源自底层的坚实支撑。面对“性能不够极致”的质疑，2025年8月发布的 Go 1.25 祭出了近年来针对云原生场景最“贴心”的三大杀招，直接回击了对 Go 运行时的效率诟病。 Cgroup 智能感知：终于读懂了容器的心 长期以来，Go 应用在容器中运行时有一个痛点：GOMAXPROCS 默认会“误以为”自己拥有宿主机的所有逻辑 CPU 资源。当容器被 Cgroup [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/go-2025-cloud-native-observability-report-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report">本文永久链接</a> &#8211; https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report</p>
<p>大家好，我是Tony Bai。</p>
<p><strong>2025年，对于 Go 语言和云原生生态来说，是充满挑战与变革的一年。</strong></p>
<p>凭借务实的<a href="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyNzM0MDk0Mg==&amp;action=getalbum&amp;album_id=4105816518230016005#wechat_redirect">并发模型</a>、极快的编译速度和极简的部署体验，Go 语言在过去十年间毫无争议地坐稳了现代云原生基础设施的“铁王座”。从 <a href="https://tonybai.com/2025/11/26/how-google-built-a-130000-node-k8s-cluster"><strong>Kubernetes</strong></a> 到 <strong>Docker</strong>，从 <strong>Prometheus</strong> 到 <strong>etcd</strong>，CNCF 生态中那些最耀眼的明星项目，几乎都流淌着 Go 的血液。</p>
<p>但技术世界没有永远的王座。2025年，面对日益复杂的云原生挑战——如容器资源的极致限制、大规模并发状态管理，以及来自 <strong>Rust</strong> 等追求极致性能的新生代语言的“围剿”——Go 语言并非高枕无忧。</p>
<p>面对挑战，Go 在 2025 年交出了一份怎样的答卷？它是如何通过 <strong>Go 1.25</strong> 的底层性能革新、<strong>Kubernetes</strong> 的架构演进以及 <strong>OpenTelemetry</strong> 的生态防御来巩固壁垒的？</p>
<p>本文将带你全景式复盘 Go 语言在 2025 年的硬核反击战。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/go-2025-cloud-native-observability-report-2.png" alt="" /></p>
<hr />
<h2>底层突破：Go 1.25 为云原生带来的“性能红利”</h2>
<p>所有上层应用的性能飞跃，都源自底层的坚实支撑。面对“性能不够极致”的质疑，2025年8月发布的 <strong>Go 1.25</strong> 祭出了近年来针对云原生场景最“贴心”的三大杀招，直接回击了对 Go 运行时的效率诟病。</p>
<h3><a href="https://tonybai.com/2025/04/09/gomaxprocs-defaults-add-cgroup-aware/">Cgroup 智能感知</a>：终于读懂了容器的心</h3>
<p>长期以来，Go 应用在容器中运行时有一个痛点：GOMAXPROCS 默认会“误以为”自己拥有宿主机的所有逻辑 CPU 资源。当容器被 Cgroup V2 严格限制了 CPU 配额（Quota）时，Go 运行时仍会创建过多的系统线程，导致严重的上下文切换（Context Switching）和性能抖动。</p>
<p>Go 1.25 终于引入了 <strong>Cgroup-Aware GOMAXPROCS</strong>。Go 运行时现在能周期性地自动检测容器的 Cgroup CPU 配额，并动态调整内部的并发级别。这直接减少了无谓的线程争用，让运行在 Kubernetes Pod 中的 Go 服务（尤其是那些资源受限的 Sidecar 或 Agent）无需人工调优即可获得更稳定、更高效的表现。</p>
<h3>GreenTea GC：向“GC 暂停”宣战</h3>
<p>为了应对高吞吐量场景下的延迟敏感需求，Go 1.25 带来了实验性的 <strong><a href="https://tonybai.com/2025/10/31/deep-into-go-green-tea-gc">GreenTea GC</a></strong>。这是一款专门针对<strong>“小对象密集型”</strong>应用（如日志收集器、OpenTelemetry Collector、K8s 控制器）进行优化的垃圾回收器。</p>
<p>GreenTea GC 改进了内存局部性，并大幅提高了标记阶段的并行性。在典型负载下，<strong>总体 GC 开销降低约 40%</strong>，显著改善了 P99 尾部延迟。这是 Go 在面对 Rust “零成本抽象”挑战时的一次强力技术回应，证明了带 GC 的语言在高性能领域依然能打。</p>
<h3><a href="https://tonybai.com/2025/08/09/true-streaming-support-in-jsonv2">JSON/v2</a>：零内存分配的极速体验</h3>
<p>标准库中的 encoding/json 曾是著名的性能瓶颈，其依赖运行时的反射机制导致了较高的 CPU 和内存消耗。Go 1.25 重写的 <strong>encoding/json/v2</strong> 彻底改变了这一局面。 这次重写带来了 <strong>3-10 倍</strong> 的反序列化速度提升，并实现了关键的<strong>“零堆内存分配”</strong>特性。对于 Kubernetes API Server 这种每天处理海量 JSON 配置和状态更新的组件来说，这意味着巨大的 CPU 周期节省和内存压力释放，直接提升了整个集群控制平面的吞吐上限。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<hr />
<h2>基础设施：Kubernetes 与容器运行时的演进</h2>
<h3>Kubernetes v1.35：更聪明的 AI 调度</h3>
<p>作为 Go 语言的“长子”，Kubernetes 在 2025 年 11 月迎来了 v1.35 版本。除了常规的稳定性提升，最引人注目的是其调度器针对 <strong>AI/ML 工作负载</strong>的进化。这意味着 K8s 能够更精细地处理 AI 训练任务对 GPU、内存等资源的苛刻要求，实现基于阈值的资源匹配。Go 语言高效的并发模型支撑了这一日益复杂的调度逻辑。</p>
<p>同时该新版本还引入了基于阈值的<strong>Extended Toleration Operators</strong>，新增了 Gt (大于) 和 Lt (小于) 等逻辑。</p>
<p>除了 v1.35 的调度增强，K8s 在 2025 年上半年的两个版本中也引入了多项值得关注的改进：</p>
<ul>
<li><strong>DRA (Dynamic Resource Allocation) 走向稳定</strong>：在 v1.34 中，DRA 的核心 API 将升级为 Stable。这为 GPU 等硬件加速器提供了更加灵活、标准化的资源请求和分配机制，摆脱了过去对非透明参数的依赖。</li>
<li><strong>Sidecar 容器支持增强</strong>：虽然 Service Mesh 正在去 Sidecar 化，但 K8s 本身对 Sidecar 的原生支持却在加强。v1.33 引入了 In-place Pod Resize（原地调整 Pod 资源）的 Beta 支持，允许在不重启 Pod 的情况下动态调整容器的 CPU/内存限制，这对有状态应用和长连接服务至关重要。</li>
<li><strong>安全性加固</strong>：v1.33 默认启用了对 Linux Pod 的 User Namespaces 支持，显著降低了容器逃逸风险；同时，kubelet 开始支持使用 ServiceAccount Token 拉取镜像，逐步淘汰长期的 Image Pull Secrets。</li>
</ul>
<h3>容器运行时：containerd vs. CRI-O 的双雄格局</h3>
<p>在彻底移除 dockershim 后，容器运行时生态形成了双雄并立的局面，且均由 Go 语言驱动：<br />
*   <strong>containerd</strong>：功能全面、极其稳定，支持镜像管理、零停机更新，是 AWS EKS、Google GKE 等云厂商的默认首选。<br />
*   <strong>CRI-O</strong>：极简主义，专为 K8s 设计，启动更快，资源占用更低，适合边缘计算等对资源敏感的场景。</p>
<h3>警钟长鸣：containerd 内存泄露事件</h3>
<p>2025 年 11 月披露的 containerd 漏洞 (<strong>CVE-2025-64329</strong>) 给 Go 开发者敲响了警钟。该漏洞存在于 CRI Attach 实现中，用户重复调用 kubectl attach 可能导致 <strong>Goroutine 泄露</strong>，进而耗尽宿主机内存。这也反向推动了 Go 运行时可观测性的重要性（详见下文）。即便是内存安全的语言，如果并发控制不当，依然会导致资源枯竭。</p>
<h3>Operator 的安全模型升级</h3>
<p>Kubernetes Operator 是 Go 生态的另一大杀手锏。2025 年，Operator SDK 和 Kubebuilder 终于移除了对外部 kube-rbac-proxy 的依赖，转而使用 controller-runtime 库内置的 WithAuthenticationAndAuthorization 功能。指标端点（Metrics Endpoint）的安全保护逻辑被直接集成在 Go 代码的控制循环中。其带来的价值是架构更简单，攻击面更小，部署 Operator 变得“默认安全”。</p>
<hr />
<h2>架构演进：Service Mesh 与 Serverless 的新篇章</h2>
<h3>Istio Ambient Mesh：全面去 Sidecar 化</h3>
<p>服务网格正在经历一场革命。2025 年，Istio 全力推广 <strong>Ambient Mesh</strong> 模式，旨在移除侵入式的 Sidecar 代理，提供更轻量、更快速的体验。<br />
*   <strong>控制平面</strong>：Go 语言编写的控制平面（Istiod）在其中扮演了指挥官的角色，负责管理这一新型架构。<br />
*   <strong>多集群突破</strong>：Istio 1.27 (Alpha) 引入了 Ambient 模式下的多集群流量管理，允许企业以<strong>Active-Active</strong> 模式运行高可用服务，利用 Go 驱动的控制逻辑优化跨区域流量成本。</p>
<h3>Knative 毕业：Serverless 的成熟里程碑</h3>
<p>2025 年 10 月，Knative 正式从 CNCF 毕业，标志着 Go 语言构建的 Serverless 抽象层已经完全成熟。Knative Eventing 新增了 <strong>RequestReply</strong> 资源，加强了同步与异步工作负载之间的桥接能力，进一步巩固了 Go 在构建复杂事件驱动架构（EDA）中的统治地位。</p>
<h3>Go 在 IaC 中的隐形统治</h3>
<p>在基础设施即代码（IaC）领域，虽然 Terraform (HCL) 占据前台，但如 <strong>Pulumi</strong> 和 <strong>AWS CDK</strong> 等开发者优先平台，正大量利用 Go 语言的静态类型优势和丰富的库生态作为后端逻辑支撑，提升了 IaC 的测试能力和抽象水平。</p>
<hr />
<h2>可观测性：OpenTelemetry 的“默认稳定”战略</h2>
<h3>OTel Go SDK：从“可用”到“默认稳定”</h3>
<p>OpenTelemetry (OTel) 是云原生可观测性的事实标准。2025 年 11 月，OTel 治理委员会宣布了战略调整：确保所有分发版<strong>“默认稳定” (stable by default)</strong>。</p>
<p>同时，OTel Go SDK 的 <strong>Traces</strong> 和 <strong>Metrics</strong> 组件均已达到 Stable 状态，Logs SDK 处于 Beta。这标志着 Go 生态的可观测性基石已完全成熟，企业可放心在生产环境大规模部署。</p>
<h3>运行时指标：从“Opt-In”到“Opt-Out”</h3>
<p>为了更好地诊断像 containerd 内存泄露这样的问题，OTel Go SIG 正在推进一项关键变更：将 <strong>Go Runtime Metrics</strong>（如 GC 暂停时间、堆内存使用、Goroutine 数量）从“选择性开启”改为<strong>“默认开启” (Opt-Out)</strong>。这意味着运维人员能“开箱即用”地看到 Go 应用的内部健康状况，配合 OTel 的语义惯例，能够更早地发现由 GC 或并发引起的潜在风险。</p>
<h3>配置简化：YAML/JSON 文件支持</h3>
<p>为了降低在 K8s 中的部署难度，OTel Go SDK 正在增强对 YAML/JSON 文件配置的支持，改变了过去过度依赖环境变量的局面，提升了配置的灵活性和易用性。</p>
<h3>里程碑：OpenTelemetry eBPF Instrumentation (OBI) 正式发布</h3>
<p>2025 年 11 月，OpenTelemetry 社区迎来了一个重磅时刻：<strong>OpenTelemetry eBPF Instrumentation (OBI)</strong> 发布了首个 Alpha 版本。</p>
<ul>
<li><strong>零侵入，全覆盖</strong>：OBI 利用 eBPF 技术在内核层进行观测，无需修改代码、无需重启服务、无需引入任何应用依赖，即可实现对 HTTP, gRPC, SQL (MySQL, PostgreSQL), Redis, Kafka 等多种协议的自动追踪和指标采集。</li>
<li><strong>多语言一致性</strong>：无论你的应用是 Go, Java, Python 还是 Node.js 编写的，OBI 都能提供统一、标准的遥测数据。这对于那些包含遗留系统或多语言技术栈的企业来说，是实现全链路可观测性的“银弹”。</li>
<li><strong>与 SDK 的互补</strong>：OBI 并非要取代传统的 SDK 插桩。它更适合作为“基线”观测手段，快速覆盖所有服务；而对于需要深入应用内部逻辑（如业务埋点、复杂上下文传播）的场景，结合使用 OTel Go SDK 依然是最佳实践。</li>
</ul>
<hr />
<h2>巅峰对决：Go vs. Rust 在 2025</h2>
<p>我们在这里回答前面的问题：面对 Rust 的围剿，Go 守住了吗？</p>
<ul>
<li><strong>Go 的基本盘（铁王座）</strong>：在<strong>控制平面（Control Plane）</strong>、API 网关、K8s Operator 以及企业级微服务等需要快速迭代、高并发协作的领域，Go 依然是<strong>绝对王者</strong>。其极低的心智负担、极高的开发效率和成熟的生态，是 Rust 短期内难以撼动的。</li>
<li><strong>Rust 的突围（特种兵）</strong>：在<strong>数据平面（Data Plane）</strong>（如 Envoy 插件）、高性能计算等对内存安全和尾部延迟有苛刻要求的领域，Rust 凭借“零 GC”和编译期内存安全检查，确实撕开了一道口子，比 Go 快约 <strong>1.5 倍</strong>，且没有 GC 抖动。</li>
</ul>
<p><strong>2025 年的格局</strong>：Go 没有坐以待毙。通过 GreenTea GC 降低 40% 的 GC 开销，通过 JSON/v2 消除反射带来的性能损耗，Go 正在努力<strong>拉高性能下限</strong>，防止被 Rust 侵蚀核心领地。对于大多数云原生应用来说，Go 依然是<strong>综合成本（开发效率+运行效率）最低、最稳妥的选择</strong>。</p>
<hr />
<h2>总结与建议</h2>
<p>2025 年，Go 语言没有停下脚步。通过 Go 1.25 的底层革新，它补齐了在容器化环境和 JSON 处理上的短板；通过 K8s 和 OTel 的持续演进，它在云原生生态中构建了更坚固的防线。</p>
<p><strong>面对 Rust 的围剿，Go 不仅守住了铁王座，还通过自我进化，让这个王座变得更加稳固。</strong></p>
<p><strong>给技术团队的建议：</strong></p>
<ol>
<li><strong>尽快升级</strong>：将核心服务升级到 <strong>Go 1.25+</strong>，白嫖 Cgroup 感知和 JSON 性能提升，这对于降本增效立竿见影。</li>
<li><strong>拥抱 OTel</strong>：采用 OpenTelemetry Go SDK(虽然有些复杂^_^)，并利用默认开启的运行时指标，建立更精细的监控体系，防范 Goroutine 泄露等隐形杀手。</li>
<li><strong>理性选型</strong>：对于绝大多数业务服务和控制平面，<strong>坚持使用 Go</strong>；只有在极少数对延迟极其敏感、且逻辑相对稳定的数据平面组件中，才考虑引入 Rust。</li>
</ol>
<p>Go 的 2025，是稳中求进、自我革新的一年。云原生的未来，依然写满了 Go 的名字。</p>
<hr />
<h2>参考资料</h2>
<p>本文基于 2025 年多份权威技术报告与社区动态整理而成，涵盖 CNCF、Go 官方博客、Kubernetes 发布说明及 OpenTelemetry 社区公告等。</p>
<ol>
<li>Golang in 2025: Usage, Trends, and Popularity &#45; Medium, accessed November 28, 2025, <a href="https://medium.com/@datajournal/golang-in-2025-usage-trends-and-popularity-3379928dd8e2">https://medium.com/@datajournal/golang-in-2025-usage-trends-and-popularity-3379928dd8e2</a>  </li>
<li>The Go Ecosystem in 2025: Key Trends in Frameworks, Tools, and Developer Practices, accessed November 28, 2025, <a href="https://blog.jetbrains.com/go/2025/11/10/go-language-trends-ecosystem-2025/">https://blog.jetbrains.com/go/2025/11/10/go-language-trends-ecosystem-2025/</a>  </li>
<li>Go: Driving The Next Wave of Cloud-Native Infrastructure &#45; Open Source For You, accessed November 28, 2025, <a href="https://www.opensourceforu.com/2025/11/go-driving-the-next-wave-of-cloud-native-infrastructure/">https://www.opensourceforu.com/2025/11/go-driving-the-next-wave-of-cloud-native-infrastructure/</a>  </li>
<li>Go 1.25 Highlights: How Generics and Performance Define the &#8230;, accessed November 28, 2025, <a href="https://dev.to/leapcell/go-125-highlights-how-generics-and-performance-define-the-future-of-go-4pdh">https://dev.to/leapcell/go-125-highlights-how-generics-and-performance-define-the-future-of-go-4pdh</a>  </li>
<li>Kubernetes v1.35 Sneak Peek, accessed November 28, 2025, <a href="https://kubernetes.io/blog/2025/11/26/kubernetes-v1-35-sneak-peek/">https://kubernetes.io/blog/2025/11/26/kubernetes-v1-35-sneak-peek/</a>  </li>
<li>Kubernetes v1.35 Release Highlights &#35;2903 &#45; GitHub, accessed November 28, 2025, <a href="https://github.com/kubernetes/sig-release/discussions/2903">https://github.com/kubernetes/sig-release/discussions/2903</a>  </li>
<li>Top Docker Alternatives in 2025: A Complete Guide &#45; DataCamp, accessed November 28, 2025, <a href="https://www.datacamp.com/blog/docker-alternatives">https://www.datacamp.com/blog/docker-alternatives</a>  </li>
<li>15 Best Docker Alternatives for 2025: Complete Guide with Pros, Cons &amp; Migration, accessed November 28, 2025, <a href="https://signoz.io/comparisons/docker-alternatives/">https://signoz.io/comparisons/docker-alternatives/</a>  </li>
<li>CVE-2025-64329: containerd CRI server: Host memory exhaustion through Attach goroutine leak &#45; GitLab Advisory Database, accessed November 28, 2025, <a href="https://advisories.gitlab.com/pkg/golang/github.com/containerd/containerd/v2/CVE-2025-64329/">https://advisories.gitlab.com/pkg/golang/github.com/containerd/containerd/v2/CVE-2025-64329/</a>  </li>
<li>CVE-2025-64329: containerd CRI Attach Memory DoS &#45; Miggo Security, accessed November 28, 2025, <a href="https://www.miggo.io/vulnerability-database/cve/CVE-2025-64329">https://www.miggo.io/vulnerability-database/cve/CVE-2025-64329</a>  </li>
<li>operator-framework/operator-sdk: SDK for building Kubernetes applications. Provides high level APIs, useful abstractions, and project scaffolding. &#45; GitHub, accessed November 28, 2025, <a href="https://github.com/operator-framework/operator-sdk">https://github.com/operator-framework/operator-sdk</a>  </li>
<li>Repo for the controller-runtime subproject of kubebuilder (sig-apimachinery) &#45; GitHub, accessed November 28, 2025, <a href="https://github.com/kubernetes-sigs/controller-runtime">https://github.com/kubernetes-sigs/controller-runtime</a>  </li>
<li>Metrics &#45; The Kubebuilder Book, accessed November 28, 2025, <a href="https://book.kubebuilder.io/reference/metrics.html">https://book.kubebuilder.io/reference/metrics.html?highlight=metr</a>  </li>
<li>Istio / Istio Roadmap for 2025-2026, accessed November 28, 2025, <a href="https://istio.io/latest/blog/2025/roadmap/">https://istio.io/latest/blog/2025/roadmap/</a>  </li>
<li>Cloud Native Computing Foundation Announces Knative&#8217;s Graduation | CNCF, accessed November 28, 2025, <a href="https://www.cncf.io/announcements/2025/10/08/cloud-native-computing-foundation-announces-knatives-graduation/">https://www.cncf.io/announcements/2025/10/08/cloud-native-computing-foundation-announces-knatives-graduation/</a>  </li>
<li>The 16 Best Infrastructure As Code (IaC) Tools In 2025 &#45; Apiiro, accessed November 28, 2025, <a href="https://apiiro.com/blog/best-iac-tools/">https://apiiro.com/blog/best-iac-tools/</a>  </li>
<li>Evolving OpenTelemetry&#8217;s Stabilization and Release Practices, accessed November 28, 2025, <a href="https://opentelemetry.io/blog/2025/stability-proposal-announcement/">https://opentelemetry.io/blog/2025/stability-proposal-announcement/</a>  </li>
<li>Go &#45; OpenTelemetry, accessed November 28, 2025, <a href="https://opentelemetry.io/docs/languages/go/">https://opentelemetry.io/docs/languages/go/</a>  </li>
<li>OpenTelemetry Go 2025 Goals, accessed November 28, 2025, <a href="https://opentelemetry.io/blog/2025/go-goals/">https://opentelemetry.io/blog/2025/go-goals/</a>  </li>
<li>Configuration &#45; OpenTelemetry, accessed November 28, 2025, <a href="https://opentelemetry.io/docs/collector/configuration/">https://opentelemetry.io/docs/collector/configuration/</a>  </li>
<li>Prometheus with Grafana: 5 Compelling Use Cases &#45; Tigera.io, accessed November 28, 2025, <a href="https://www.tigera.io/learn/guides/prometheus-monitoring/prometheus-grafana/">https://www.tigera.io/learn/guides/prometheus-monitoring/prometheus-grafana/</a>  </li>
<li>Top Prometheus Exporters in 2025 and How to Use Them Effectively &#45; GoCodeo, accessed November 28, 2025, <a href="https://www.gocodeo.com/post/top-prometheus-exporters-in-2025-and-how-to-use-them-effectively">https://www.gocodeo.com/post/top-prometheus-exporters-in-2025-and-how-to-use-them-effectively</a>  </li>
<li>Rust vs Go in 2025: Comparison of Performance, Complexity, and &#8230;, accessed November 28, 2025, <a href="https://evrone.com/blog/rustvsgo">https://evrone.com/blog/rustvsgo</a>  </li>
<li>Rust vs Go: Which one to choose in 2025 | The RustRover Blog, accessed November 28, 2025, <a href="https://blog.jetbrains.com/rust/2025/06/12/rust-vs-go/">https://blog.jetbrains.com/rust/2025/06/12/rust-vs-go/</a>  </li>
<li>Your Complete Guide to KubeCon &#43; CloudNativeCon North America 2025 | CNCF, accessed November 28, 2025, <a href="https://www.cncf.io/blog/2025/11/06/your-complete-guide-to-kubecon-cloudnativecon-north-america-2025/">https://www.cncf.io/blog/2025/11/06/your-complete-guide-to-kubecon-cloudnativecon-north-america-2025/</a></li>
</ol>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/12/03/go-2025-cloud-native-observability-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>只要 Title 带“工程师”，你就必须写代码：Uber 杰出工程师的硬核建议</title>
		<link>https://tonybai.com/2025/12/02/advices-from-uber-distinguished-engineer/</link>
		<comments>https://tonybai.com/2025/12/02/advices-from-uber-distinguished-engineer/#comments</comments>
		<pubDate>Tue, 02 Dec 2025 00:21:17 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[Curiosity]]></category>
		<category><![CDATA[DistinguishedEngineer]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[HandsOn]]></category>
		<category><![CDATA[Inception]]></category>
		<category><![CDATA[JoakimRecht]]></category>
		<category><![CDATA[odin]]></category>
		<category><![CDATA[PromotionDrivenDevelopment]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[Schemaless]]></category>
		<category><![CDATA[SoftwareEngineer]]></category>
		<category><![CDATA[uber]]></category>
		<category><![CDATA[WhiteboardArchitect]]></category>
		<category><![CDATA[亲力亲为]]></category>
		<category><![CDATA[写代码]]></category>
		<category><![CDATA[办公室政治]]></category>
		<category><![CDATA[基础设施]]></category>
		<category><![CDATA[好奇心]]></category>
		<category><![CDATA[容器化]]></category>
		<category><![CDATA[影响力]]></category>
		<category><![CDATA[晋升]]></category>
		<category><![CDATA[杰出工程师]]></category>
		<category><![CDATA[白板架构师]]></category>
		<category><![CDATA[职业成长]]></category>
		<category><![CDATA[脏活累活]]></category>
		<category><![CDATA[自动化]]></category>
		<category><![CDATA[软件工程师]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5464</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/12/02/advices-from-uber-distinguished-engineer 大家好，我是Tony Bai。 “如果你不写代码，你就不是一个软件工程师。” 这句话出自前 Uber 杰出工程师 (Distinguished Engineer) Joakim Recht 之口。在他看来，无论你的级别有多高，哪怕到了 Principal 或 Distinguished 级别，只要头衔里还有“工程师”这三个字，你就必须保持手感，持续编码。 近日，Joakim 接受了一次深度访谈，回顾了他在 Uber 从一名普通高级工程师一路成长为杰出工程师的完整历程。他不但分享了那个让他获得关键晋升的“史诗级”项目，还坦诚地谈论了办公室政治、不公平的晋升制度、以及他对“影响力”的独特理解。 这既是一个成功者的故事，也是一份关于如何在大型科技公司中保持清醒、持续成长并最终实现自我价值的深度指南。 晋升的秘密 —— 影响力不是“求”来的，是“做”出来的 Joakim 的晋升之路，始于一个朴素的愿望：懒惰。 起初，他只是负责管理一个名为 Schemaless 的数据存储系统。每次由于硬件故障需要替换主节点时，都需要手动操作 Puppet，繁琐且易错。 “我真的不喜欢重复做同样的事情。” Joakim 说。于是，他和团队开始尝试将数据库容器化，通过 Docker 来自动化管理这些操作。 这个最初只为了解决“自己团队痛点”的小项目，最终演变成了一个庞大的内部平台（Odin），接管了 Uber 几乎所有的有状态负载。在他离开时，这个平台管理着 12 万台物理服务器和 50 万个数据库实例，而核心维护团队只有 20 人。 给我们的启示： Joakim 并没有在一开始就画一个“我要掌管全公司数据库”的大饼。他的影响力扩张遵循了一个自然的路径： 解决自己的痛点：自动化自己团队的重复劳动。 解决邻居的痛点：把工具推广给旁边的团队。 解决公司的痛点：逐步扩展到更广泛的组织，最终成为全公司的基础设施。 真正的晋升，是对你影响力范围 的自然确认，而不是因为你填写了一份完美的晋升文档。 关于“写代码”的执念 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/advices-from-uber-distinguished-engineer-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/12/02/advices-from-uber-distinguished-engineer">本文永久链接</a> &#8211; https://tonybai.com/2025/12/02/advices-from-uber-distinguished-engineer</p>
<p>大家好，我是Tony Bai。</p>
<blockquote>
<p>“如果你不写代码，你就不是一个软件工程师。”</p>
</blockquote>
<p>这句话出自前 Uber 杰出工程师 (Distinguished Engineer) Joakim Recht 之口。在他看来，无论你的级别有多高，哪怕到了 Principal 或 Distinguished 级别，只要头衔里还有“工程师”这三个字，你就必须保持手感，持续编码。</p>
<p>近日，<a href="https://www.youtube.com/watch?v=feNh_ubBAMI">Joakim 接受了一次深度访谈</a>，回顾了他在 Uber 从一名普通高级工程师一路成长为杰出工程师的完整历程。他不但分享了那个让他获得关键晋升的“史诗级”项目，还坦诚地谈论了办公室政治、不公平的晋升制度、以及他对“影响力”的独特理解。</p>
<p>这既是一个成功者的故事，也是一份关于如何在大型科技公司中保持清醒、持续成长并最终实现自我价值的深度指南。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>晋升的秘密 —— 影响力不是“求”来的，是“做”出来的</h2>
<p>Joakim 的晋升之路，始于一个朴素的愿望：<strong>懒惰</strong>。</p>
<p>起初，他只是负责管理一个名为 Schemaless 的数据存储系统。每次由于硬件故障需要替换主节点时，都需要手动操作 Puppet，繁琐且易错。</p>
<p>“我真的不喜欢重复做同样的事情。” Joakim 说。于是，他和团队开始尝试将数据库容器化，通过 Docker 来自动化管理这些操作。</p>
<p>这个最初只为了解决“自己团队痛点”的小项目，最终演变成了一个庞大的内部平台（Odin），接管了 Uber 几乎所有的有状态负载。在他离开时，这个平台管理着 <strong>12 万台物理服务器</strong>和 <strong>50 万个数据库实例</strong>，而核心维护团队只有 20 人。</p>
<p><strong>给我们的启示</strong>：</p>
<p>Joakim 并没有在一开始就画一个“我要掌管全公司数据库”的大饼。他的影响力扩张遵循了一个自然的路径：</p>
<ol>
<li><strong>解决自己的痛点</strong>：自动化自己团队的重复劳动。</li>
<li><strong>解决邻居的痛点</strong>：把工具推广给旁边的团队。</li>
<li><strong>解决公司的痛点</strong>：逐步扩展到更广泛的组织，最终成为全公司的基础设施。</li>
</ol>
<p>真正的晋升，是对你<strong>影响力范围</strong> 的自然确认，而不是因为你填写了一份完美的晋升文档。</p>
<h2>关于“写代码”的执念 —— 拒绝成为“白板架构师”</h2>
<p>在许多大厂，晋升往往意味着“远离代码”，转向文档、会议和 PPT。但 Joakim 对此坚决说 <strong>不</strong>。</p>
<blockquote>
<p>“如果你停止写代码，你就会失去对系统的感知。你或许能画出高层的架构图，但那些设计往往会脱离现实。当你把设计扔给别人实现时，他们会想：‘这是哪个不懂装懂的家伙画的？’”</p>
</blockquote>
<p>他认为，保持 Hands-on (亲力亲为) 有两个巨大的好处：</p>
<ol>
<li><strong>保持信任</strong>：如果团队成员知道你不仅懂业务，还能写出高质量的代码，甚至愿意干“脏活累活”，他们会更愿意听取你的建议。</li>
<li><strong>保持敏锐</strong>：只有在代码一线，你才能第一时间感知到系统的腐坏和痛点，从而做出正确的架构决策。</li>
</ol>
<p>对于那些只想做“高大上”设计，把“简单工作”丢给下属的高级工程师，Joakim 建议反其道而行之：<strong>把困难的、有趣的工作委派给团队成员，让他们成长；你自己去承担那些枯燥的、修修补补的“脏活”。</strong> 这不仅能赢得尊重，还能让你从微小处发现系统性的改进空间。</p>
<h2>面对“不公平”的晋升 —— 心态决定一切</h2>
<p>Joakim 并不避讳谈论大公司的阴暗面。他回忆起早期的 Uber 晋升委员会，那就是一场“没有任何数据支持的、纯粹靠经理口才”的辩论赛。</p>
<blockquote>
<p>“这完全取决于你的经理有多擅长推销你。如果你有一个糟糕的经理，你就完蛋了。”</p>
</blockquote>
<p>即使在制度完善后，绝对的公平依然不存在。项目被砍、依赖方掉链子、甚至仅仅是因为团队整体表现不佳，都可能成为你晋升路上的绊脚石。</p>
<p><strong>他的建议：</strong></p>
<ul>
<li>不要成为“晋升驱动开发” (Promotion Driven Development) 的奴隶。专注于<strong>提供价值</strong>。</li>
<li>“只要你持续地解决问题、消除浪费、帮助他人，晋升通常会随之而来。如果你整天焦虑于‘如何找到一个能让我晋升的项目’，你反而可能动作变形，最终一无所获。”</li>
</ul>
<h2>影响力的最高境界 —— “盗梦空间”</h2>
<p>当被问及如何有效地影响他人时，Joakim 分享了一个类似《盗梦空间》的技巧：<strong>最好的结果，是让对方觉得那是他们自己的主意。</strong></p>
<p>不要试图用权威压人，也不要指望每个人都能立刻被你的逻辑说服。有时候，你只需要在对话中种下一颗种子。</p>
<blockquote>
<p>“也许几个月后，你会听到他们在讨论你的想法，甚至充满激情地捍卫它，仿佛那是他们自己想出来的。那一刻，你就赢了。不要去争夺功劳，要享受这种‘想法生根发芽’的成就感。”</p>
</blockquote>
<h2>小结：给年轻自己的建议</h2>
<p>在访谈的最后，Joakim 给年轻的自己（以及所有年轻工程师）提了一条建议：<strong>保持好奇，不要被吓倒。</strong></p>
<p>“那些看起来很厉害的人，其实也是普通人。他们可能只是比你多了一些经验，或者更擅长包装自己。不要因为觉得某件事‘太难’或‘太高端’就不敢去尝试。计算机科学不是火箭科学（虽然有些也是），它只是计算机而已。保持好奇心，去尝试，去犯错，这是成长的唯一捷径。”</p>
<p>资料链接：https://www.youtube.com/watch?v=feNh_ubBAMI</p>
<hr />
<p><strong>你的看法是什么？</strong></p>
<p>Joakim 的观点非常犀利，尤其是关于“级别越高越要写代码”的论断。<strong>结合你所在的团队或公司，你认同这个观点吗？在你身边，那些高T/P的架构师们，还在坚持写代码吗？如果不写，他们是如何保持对系统的敏锐度的？</strong></p>
<p>欢迎在评论区分享你的观察和思考！ 让我们一起探讨工程师的终极成长之路。</p>
<p>如果这篇文章给你带来了新的职业启发，别忘了点个【赞】和【在看】，并分享给身边正在为晋升或成长感到困惑的朋友！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/12/02/advices-from-uber-distinguished-engineer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>霸榜 GitHub 一周！Google 开源 ADK for Go，彻底终结 AI“炼丹”时代？</title>
		<link>https://tonybai.com/2025/11/24/google-adk-go-in-action/</link>
		<comments>https://tonybai.com/2025/11/24/google-adk-go-in-action/#comments</comments>
		<pubDate>Mon, 24 Nov 2025 00:15:27 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[ADK]]></category>
		<category><![CDATA[ADKforGo]]></category>
		<category><![CDATA[Agent]]></category>
		<category><![CDATA[AgentDevelopmentKit]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[ClaudeCode]]></category>
		<category><![CDATA[CodeFirst]]></category>
		<category><![CDATA[Codereview]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[Gin]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[gotest]]></category>
		<category><![CDATA[Go代码]]></category>
		<category><![CDATA[gRPC]]></category>
		<category><![CDATA[k8s]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[Mock]]></category>
		<category><![CDATA[Prompt]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[TonyBai]]></category>
		<category><![CDATA[workflowagents]]></category>
		<category><![CDATA[二进制文件]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[付费微专栏]]></category>
		<category><![CDATA[代码优先]]></category>
		<category><![CDATA[公众号]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[单元测试]]></category>
		<category><![CDATA[可测试]]></category>
		<category><![CDATA[可维护]]></category>
		<category><![CDATA[可部署]]></category>
		<category><![CDATA[咖啡]]></category>
		<category><![CDATA[学伴]]></category>
		<category><![CDATA[工作流指挥家]]></category>
		<category><![CDATA[工作流自动化]]></category>
		<category><![CDATA[工程]]></category>
		<category><![CDATA[工程纪律]]></category>
		<category><![CDATA[并发]]></category>
		<category><![CDATA[开发范式]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[微服务]]></category>
		<category><![CDATA[思维升级]]></category>
		<category><![CDATA[技能跃迁]]></category>
		<category><![CDATA[探索者]]></category>
		<category><![CDATA[智能体]]></category>
		<category><![CDATA[构建方法论]]></category>
		<category><![CDATA[消息]]></category>
		<category><![CDATA[深度长文]]></category>
		<category><![CDATA[炼丹时代]]></category>
		<category><![CDATA[版本管理]]></category>
		<category><![CDATA[生存指南]]></category>
		<category><![CDATA[短期记忆]]></category>
		<category><![CDATA[航海日志]]></category>
		<category><![CDATA[评估体系]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[长期记忆]]></category>
		<category><![CDATA[霸榜]]></category>
		<category><![CDATA[静态编译]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5431</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/11/24/google-adk-go-in-action 大家好，我是Tony Bai。 上周，我花了一个下午，仅仅是为了让一个Python写的Agent能稳定地调用我Go服务里的一个简单函数。在那一刻，看着屏幕上纠缠的gRPC、Python虚拟环境和混乱的日志，我脑海里只有一个念头：这不对劲，这绝对不是软件工程该有的样子！ 显然，不仅仅是我一个人在为此焦虑。 就在最近，一个名为 google/adk-go 的项目悄然开源，并迅速霸榜 GitHub Go 语言趋势榜长达一周之久！ 全球的 Gopher 似乎都在用脚投票，表达着同一个渴望：我们受够了“炼丹”，我们要回归工程！ 过去的一年，AI 的浪潮席卷了整个技术圈。我们 Gopher，作为构建云原生世界的中坚力量，看着 Python 社区在 AI 领域“杀”得热火朝天，心中或许都有一个共同的疑问： “这场 AI 的盛宴，我们 Gopher 的主菜在哪儿？” 我们习惯了用 goroutine 优雅地处理并发，用 channel 安全地传递消息，用静态编译的单个二进制文件征服任何服务器。我们是天生的“工程师”，我们信奉的是可测试、可维护、可部署的软件工程哲学。 然而，当我们尝试踏入 AI Agent 的世界时，却常常感觉自己像一个闯入了“炼丹房”的“机械师”。面对那些需要反复“吟唱咒语”（调 Prompt）、结果飘忽不定的“丹炉”（模型），我们不禁会问： 我的 Agent 行为不稳定，怎么写单元测试？ Prompt 稍微一改，整个“丹方”都可能失效，版本管理怎么做？ 我如何将这个“充满魔法”的 Python 脚本，与我现有的 Go 微服务体系优雅地集成，而不是变成一坨无法维护的“耦合怪”？ 这些问题，不是因为我们不懂 AI，而是因为我们太懂工程。我们厌倦了“炼丹”式的不确定性，我们渴望一种能将 AI 的强大能力，用严谨的工程纪律约束起来的解决方案。 现在，Google 亲自下场，为我们递来了“工程图纸”。 Google [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/google-adk-go-in-action-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/11/24/google-adk-go-in-action">本文永久链接</a> &#8211; https://tonybai.com/2025/11/24/google-adk-go-in-action</p>
<p>大家好，我是Tony Bai。</p>
<p>上周，我花了一个下午，仅仅是为了让一个Python写的Agent能稳定地调用我Go服务里的一个简单函数。在那一刻，看着屏幕上纠缠的gRPC、Python虚拟环境和混乱的日志，我脑海里只有一个念头：这不对劲，这绝对不是软件工程该有的样子！</p>
<p>显然，不仅仅是我一个人在为此焦虑。</p>
<p><strong>就在最近，一个名为 google/adk-go 的项目悄然开源，并迅速霸榜 GitHub Go 语言趋势榜长达一周之久！</strong> 全球的 Gopher 似乎都在用脚投票，表达着同一个渴望：我们受够了“炼丹”，我们要回归工程！</p>
<p>过去的一年，AI 的浪潮席卷了整个技术圈。我们 Gopher，作为构建云原生世界的中坚力量，看着 Python 社区在 AI 领域“杀”得热火朝天，心中或许都有一个共同的疑问：</p>
<p><strong>“这场 AI 的盛宴，我们 Gopher 的主菜在哪儿？”</strong></p>
<p>我们习惯了用 goroutine 优雅地处理并发，用 channel 安全地传递消息，用静态编译的单个二进制文件征服任何服务器。我们是天生的<strong>“工程师”</strong>，我们信奉的是<strong>可测试、可维护、可部署</strong>的软件工程哲学。</p>
<p>然而，当我们尝试踏入 AI Agent 的世界时，却常常感觉自己像一个闯入了“炼丹房”的“机械师”。面对那些需要反复“吟唱咒语”（调 Prompt）、结果飘忽不定的“丹炉”（模型），我们不禁会问：</p>
<ul>
<li><strong>我的 Agent 行为不稳定，怎么写单元测试？</strong></li>
<li><strong>Prompt 稍微一改，整个“丹方”都可能失效，版本管理怎么做？</strong></li>
<li><strong>我如何将这个“充满魔法”的 Python 脚本，与我现有的 Go 微服务体系优雅地集成，而不是变成一坨无法维护的“耦合怪”？</strong></li>
</ul>
<p>这些问题，不是因为我们不懂 AI，而是因为我们太懂<strong>工程</strong>。我们厌倦了“炼丹”式的不确定性，我们渴望一种能将 AI 的强大能力，<strong>用严谨的工程纪律约束起来</strong>的解决方案。</p>
<p><strong>现在，Google 亲自下场，为我们递来了“工程图纸”。</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>Google ADK for Go：写给工程师的 AI Agent 开发框架</h2>
<p>这个霸榜的项目，全称是 <strong><a href="https://github.com/google/adk-go">Agent Development Kit (ADK) for Go</a></strong>。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/google-adk-go-in-action-2.png" alt="" /></p>
<p>这不是又一个“玩具”或“研究性”框架。从它的设计理念中，我看到了一个清晰而坚定的信号——<strong>AI Agent 开发，正在从“炼丹”式的“艺术创作”，全面进入“工程化”的“工业生产”时代。</strong></p>
<p>而 ADK for Go 的核心哲学，与我们 Gopher 的信仰不谋而合，那就是——<strong>代码优先 (Code-First)</strong>。</p>
<ul>
<li><strong>你的 Agent，就是你的 Go 代码：</strong> 不再有晦涩的 YAML，不再有天书般的“链”，Agent 的所有逻辑、决策、工作流，都由你亲手编写的、地地道道的 Go 代码来定义。</li>
<li><strong>天生的可测试性：</strong> 你的 Agent 就是一个实现了 agent.Agent 接口的 struct。这意味着什么？你可以像测试任何 Go 代码一样，go test 走起！Mock 依赖、断言行为，所有你熟悉的工程实践，全部回归。</li>
<li><strong>Git 即版本管理：</strong> Agent 的每一次进化，都是一次清晰的 git commit。Code Review、版本回滚，一切都尽在掌握。</li>
<li><strong>云原生无缝集成：</strong> 它就是一个标准的 Go 模块，可以被无缝地集成到你的 Gin/gRPC 服务中，打包成一个极小的 Docker 镜像，部署到任何 K8s 集群。</li>
</ul>
<p><strong>这就是为什么它能霸榜 GitHub 的原因——它不是在教你如何更好地“调优 Prompt”，而是在教你如何用坚实的工程代码，去彻底终结那个不可控的“炼丹”时代。</strong></p>
<p>Google的adk-go，就是那座连接 Gopher 工程世界与 AI Agent 智能世界的桥梁。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/google-adk-go-in-action-3.png" alt="" /></p>
<h2>和我一起，从零开始“造”一个真正的 AI Agent</h2>
<p>坦白说，ADK for Go 刚刚推出，市面上的教程几乎一片空白。文档虽有，但如何将其与真实的工程场景结合，如何理解其设计背后的权衡，如何避开那些必将遇到的“坑”——这些都需要有人去<strong>探索</strong>，去<strong>趟路</strong>。</p>
<p><strong>所以，我决定做这件事。</strong></p>
<p>我将以一个<strong>“学伴”</strong>和<strong>“探索者”</strong>的身份，推出我的全新付费微专栏：</p>
<p><strong>《Google ADK 实战：用 Go 构建可靠的AI Agent》</strong></p>
<p>在这个专栏里，我不会扮演一个无所不知的专家。相反，我会将我从零开始学习、实践、踩坑、顿悟的全过程，毫无保留地分享给你。</p>
<p>我们将一起，手把手地、<strong>从一个空 main.go 文件开始</strong>，完成一次令人兴奋的创造之旅：</p>
<ul>
<li>
<p><strong>第 1-2 讲：思维转变与灵魂注入</strong><br />
我们将彻底理解“代码优先”的哲学，拆解adk-go，了解其中的概念、架构和核心组件，并亲手定义出第一个实现了 agent.Agent 核心接口的智能体。</p>
</li>
<li>
<p><strong>第 3 讲：为 Agent 插上“手臂”：</strong> 让你的Agent能调用任何Go函数，像操作自己的手脚一样自如<br />
我们将学会 ADK 的“魔法”函数 functiontool.New，将一个普通的 Go 函数，零成本地转化为 Agent 可用的工具。</p>
</li>
<li>
<p><strong>第 4 讲：赋予 Agent “双核记忆”</strong><br />
我们将深入 session（短期记忆）和 memory（长期记忆），让我们的 Agent 能够理解上下文，并记起与你的历史交互。</p>
</li>
<li>
<p><strong>第 5 讲：从“单兵”到“军团”：</strong> 构建一个懂分工、会协作的Agent团队，自动化完成复杂任务<br />
我们将学习 workflowagents，通过编排多个专家 Agent，构建一个强大的“代码生成-审查-重构”自动化流水线。</p>
</li>
<li>
<p><strong>第 6 讲：从“原型”到“产品”</strong><br />
我们将为 Agent 建立科学的<strong>评估体系</strong>，并最终将其打包成 Docker 镜像，部署到通用的 Kubernetes 环境中。</p>
</li>
</ul>
<p>学完这个专栏，你将收获的，不仅是一个能跑起来的酷炫 AI 项目，更是一套<strong>可复用的、工程化的 AI Agent 构建方法论</strong>，以及在 AI 新浪潮中，属于我们 Gopher 的那份自信和底气。</p>
<h2>加入这场 Gopher 的 AI 工程化之旅</h2>
<p>这个微专栏，是我为你，也为我自己准备的一份“AI 时代 Gopher 生存指南”。它凝聚了我对 Go 工程哲学的理解，和我对 AI Agent 未来的全部热情。</p>
<p>微专栏共 <strong>6 篇深度长文</strong>，每一篇都是我亲手实践、细节满满的 step-by-step “航海日志”。</p>
<p>我没有设定一个高昂的价格，而是希望与更多志同道合的 Gopher 一起探索。所以，订阅这份专栏，<strong>仅需你一杯咖啡的诚意</strong>。</p>
<p>花一杯咖啡的时间，你或许能得到片刻的清醒；而用同样的价格投入到这里，我希望能为你带来一次<strong>思维的升级</strong>和<strong>技能的跃迁</strong>。</p>
<p><strong>点击<a href="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyNzM0MDk0Mg==&amp;action=getalbum&amp;album_id=4266729696274251779#wechat_redirect">这里</a>，或扫描二维码，立即加入。</strong></p>
<p><strong>让我们一起，用代码，构建智能。</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<p><strong>P.S.</strong> 如果你对 AI Agent、Go 语言或者这个微专栏有任何问题，欢迎在评论区留言，我们一起交流探讨！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/11/24/google-adk-go-in-action/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>你的 Kubernetes 知识在“冰山”的第几层？—— 一份给 Gopher 的 K8s 进阶“航海图”</title>
		<link>https://tonybai.com/2025/11/17/explain-kubernetes/</link>
		<comments>https://tonybai.com/2025/11/17/explain-kubernetes/#comments</comments>
		<pubDate>Mon, 17 Nov 2025 13:24:18 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AdmissionControllers]]></category>
		<category><![CDATA[API服务器]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[client-go]]></category>
		<category><![CDATA[ClusterAutoscaler]]></category>
		<category><![CDATA[configmap]]></category>
		<category><![CDATA[controller-runtime]]></category>
		<category><![CDATA[CRD]]></category>
		<category><![CDATA[CRI-O]]></category>
		<category><![CDATA[DaemonSet]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[EndpointSlices]]></category>
		<category><![CDATA[GitOps]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[Go二进制文件]]></category>
		<category><![CDATA[Go库]]></category>
		<category><![CDATA[Go应用]]></category>
		<category><![CDATA[Go开发者]]></category>
		<category><![CDATA[Go源代码]]></category>
		<category><![CDATA[Go程序]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[helm]]></category>
		<category><![CDATA[hpa]]></category>
		<category><![CDATA[ImageScanning]]></category>
		<category><![CDATA[ingress]]></category>
		<category><![CDATA[InitContainers]]></category>
		<category><![CDATA[k8s]]></category>
		<category><![CDATA[K8s底层运行时]]></category>
		<category><![CDATA[kubectlrunnginx]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[KubernetesAPI]]></category>
		<category><![CDATA[MutatingWebhooks]]></category>
		<category><![CDATA[MyGoApp]]></category>
		<category><![CDATA[NetworkPolicy]]></category>
		<category><![CDATA[NodeHardening]]></category>
		<category><![CDATA[Operators]]></category>
		<category><![CDATA[PodDisruptionBudget]]></category>
		<category><![CDATA[pods]]></category>
		<category><![CDATA[PodSecurityAdmission]]></category>
		<category><![CDATA[PodSecurityPolicy]]></category>
		<category><![CDATA[RBAC]]></category>
		<category><![CDATA[ReplicaSet]]></category>
		<category><![CDATA[secret]]></category>
		<category><![CDATA[Self-managed]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[ServiceMesh]]></category>
		<category><![CDATA[SIGTERM]]></category>
		<category><![CDATA[StatefulSet]]></category>
		<category><![CDATA[Upgrades]]></category>
		<category><![CDATA[Volumes]]></category>
		<category><![CDATA[VPA]]></category>
		<category><![CDATA[Webhook服务]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[云原生工具]]></category>
		<category><![CDATA[云原生应用]]></category>
		<category><![CDATA[冰山]]></category>
		<category><![CDATA[分布式系统]]></category>
		<category><![CDATA[打包者]]></category>
		<category><![CDATA[机器人管理员]]></category>
		<category><![CDATA[杀手级应用]]></category>
		<category><![CDATA[系统工程师]]></category>
		<category><![CDATA[网络模型]]></category>
		<category><![CDATA[航海图]]></category>
		<category><![CDATA[进阶航海图]]></category>
		<category><![CDATA[部署者]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5397</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/11/17/explain-kubernetes 大家好，我是Tony Bai。 近日，一张关于 Kubernetes 知识体系的“冰山图”在开发者社区广为流传。它以一种戏谑而又无比真实的方式，描绘了从入门到精通 K8s 所需跨越的深邃鸿沟。 对于我们 Gopher 而言，这张图有着非凡的意义。因为 Kubernetes 这座宏伟的“冰山”，其根基、其骨架、其每一寸血肉，几乎都是用 Go 语言铸就的。因此，这张图不仅是一份 K8s 的学习地图，更是一份 Go 开发者在云原生时代，从“工具使用者”蜕变为“生态构建者”的进阶航海图。 今天，就让我们以 Go 的视角，一同潜入这座冰山的水下，探索每一层的奥秘。 第一层 &#38; 第二层 (水面之上)：云原生的“你好，世界” 关键词：Docker, kubectl run nginx, Pods, Deployment, ReplicaSet, Service, Ingress, HPA, ConfigMap, Secret 开发者状态：初出茅庐，意气风发 这是 K8s 的“海平面”，是每一位初学者最先看到的光景。你学会了用 Docker 打包你的 Go 应用，用 kubectl 启动一个 Pod，通过 Deployment 保证它的运行实例数，再用 Service 和 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/explain-kubernetes-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/11/17/explain-kubernetes">本文永久链接</a> &#8211; https://tonybai.com/2025/11/17/explain-kubernetes</p>
<p>大家好，我是Tony Bai。</p>
<p>近日，一张关于 Kubernetes 知识体系的“冰山图”在开发者社区广为流传。它以一种戏谑而又无比真实的方式，描绘了从入门到精通 K8s 所需跨越的深邃鸿沟。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/explain-kubernetes-2.png" alt="" /></p>
<p>对于我们 Gopher 而言，这张图有着非凡的意义。因为 Kubernetes 这座宏伟的“冰山”，其根基、其骨架、其每一寸血肉，几乎都是用 Go 语言铸就的。因此，这张图不仅是一份 K8s 的学习地图，更是一份 Go 开发者在云原生时代，从“工具使用者”蜕变为“生态构建者”的<strong>进阶航海图</strong>。</p>
<p>今天，就让我们以 Go 的视角，一同潜入这座冰山的水下，探索每一层的奥秘。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/go-testing-journey-qr.png" alt="" /></p>
<h2>第一层 &amp; 第二层 (水面之上)：云原生的“你好，世界”</h2>
<ul>
<li><strong>关键词</strong>：Docker, kubectl run nginx, Pods, Deployment, ReplicaSet, Service, Ingress, HPA, ConfigMap, Secret</li>
<li><strong>开发者状态</strong>：初出茅庐，意气风发</li>
</ul>
<p>这是 K8s 的“海平面”，是每一位初学者最先看到的光景。你学会了用 Docker 打包你的 Go 应用，用 kubectl 启动一个 Pod，通过 Deployment 保证它的运行实例数，再用 Service 和 Ingress 将其暴露给外部世界。</p>
<p><strong>对于 Gopher</strong>：在这个阶段，你是一位<strong>Go 应用的打包者和部署者</strong>。你编写的 main.go，是 K8s 世界里最终要运行的“货物”。你关心的是如何让你的 Go 二进制文件变得更小、启动更快，以及如何优雅地处理 SIGTERM 信号以实现平滑下线。</p>
<h2>第三层 (刚刚淹没)：自动化与运维的开端</h2>
<ul>
<li><strong>关键词</strong>：Helm, Cluster Autoscaler, GitOps, Volumes, Init Containers</li>
<li><strong>开发者状态</strong>：初尝苦涩，发量渐少</li>
</ul>
<p>当你不再满足于手动敲打 kubectl apply，便开始进入这片“浅水区”。你学会了用 <strong>Helm</strong>（一个 Go 编写的包管理器）来打包和管理复杂的应用发布；你开始实践 <strong>GitOps</strong>，将应用的期望状态存储在 Git 中；你开始为你的 Go 应用挂载 <strong>Volumes</strong>，处理持久化数据。</p>
<p><strong>对于 Gopher</strong>：你开始成为<strong>云原生工具的使用者</strong>。你不仅要写好应用本身，还要思考如何将其以一种可重复、自动化的方式，融入到更大的 CI/CD 流程中。</p>
<h2>第四层 &amp; 第五层 (深水区)：驾驭复杂性与状态</h2>
<ul>
<li><strong>关键词</strong>：StatefulSet, DaemonSet, VPA, Upgrades, PodDisruptionBudget, NetworkPolicy, Service Mesh</li>
<li><strong>开发者状态</strong>：饱经风霜，面容憔悴</li>
</ul>
<p>这里是真正的分水岭。当你需要部署一个有状态的 Go 应用（如数据库、消息队列）时，StatefulSet 成了你的必修课。你需要为集群中的每个节点部署一个 Go agent 时，DaemonSet 登场了。你开始关心应用的<strong>高可用性</strong>，学习 PodDisruptionBudget (PDB) 以确保在节点维护时，服务不会中断。</p>
<p><strong>对于 Gopher</strong>：你开始<strong>从“应用开发者”向“系统工程师”转变</strong>。你不再只关心自己的 Go 程序，而是开始思考它在整个分布式系统中的角色、它的邻居（如 Service Mesh Sidecar），以及它在混乱的网络环境中的生存之道。</p>
<p><em>(注：图中的 PodSecurityPolicy 是一个已废弃的 API，其功能已被更强大的 PodSecurityAdmission 所取代。这也是 K8s 演进复杂性的一个缩影。)</em></p>
<h2>第六层 (深渊)：成为“创世神”</h2>
<ul>
<li><strong>关键词</strong>：CRD, Operators, RBAC</li>
<li><strong>开发者状态</strong>：返璞归真，仙风道骨</li>
</ul>
<p>欢迎来到深渊！在这里，你不再满足于<strong>使用</strong> Kubernetes 的 API，你开始<strong>创造</strong>属于你自己的 API。</p>
<ul>
<li><strong>CRD (Custom Resource Definition)</strong>：允许你定义自己的 K8s 资源，比如 type MyGoApp struct {&#8230;}。</li>
<li><strong>Operator</strong>：这才是真正的核心。<strong>Operator 本身就是一个 Go 程序</strong>，它的职责是作为一个“机器人管理员”，持续地观察你定义的 CRD，并采取行动，使系统的真实状态与你声明的期望状态保持一致。</li>
</ul>
<p><strong>对于 Gopher</strong>：<strong>恭喜你，你已经从 K8s 的“使用者”变成了“构建者”！</strong> 你正在使用 client-go、controller-runtime 等 Go 库，编写能够扩展 K8s 内核的、真正意义上的云原生应用。这是 Go 在云原生领域<strong>最具创造力、也最具价值</strong>的工作。</p>
<h2>第七层 &amp; 第八层 (黑暗维度)：触及本质</h2>
<ul>
<li><strong>关键词</strong>：Node Hardening, Image Scanning, Admission Controllers, Mutating Webhooks, Self-managed, CRI-O, EndpointSlices</li>
<li><strong>开发者状态</strong>：超凡入圣，化身天神</li>
</ul>
<p>这是冰山的绝对底部，是普通应用开发者很少触及的领域。在这里，你思考的是整个集群的安全（节点加固、镜像扫描）、API 服务器的准入控制（<strong>Admission Controllers，这通常也是用 Go 编写的 Webhook 服务</strong>），甚至是 K8s 的底层运行时（CRI-O）和网络模型的实现细节。</p>
<p><strong>对于 Gopher</strong>：你已经不再满足于扩展 K8s，你开始深入其内核，甚至从零开始构建一个“自管理”(Self-managed) 的 K8s 集群。你正在阅读和理解 Kubernetes 自身的 Go 源代码，成为了这个庞大生态系统中最顶尖的那一小撮人。</p>
<h2>小结：一条 Go 开发者的英雄之旅</h2>
<p>这张“冰山图”，清晰地为我们 Gopher 描绘了一条从“应用开发”到“基础设施掌控”的英雄之旅。它告诉我们，Kubernetes 不仅仅是一个部署平台，它更是 Go 语言迄今为止最伟大的“杀手级应用”。</p>
<p>无论你现在身处冰山的哪一层，都无需焦虑。重要的是，认识到这座冰山的广阔，并意识到作为一名 Gopher，你手中已经握有探索每一层深度的“金钥匙”。从 main.go 到 Operator，Go 语言为你提供了贯穿始终的、最强大的工具。</p>
<p>那么，你的下一站，是冰山的哪一层呢？</p>
<p>资料链接：https://www.reddit.com/r/kubernetes/comments/1otc548/explain_kubernetes/</p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/11/17/explain-kubernetes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go 的 16 年：一门为持久而生的编程语言</title>
		<link>https://tonybai.com/2025/11/12/16-years-of-go-a-programming-language-built-to-last/</link>
		<comments>https://tonybai.com/2025/11/12/16-years-of-go-a-programming-language-built-to-last/#comments</comments>
		<pubDate>Wed, 12 Nov 2025 00:25:02 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AI基础设施]]></category>
		<category><![CDATA[AI服务]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[ArdanLabs]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[DWARF5]]></category>
		<category><![CDATA[encoding/json/v2]]></category>
		<category><![CDATA[FlightRecorder]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[go1.0]]></category>
		<category><![CDATA[go1.18]]></category>
		<category><![CDATA[go1.25]]></category>
		<category><![CDATA[godoc]]></category>
		<category><![CDATA[gofmt]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GOMAXPROCS]]></category>
		<category><![CDATA[gomod]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[goroutine]]></category>
		<category><![CDATA[gotest]]></category>
		<category><![CDATA[goversion]]></category>
		<category><![CDATA[govet]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[GreenTeaGC]]></category>
		<category><![CDATA[ignore指令]]></category>
		<category><![CDATA[KenThompson]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[macOS12]]></category>
		<category><![CDATA[prometheus]]></category>
		<category><![CDATA[reddit]]></category>
		<category><![CDATA[RobertGriesemer]]></category>
		<category><![CDATA[RobPike]]></category>
		<category><![CDATA[terraform]]></category>
		<category><![CDATA[testing/synctest]]></category>
		<category><![CDATA[Web服务器]]></category>
		<category><![CDATA[WindowsARM]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[停顿时间]]></category>
		<category><![CDATA[克制]]></category>
		<category><![CDATA[分布式系统]]></category>
		<category><![CDATA[创新]]></category>
		<category><![CDATA[可观测性]]></category>
		<category><![CDATA[可靠]]></category>
		<category><![CDATA[后端系统]]></category>
		<category><![CDATA[向后兼容]]></category>
		<category><![CDATA[垃圾回收器]]></category>
		<category><![CDATA[安全性]]></category>
		<category><![CDATA[实用性]]></category>
		<category><![CDATA[容器感知]]></category>
		<category><![CDATA[工具链]]></category>
		<category><![CDATA[并发]]></category>
		<category><![CDATA[微服务]]></category>
		<category><![CDATA[快速]]></category>
		<category><![CDATA[快速编译]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[性能分析]]></category>
		<category><![CDATA[持久]]></category>
		<category><![CDATA[数据流]]></category>
		<category><![CDATA[标准库]]></category>
		<category><![CDATA[核心类型]]></category>
		<category><![CDATA[泛型]]></category>
		<category><![CDATA[清晰]]></category>
		<category><![CDATA[稳定性]]></category>
		<category><![CDATA[空指针]]></category>
		<category><![CDATA[简洁]]></category>
		<category><![CDATA[简洁性]]></category>
		<category><![CDATA[类型推断]]></category>
		<category><![CDATA[编程语言]]></category>
		<category><![CDATA[编译器]]></category>
		<category><![CDATA[设计哲学]]></category>
		<category><![CDATA[调试信息]]></category>
		<category><![CDATA[边缘计算]]></category>
		<category><![CDATA[运行时]]></category>
		<category><![CDATA[追踪]]></category>
		<category><![CDATA[遥测]]></category>
		<category><![CDATA[里程碑]]></category>
		<category><![CDATA[链接器]]></category>
		<category><![CDATA[长远思考]]></category>
		<category><![CDATA[静态类型]]></category>
		<category><![CDATA[高性能]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5380</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/11/12/16-years-of-go-a-programming-language-built-to-last 大家好，我是Tony Bai。 每年的十一月，对于全球的 Gopher 而言，都是一个值得纪念的特殊时刻。今年，我们迎来了 Go 语言公开发布的第 16 个年头。 在众多的庆祝文章中，来自 Go 社区的知名组织 Ardan Labs 发布的这篇《Go 的 16 年：一门为持久而生的编程语言》，以其深邃的洞察力和饱满的情感，深深地打动了我们。 这篇文章不仅仅是对 Go 历史里程碑的简单罗列，更是一次对 Go 设计哲学——克制、清晰与长远思考——的深刻致敬。文章精准地捕捉了 Go 从解决 Google 内部的工程困境，到成为现代云原生基石的宏大叙事。我们相信，无论对于已经与 Go 同行多年的资深开发者，还是刚刚踏上 Gopher 之旅的新人，这篇文章都能带来启发与共鸣。 为此，我特将其全文翻译为中文，希望能与中文 Go 社区的各位一同分享这份喜悦与思考。以下是正文： 每年的十一月，Go 社区都会为我们这个时代最具悄然变革力量的编程语言之一，庆祝又一个里程碑。 诞生于 Google 并于 2009 年向世界发布的 Go，旨在解决大规模软件构建、庞大代码库、分布式系统以及跨大洲团队协作的复杂性。十六年后的今天，Go 诞生之初秉持的原则——简洁、快速和可靠——依然指导着它的发展。 正如 Go 团队在去年的周年纪念博文中所写：“Go 是为 2007 年的软件工程问题而构建的，但它仍在解决 2024 年的挑战，以及那些尚未到来的挑战。” 起源故事 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/16-years-of-go-a-programming-language-built-to-last-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/11/12/16-years-of-go-a-programming-language-built-to-last">本文永久链接</a> &#8211; https://tonybai.com/2025/11/12/16-years-of-go-a-programming-language-built-to-last</p>
<p>大家好，我是Tony Bai。</p>
<p>每年的十一月，对于全球的 Gopher 而言，都是一个值得纪念的特殊时刻。今年，我们迎来了 Go 语言公开发布的第 16 个年头。</p>
<p>在众多的庆祝文章中，来自 Go 社区的知名组织 Ardan Labs 发布的这篇《<a href="https://www.ardanlabs.com/news/2025/16-years-of-go-a-programming-language-built-to-last">Go 的 16 年：一门为持久而生的编程语言</a>》，以其深邃的洞察力和饱满的情感，深深地打动了我们。</p>
<p>这篇文章不仅仅是对 Go 历史里程碑的简单罗列，更是一次对 Go 设计哲学——克制、清晰与长远思考——的深刻致敬。文章精准地捕捉了 Go 从解决 Google 内部的工程困境，到成为现代云原生基石的宏大叙事。我们相信，无论对于已经与 Go 同行多年的资深开发者，还是刚刚踏上 Gopher 之旅的新人，这篇文章都能带来启发与共鸣。</p>
<p>为此，我特将其全文翻译为中文，希望能与中文 Go 社区的各位一同分享这份喜悦与思考。以下是正文：</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/the-ultimate-guide-to-go-module-qr.png" alt="" /></p>
<hr />
<p>每年的十一月，Go 社区都会为我们这个时代最具悄然变革力量的编程语言之一，庆祝又一个里程碑。</p>
<p>诞生于 Google 并于 <strong>2009</strong> 年向世界发布的 Go，旨在解决大规模软件构建、庞大代码库、分布式系统以及跨大洲团队协作的复杂性。十六年后的今天，Go 诞生之初秉持的原则——<strong>简洁、快速和可靠</strong>——依然指导着它的发展。</p>
<p>正如 <a href="https://tonybai.com/2024/11/12/go-turns-15">Go 团队在去年的周年纪念博文</a>中所写：“Go 是为 2007 年的软件工程问题而构建的，但它仍在解决 2024 年的挑战，以及那些尚未到来的挑战。”</p>
<h2>起源故事</h2>
<p>这门语言源于 Google 三位工程师——<strong>Robert Griesemer, Rob Pike, 和 Ken Thompson</strong>——的挫败感，他们想要一门像 C 一样快、像 Python 一样高效、并且能满足 Google 基础设施规模化需求的语言。</p>
<p>他们并不想彻底革新编程，他们只是想让编程再次变得令人愉悦。</p>
<p>正如Rob Pike曾经说过的那样，“Go 是一次关于我们能去除什么的实验。”他们去除的过度复杂性、无休止的编译时间和混乱的依赖关系，反而成为了 Go 最大的优势。</p>
<h2>Go 编程语言为何能迅速走红</h2>
<p>Go 不仅仅是又一门新语言；它是对<strong>过度工程化的一次宣言</strong>。其设计目标使其脱颖而出：</p>
<ul>
<li><strong>快速编译</strong>：代码在数秒内完成构建，而非数分钟。</li>
<li><strong>简洁性</strong>：极简的特性集，强调清晰与可读性。</li>
<li><strong>并发</strong>：轻量级的 goroutine，使并发编程变得实用。</li>
<li><strong>静态类型 + 安全性</strong>：在不牺牲开发速度的前提下，保证类型安全。</li>
<li><strong>一流的工具链</strong>：go fmt、go test、go mod 及其他工具，塑造了 Go 的工匠精神文化。</li>
</ul>
<p>这些价值观深深地触动了那些厌倦了语言功能蔓延的工程师们，也触动了那些需要稳定、可维护系统的公司。</p>
<h2>现实世界中的 Go</h2>
<p>多年来，Go 已悄然成为现代Web的支柱。它驱动着 <strong>Docker、Kubernetes、Terraform 和 Prometheus</strong>——当今云原生生态系统的根基。</p>
<p>在 Google 内部，它在后端系统中每秒处理数十亿次请求。在 Google 之外，它已成为初创公司构建分布式系统和企业级工具的首选，这些场景都要求在没有摩擦的情况下获得高性能。</p>
<blockquote>
<p>“Go 诞生于 14 年前，至今它仍是唯一一门让并发感觉如此简单的语言。”</p>
</blockquote>
<p>这种观点体现了 Go 在开发者领域中的独特地位：它既足够古老，经受住了考验，又足够现代，能够不断演进发展。</p>
<h2>值得庆祝的里程碑</h2>
<p>Go 的时间线上，点缀着一些关键时刻，展示了这门语言是如何有意识地演进的：</p>
<ul>
<li><strong>2009年</strong>：Google 正式公开发布 Go语言。</li>
<li><strong>2012年</strong>：Go 1.0 发布，并作出了向后兼容的承诺。</li>
<li><strong>2015–2018年</strong>：Go 成为容器化工具和微服务的标准。</li>
<li><strong>2022年</strong>：泛型在 Go 1.18 中到来——一个期待已久的里程碑。</li>
<li><strong>2024年</strong>：Go 位列全球最常用的十大语言之一，并在 AI 服务和边缘计算领域的采用率迅速增长。</li>
</ul>
<p>正是这种稳定性，加上审慎的创新，让 Go 得以经久不衰。当其他语言追逐潮流时，Go 始终立足于实用性。</p>
<h2>是什么让 Go 与众不同</h2>
<p>与许多在每个新版本中不断膨胀的现代语言不同，Go 的演进一直很保守，而这种克制最终得到了回报。</p>
<p>Go 团队保持了一种罕见的、对向后兼容的承诺。十年前编写的代码，今天依然可以编译和运行。对于那些需要跨越数年甚至数十年维护生产系统的组织来说，这种信任是无价的。</p>
<p>Go 的简洁性也促进了团队协作。开发者可以快速上手代码库并投入工作。没有无休止的语法或模式争论，只有简洁、直接且高效的代码。</p>
<p>这种清晰性塑造了一个重视协作而非“炫技”的社区。</p>
<h2>社区的经验教训</h2>
<p>在一份以前的 <a href="https://www.reddit.com/r/golang/comments/17rx47o/go_was_announced_exactly_14_years_ago_happy/">Reddit 周年纪念帖子</a> 中，开发者们回顾了 Go 是如何改变他们职业生涯的：</p>
<blockquote>
<p>“Go 让我重新爱上了编程。”</p>
<p>“它不花哨，但它能搞定事情，这就是我爱它的地方。”</p>
</blockquote>
<p>这些故事体现了 Go 的不朽精神；与其说是炒作，不如说是把工作做好。</p>
<h2>下一章</h2>
<p>Go 的下一个十年，将不仅仅是关于 Web 服务器和 API。其生态系统正在扩展到<strong>AI 基础设施、数据流</strong>和<strong>边缘计算</strong>等领域，在这些地方，性能、并发和简洁性至关重要。</p>
<p>根据 Go 团队的 15 周年博文，当前的工作重点是：</p>
<ul>
<li>利用现代 CPU 架构，优化运行时性能。</li>
<li>改进生产系统中的遥测、可观测性和性能分析。</li>
<li>确保 Go 能够随着下一代硬件的发展而持续扩展。</li>
</ul>
<p>对于押注 Go 的开发者和组织来说，这意味着一件事：这门语言没有放慢脚步，它正在升级。</p>
<h2>Go的2025年：稳步求精，基础更牢固</h2>
<p>发布于 2025 年 8 月的 Go 1.25 版本，体现了这门语言标志性的演进方式——安静、审慎的改进，而非颠覆。虽然没有破坏性变更，但几项更新有意义地加固了 Go 的基础。通过移除旧的“core type”概念，语言规范得以简化，澄清了类型推断和泛型的工作方式。工具链变得更精简、更快速，工具现在按需构建，go.mod 中加入了新的ignore指令，同时 go vet, go doc, 和 go version 等命令也得到了增强。</p>
<p>在底层，运行时获得了容器感知能力，能够根据 CPU 限制自动调整 GOMAXPROCS，使 Go 在云和边缘环境中更加高效。一个新的实验性垃圾回收器（greenteagc）提供了明显更低的停顿时间，而“ Flight Recorder”追踪则引入了持续的、低开销的可观测性。编译器和链接器现在能生成 DWARF 5 调试信息，以获得更小的二进制文件和更快的构建速度，同时修复了一个微妙的空指针 bug，提升了运行时安全。</p>
<p>在标准库中，开发者现在可以通过 testing/synctest 更容易地测试并发代码，并可以试用更快、更灵活的 encoding/json/v2 包。平台支持也向前迈进——现在要求 macOS 12 或更新版本，而 32 位 Windows ARM 将在此版本后停止支持。</p>
<p>总而言之，Go 1.25 提醒了我们这门语言为何能经久不衰：它在不破坏信任的前提下演进，用稳定、有影响力的进步，取代了喧嚣的炒作。</p>
<p>（来源: <a href="https://go.dev/doc/go1.25?utm_source=chatgpt.com">go.dev/doc/go1.25</a>）</p>
<h2>为 Go 干杯</h2>
<p>在 Go 语言诞生 16 周年之际，我们不妨停下来，细细品味它所代表的意义。它不仅仅是一门编程语言，更是一种工程理念，其核心在于克制、清晰和长远思考。</p>
<p>在 Ardan Labs，我们亲眼见证了 Go 如何帮助团队构建可靠、可扩展的系统，从企业平台到初创原型，无所不包。它帮助工程师专注于真正重要的事情：解决实际问题，而不是与工具较劲。</p>
<p>祝愿 Go 语言再创辉煌一年。</p>
<p><strong>不追逐潮流的语言，才能超越潮流而长存。</strong></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p><strong>想系统学习Go，构建扎实的知识体系？</strong></p>
<p>我的新书《<a href="https://book.douban.com/subject/37499496/">Go语言第一课</a>》是你的首选。源自2.4万人好评的极客时间专栏，内容全面升级，同步至Go 1.24。首发期有专属五折优惠，不到40元即可入手，扫码即可拥有这本300页的Go语言入门宝典，即刻开启你的Go语言高效学习之旅！</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/go-primer-published-4.png" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/11/12/16-years-of-go-a-programming-language-built-to-last/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
