Go 代码设计的“第一天原则”:一份能让你少走五年弯路的实战模式清单

本文永久链接 – https://tonybai.com/2026/04/24/go-code-design-day-one-principle-practical-patterns-list 大家好,我是Tony Bai。 世界读书日送福利活动火热进行中,点击这里留言参与,赢取属于你的幸运! 每一个 Go 开发者,大概都经历过这样的心路历程: 项目启动初期,为了追求“快”,我们怎么方便怎么来。配置到处写,数据库连接随手建,错误日志直接 fmt.Println。我们安慰自己:“先跑起来,以后再重构。” ...

April 24, 2026 · 9 min · Tony Bai

Go 考古:Slice 的“隐秘角落”——只读切片与扩容策略的权衡

本文永久链接 – https://tonybai.com/2025/10/02/go-archaeology-slice 大家好,我是Tony Bai。 slice(切片),可以说是 Go 语言中最重要、也最常用的数据结构,没有之一。我们每天都在使用它,尤其是 append 函数,它就像一个魔术师,总能“恰到好处”地为我们管理好底层数组的容量,让我们几乎感受不到内存分配的烦恼。 ...

October 2, 2025 · 12 min · Tony Bai

Google 揭秘生产环境调试心法:SRE 与 SWE 的四大思维差异与实战路径

本文永久链接 – https://tonybai.com/2025/mm/dd/debugging-Incidents-in-google 大家好,我是Tony Bai。 尽管 Google 的 SRE 手册为我们描绘了理想的运维蓝图,但在“炮火连天”的生产事故现场,工程师的真实反应往往是另一番景象。 最近,一篇发表于 ACM Queue 的研究深入剖析了 Google 工程师(包括 SRE 和 SWE)在处理复杂分布式系统生产问题时的真实行为模式。这项研究通过对大量事后复盘(postmortem)的分析和深度访谈,揭示了不同角色工程师在思维模型、工具选择上的显著差异,并总结出了一套普遍适用的“调试构建块”。对于每一位构建和维护大规模服务的工程师来说,这些来自一线的洞察无疑是一份宝贵的实战指南。 ...

August 10, 2025 · 8 min · Tony Bai

持续性能分析正在成为继Metrics、Logs 和 Traces之后,可观测性的“第四大支柱”

本文永久链接 – https://tonybai.com/2025/08/04/continuous-profiling-fourth-pillar 大家好,我是Tony Bai。 凌晨两点,运维平台的警报刺破了宁静。P99 延迟飙升,用户服务几近瘫痪。作为 Go 工程师,你的脑海中闪过无数可能:是数据库慢了?是下游服务超时?还是某个新上线的 goroutine 泄露了?你急忙打开监控面板,Metrics (指标) 显示 CPU 和内存平稳,Logs (日志) 没有明显异常,Traces (追踪) 只告诉你请求在服务内部耗费了大量时间,却不知所踪。这个场景,是现代软件运维中一个令人沮丧的“最后一公里”难题。 ...

August 4, 2025 · 7 min · Tony Bai

Prometheus 联合创始人的警告:在使用 OpenTelemetry 生成 Metrics 前请三思!

本文永久链接 – https://tonybai.com/2025/07/27/native-prometheus-instrumentation-over-opentelemetry 大家好,我是Tony Bai。 在云原生可观测性的世界里,OpenTelemetry (OTel) 正如日中天。它被誉为“可观测性的未来”,承诺用一个统一的标准,终结 Metrics、Traces、Logs 各自为战的混乱局面。无数的开发者和公司,都在热情地拥抱这个“一次插桩,到处发送”的美好愿景。 ...

July 27, 2025 · 5 min · Tony Bai

云原生时代,如何用RED三板斧搞定服务监控?

云原生时代,如何用RED三板斧搞定服务监控? - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ ...

May 26, 2025 · 8 min · Tony Bai

Service Weaver:以单体形式编码,以微服务形式部署

本文永久链接 – https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices 分布式应用的主流架构模式演化为微服务架构已经有些年头了。微服务、DevOps、持续交付和容器技术(k8s)是构成最初云原生概念的核心要素。它们相生相拌,共同演进,并推动了云计算全面进入云原生时代。 云原生应用普遍采用微服务架构,遗留的单体应用程序会逐步演进并拆分为多个微服务,新应用则会直接采用微服务架构进行设计与实现。微服务的好处是显而易见的: ...

October 9, 2023 · 24 min · Tony Bai

Go GC:了解便利背后的开销

本文永久链接 – https://tonybai.com/2023/06/13/understand-go-gc-overhead-behind-the-convenience 注:本文部分摘录自GopherChina 2023前的《Go高级工程师训练营》课程。 1. 简介 当今,移动互联网和人工智能的快(越)速(来)发(越)展(卷),对编程语言的高效性和便利性提出了更高的要求。Go作为一门高效、简洁、易于学习的编程语言,受到了越来越多开发者的青睐。 ...

June 13, 2023 · 12 min · Tony Bai

理解时序数据库的时间线

本文永久链接 – https://tonybai.com/2023/05/28/understand-time-series-of-tsdb 在当今数据爆炸的时代,时序数据已经成为企业和组织中不可或缺的一部分。它们包括了从传感器、监控设备、日志记录系统和金融交易等多种来源的大量数据,这些数据按照时间顺序排列,记录了各种事件和活动的发生和变化。时序数据的分析和处理对于企业的业务决策和运营效率至关重要。为了更好地管理和利用这些数据,人们发明了时序数据库管理系统(Time Series Database System,TSDB)。 ...

May 28, 2023 · 10 min · Tony Bai

聊聊Prometheus Gauge的增减操作实现

本文永久链接 – https://tonybai.com/2023/01/10/how-prometheus-gauge-add-and-sub 1. Gauge是啥? 熟悉Prometheus的小伙伴们都知道Prometheus提供了四大指标类型: Counter Gauge Histogram Summary Histogram和Summary是一类,但理解起来稍复杂一些,这里我们暂且不提。Counter顾名思义“计数器”,仅提供了Add方法,是一个一直递增的数值;而Gauge直译为“仪表盘”,它也是一个数值,但和Counter不同,它不仅提供Add方法,还提供了Sub方法。如果你的指标可增可减或是需要支持负数,那么Gauge显然是一个比Counter更适合的指标类型。 ...

January 10, 2023 · 6 min · Tony Bai