<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Trace on Tony Bai</title><link>https://tonybai.com/tags/trace/</link><description>Recent content in Trace on Tony Bai</description><generator>Hugo</generator><language>zh-cn</language><copyright>2004-2026 Tony Bai. 版权所有.</copyright><lastBuildDate>Wed, 24 Dec 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://tonybai.com/tags/trace/index.xml" rel="self" type="application/rss+xml"/><item><title>Go 性能分析的“新范式”：用关键路径分析破解高并发延迟谜题</title><link>https://tonybai.com/2025/12/24/profiling-request-latency-with-critical-path-analysis/</link><pubDate>Wed, 24 Dec 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/12/24/profiling-request-latency-with-critical-path-analysis/</guid><description>本文永久链接 – https://tonybai.com/2025/12/24/profiling-request-latency-with-critical-path-analysis 大家好，我是Tony Bai。 “如果你喜欢快速的软件，那么你来对地方了。” 在 GopherCon 2025 上，来自 Datadog 的工程师、Go Performance and diagnostics小组...</description></item><item><title>直面依赖之痛与TLS简化：GopherCon 2025贡献者峰会核心纪要深度解读</title><link>https://tonybai.com/2025/09/11/gophercon-2025-contributor-summit-notes/</link><pubDate>Thu, 11 Sep 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/09/11/gophercon-2025-contributor-summit-notes/</guid><description>本文永久链接 – https://tonybai.com/2025/09/11/gophercon-2025-contributor-summit-notes 大家好，我是Tony Bai。 GopherCon 2025 贡献者峰会刚刚落下帷幕。在这场Go核心团队与全球顶尖贡献者齐聚一堂的闭门会议中，Go语言的未来方向被激烈地讨论和塑造。这些讨论或许不像发布泛型那样惊天动地，但它们如同地壳深处的板...</description></item><item><title>Google 揭秘生产环境调试心法：SRE 与 SWE 的四大思维差异与实战路径</title><link>https://tonybai.com/2025/08/10/debugging-incidents-in-google/</link><pubDate>Sun, 10 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/10/debugging-incidents-in-google/</guid><description>本文永久链接 – https://tonybai.com/2025/mm/dd/debugging-Incidents-in-google 大家好，我是Tony Bai。 尽管 Google 的 SRE 手册为我们描绘了理想的运维蓝图，但在“炮火连天”的生产事故现场，工程师的真实反应往往是另一番景象。 最近，一篇发表于 ACM Queue 的研究深入剖析了 Google 工程师（包括 SRE 和 ...</description></item><item><title>持续性能分析正在成为继Metrics、Logs 和 Traces之后，可观测性的“第四大支柱”</title><link>https://tonybai.com/2025/08/04/continuous-profiling-fourth-pillar/</link><pubDate>Mon, 04 Aug 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/08/04/continuous-profiling-fourth-pillar/</guid><description>本文永久链接 – https://tonybai.com/2025/08/04/continuous-profiling-fourth-pillar 大家好，我是Tony Bai。 凌晨两点，运维平台的警报刺破了宁静。P99 延迟飙升，用户服务几近瘫痪。作为 Go 工程师，你的脑海中闪过无数可能：是数据库慢了？是下游服务超时？还是某个新上线的 goroutine 泄露了？你急忙打开监控面板，**M...</description></item><item><title>云原生时代，如何用RED三板斧搞定服务监控？</title><link>https://tonybai.com/2025/05/26/monitor-design-with-red/</link><pubDate>Mon, 26 May 2025 00:00:00 +0800</pubDate><guid>https://tonybai.com/2025/05/26/monitor-design-with-red/</guid><description>云原生时代，如何用RED三板斧搞定服务监控？ - Tony Bai =============== Tony Bai 一个程序员的心路历程 * Google Go语言编码风格规范 * Google Go语言编码风格规范：指南篇 * Google Go语言编码风格规范：决定篇 * Google Go语言编码风格规范：最佳实践篇 * Go语言第一课FAQ * Go语言进阶课FAQ * 关于我 * 文章...</description></item><item><title>Go 1.22新特性前瞻</title><link>https://tonybai.com/2023/12/25/go-1-22-foresight/</link><pubDate>Mon, 25 Dec 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/12/25/go-1-22-foresight/</guid><description>本文永久链接 – https://tonybai.com/2023/12/25/go-1-22-foresight 美国时间2023年12月20日，Go官方宣布Go 1.22rc1发布，开启了为期2个多月的、常规的公测之旅，Go 1.22预计将于2024.2月份正式发布！ 除了在官网下载Go 1.22rc1版本进行新特性体验之外，我们还可以通过在线的Go Playground选择“Go dev b...</description></item><item><title>Service Weaver：以单体形式编码，以微服务形式部署</title><link>https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices/</link><pubDate>Mon, 09 Oct 2023 00:00:00 +0800</pubDate><guid>https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices/</guid><description>本文永久链接 – https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices 分布式应用的主流架构模式演化为**微服务架构**已经有些年头了。微服务、DevOps、持续交付和容器技术(k8s)是构成最初云原生概念的核心要素。它们相生相拌，共同演进，并推动了云计算**全面进入云原...</description></item><item><title>通过实例理解Go标准库context包</title><link>https://tonybai.com/2022/11/08/understand-go-context-by-example/</link><pubDate>Tue, 08 Nov 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/11/08/understand-go-context-by-example/</guid><description>* **原weibo账号处于jy状态，临时先用小号 https://weibo.com/u/6484441286，欢迎大家关注！** * “Gopher部落”知识星球双十一新人特惠，领劵加入即享立减88元优惠 – https://t.zsxq.com/078E1QTjM 本文永久链接 – https://tonybai.com/2022/11/08/understand-go-context-by...</description></item><item><title>手把手教你使用ANTLR和Go实现一门DSL语言（第二部分）：文法验证</title><link>https://tonybai.com/2022/05/25/an-example-of-implement-dsl-using-antlr-and-go-part2/</link><pubDate>Wed, 25 May 2022 00:00:00 +0800</pubDate><guid>https://tonybai.com/2022/05/25/an-example-of-implement-dsl-using-antlr-and-go-part2/</guid><description>本文永久链接 – https://tonybai.com/2022/05/25/an-example-of-implement-dsl-using-antlr-and-go-part2 在本系列的第一篇文章《手把手教你使用ANTLR和Go实现一门DSL语言：设计DSL语法与文法》中，我们已经为气象学家们设计了一门DSL，建立了语法样例，并用ANTLR4文法将DSL定义了出来。按照外部DSL设计与实...</description></item><item><title>使用Docker Compose构建一键启动的运行环境</title><link>https://tonybai.com/2021/11/26/build-all-in-one-runtime-environment-with-docker-compose/</link><pubDate>Fri, 26 Nov 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/11/26/build-all-in-one-runtime-environment-with-docker-compose/</guid><description>本文永久链接 – https://tonybai.com/2021/11/26/build-all-in-one-runtime-environment-with-docker-compose 如今，不管你是否喜欢，不管你是否承认，微服务架构模式的流行就摆在那里。作为架构师的你，如果再将系统设计成个大单体结构，那么即便不懂技术的领导，都会给你送上几次白眼。好吧，妥协了！开拆！“没吃过猪肉，还没见过...</description></item><item><title>通过实例理解Go Execution Tracer</title><link>https://tonybai.com/2021/06/28/understand-go-execution-tracer-by-example/</link><pubDate>Mon, 28 Jun 2021 00:00:00 +0800</pubDate><guid>https://tonybai.com/2021/06/28/understand-go-execution-tracer-by-example/</guid><description>本文永久链接 – https://tonybai.com/2021/06/28/understand-go-execution-tracer-by-example Netflix（奈飞公司）的性能架构师Brendan Gregg在其《BPF Performance Tools》一书中对tracing、sampling等概念做了细致描述，以帮助开发人员理解这些概念，并基于这些概念对性能优化辅助工具进...</description></item><item><title>BPF和Go：在Linux中内省的现代方式[译]</title><link>https://tonybai.com/2020/12/25/bpf-and-go-modern-forms-of-introspection-in-linux/</link><pubDate>Fri, 25 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/25/bpf-and-go-modern-forms-of-introspection-in-linux/</guid><description>本文翻译自马可·凯瓦克（Marko Kevac）的《BPF and Go: Modern forms of introspection in Linux》(https://medium.com/bumble-tech/bpf-and-go-modern-forms-of-introspection-in-linux-6b9802682223)。 每个人都有自己喜欢的关于魔法的书。对于一个人来说是托...</description></item><item><title>Go函数调用链跟踪的一种实现思路</title><link>https://tonybai.com/2020/12/10/a-kind-of-thinking-about-how-to-trace-function-call-chain/</link><pubDate>Thu, 10 Dec 2020 00:00:00 +0800</pubDate><guid>https://tonybai.com/2020/12/10/a-kind-of-thinking-about-how-to-trace-function-call-chain/</guid><description>这篇文章的初衷是想解答知乎上的一位知友提出的问题。没想到完成一种实现后，这个问题居然被删除了。那么既然实现了，就分享出来吧。问题的原文找不到了，问题大致是这样的： 一个程序中存在多个函数调用链都调用了函数D： A1 -&amp;gt; B1 &amp;gt; C1 -&amp;gt; D A2 -&amp;gt; B2 &amp;gt; C2 -&amp;gt; D A3 -&amp;gt; B3 -&amp;gt; C3 -&amp;gt; D ... ... 那么，如果某次函数D被调用时出现了问题，那么怎么知道这个D...</description></item><item><title>Go语言回顾：从Go 1.0到Go 1.13</title><link>https://tonybai.com/2019/09/07/go-retrospective/</link><pubDate>Sat, 07 Sep 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/09/07/go-retrospective/</guid><description>Go 1.13版本在2019.9.3正式发布！国外的Gopher Vincent Blanchon发表了一篇文章《Go: Retrospective》(科学上网阅读)，对Go从1.0版本到1.13版本做了简要的回顾，这里是那篇文章的译文。 对于每一位Go开发者来说，Go语言的演化历程是必须要知道的事情。了解这些横跨年份发布的大版本的主要变化将有助于Gopher理解Go语言的发展理念以及该语言每个版...</description></item><item><title>使用nomad实现集群管理和微服务部署调度</title><link>https://tonybai.com/2019/03/30/cluster-management-and-microservice-deployment-and-scheduled-by-nomad/</link><pubDate>Sat, 30 Mar 2019 00:00:00 +0800</pubDate><guid>https://tonybai.com/2019/03/30/cluster-management-and-microservice-deployment-and-scheduled-by-nomad/</guid><description>在“云原生”、“容器化”、“微服务”、“服务网格”等概念大行其道的今天，一提到集群管理、容器工作负载调度，人们首先想到的是Kubernetes。 Kubernetes经过多年的发展，目前已经成为了云原生计算平台的事实标准，得到了诸如谷歌、微软、红帽、亚马逊、IBM、阿里等大厂的大力支持，各大云计算提供商也都提供了专属Kubernetes集群服务。开发人员可以**一键**在这些大厂的云上创建k8s集...</description></item><item><title>使用istio治理微服务入门</title><link>https://tonybai.com/2018/01/03/an-intro-of-microservices-governance-by-istio/</link><pubDate>Wed, 03 Jan 2018 00:00:00 +0800</pubDate><guid>https://tonybai.com/2018/01/03/an-intro-of-microservices-governance-by-istio/</guid><description>近两年微服务架构流行，主流互联网厂商内部都已经微服务化，初创企业虽然技术积淀不行，但也通过各种开源工具拥抱微服务。再加上容器技术赋能，Kubernetes又添了一把火，微服务架构已然成为当前软件架构设计的首选。 **但微服务化易弄，服务治理难搞！** 一、微服务的“痛点” ---------- 微服务化没有统一标准，多数是进行业务领域垂直切分，业务按一定的粒度划分职责，并形成清晰、职责单一的服务接...</description></item><item><title>再谈Docker容器单机网络：利用iptables trace和ebtables log</title><link>https://tonybai.com/2017/11/06/explain-docker-single-host-network-using-iptables-trace-and-ebtables-log/</link><pubDate>Mon, 06 Nov 2017 00:00:00 +0800</pubDate><guid>https://tonybai.com/2017/11/06/explain-docker-single-host-network-using-iptables-trace-and-ebtables-log/</guid><description>这大半年一直在搞Kubernetes。每次搭建Kubernetes集群，或多或少都会被Kubernetes的“网络插件们”折腾折腾。因此，要说目前Kubernetes中最难搞的是什么？个人觉得莫过于其Pod网络了，至少也是最难搞的之一。除此之外，以Service和Pod为中心的Kubernetes架构还大量利用iptables规则来实现Service的反向代理和负载均衡，这又与Docker原生容器...</description></item><item><title>Appdash，用Go实现的分布式系统跟踪神器</title><link>https://tonybai.com/2015/06/17/appdash-distributed-systems-tracing-in-go/</link><pubDate>Wed, 17 Jun 2015 00:00:00 +0800</pubDate><guid>https://tonybai.com/2015/06/17/appdash-distributed-systems-tracing-in-go/</guid><description>在“云”盛行的今天，分布式系统已不是什么新鲜的玩意儿。用脚也能想得出来：Google、baidu、淘宝、亚马逊、twitter等IT巨头 背后的巨型计算平台都是分布式系统了，甚至就连一个简单的微信公众号应用的后端也都分布式了，即便仅有几台机器而已。分布式让系统富有弹性，面 对纷繁变化的需求，可以伸缩自如。但分布式系统也给开发以及运维人员带来了难题：如何监控和优化分布式系统的行为。 以google为...</description></item><item><title>偿还N年前的一笔技术债</title><link>https://tonybai.com/2011/07/21/pay-for-a-tech-debt-of-several-year-ago/</link><pubDate>Thu, 21 Jul 2011 00:00:00 +0800</pubDate><guid>https://tonybai.com/2011/07/21/pay-for-a-tech-debt-of-several-year-ago/</guid><description>记得刚来公司时曾参与过一个项目，项目中用到了部门基础库中的一个B+树接口。不过在程序调试过程中我们发现可执行程序总是dump core（在sparc solaris上），经初步分析，断定问题就出在B+树接口处，但一时又找不到问题原因。还好这个B+树的实现者就坐在我的旁边。他分析后告诉我：这个B+树接口要求用户自定义的索引结构体的size应该为4的整数倍。按照他的说法，我为结构体打了padding，...</description></item><item><title>为函数添加enter和exit级trace</title><link>https://tonybai.com/2011/07/13/add-enter-and-exit-trace-for-your-function/</link><pubDate>Wed, 13 Jul 2011 00:00:00 +0800</pubDate><guid>https://tonybai.com/2011/07/13/add-enter-and-exit-trace-for-your-function/</guid><description>日常开发中，我们为了辅助程序调试常常在每个函数的出入口(entry/exit)增加Trace，一般我们多用宏来实现这些Trace语句，例如： #ifdef XX\_DEBUG\_ #define TRACE\_ENTER() printf(&amp;#34;Enter %s\\n&amp;#34;, \_\_FUNCTION\_\_) #define TRACE\_EXIT() printf(&amp;#34;Exit %s\\n&amp;#34;, \_\_...</description></item></channel></rss>