为什么 VictoriaMetrics 正在替换 Prometheus?一次大规模可观测性迁移实录

本文永久链接 – https://tonybai.com/2025/07/26/migrate-from-prometheus-to-victoriametrics 大家好,我是Tony Bai。 在云原生可观测性的领域,Prometheus 无疑是王者。凭借其简洁的模型、强大的 PromQL 和活跃的社区,Prometheus 几乎定义了现代监控的行业标准。许多顶尖技术公司,包括 PingCAP,都将其作为核心产品的监控与告警解决方案。 ...

July 26, 2025 · 6 min · Tony Bai

美国运通复盘 Go 语言实践:从依赖管理到并发模型,七大经验教训全解析

美国运通复盘 Go 语言实践:从依赖管理到并发模型,七大经验教训全解析 - Tony Bai Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

July 24, 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

从线下到线上,我的“Go语言进阶课”终于在极客时间与大家见面了!

从线下到线上,我的“Go语言进阶课”终于在极客时间与大家见面了! - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

May 12, 2025 · 5 min · Tony Bai

Go testing包将迎来新增强:标准化属性与持久化构件API即将落地

Go testing包将迎来新增强:标准化属性与持久化构件API即将落地 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

April 7, 2025 · 10 min · Tony Bai

通过实例理解API网关的主要功能特性

本文永久链接 – https://tonybai.com/2023/12/03/understand-api-gateway-main-functional-features-by-example 在当今的技术领域中,“下云”的概念正逐渐抬头,像David Heinemeier Hansson(37signals公司的联合创始人, Ruby on Rails的Creator)就直接将公司所有的业务都从公有云搬迁到了自建的数据中心中。虽说大多数企业不会这么“极端”,但随着企业对云原生架构采用的广泛与深入,不可避免地面临着对云服务的依赖。云服务在过去的几年中被广泛应用于构建灵活、可扩展的应用程序和基础设施,为企业提供了许多便利和创新机会。然而,随着业务规模的增长和数据量的增加,云服务的成本也随之上升。企业开始意识到,对云服务的依赖已经成为一个值得重新评估的议题。云服务的开销可能占据了企业可用的预算的相当大部分。为了保持竞争力并更好地控制成本,企业需要寻找方法来减少对云服务的依赖,寻找更经济的解决方案,同时确保仍能获得所需的性能、安全性和可扩展性。 ...

December 3, 2023 · 26 min · Tony Bai

使用Go语言实现eBPF程序内核态与用户态的双向数据交换

本文永久链接 – https://tonybai.com/2022/07/25/bidirectional-data-exchange-between-kernel-and-user-states-of-ebpf-programs-using-go 在之前的两篇文章中,无论是使用C语言开发eBPF程序,还是使用Go开发的eBPF程序,都是hello world级别的,可能有用,但谈不上十分实用。 通常来说,一个实用的eBPF程序,它的内核态部分与用户态部分是有数据交换的,有了这种数据交换,eBPF才能发挥更大的威力。而要想让eBPF程序具备较强的实用性,eBPF MAP是绕不过去的机制。 ...

July 25, 2022 · 11 min · Tony Bai

使用Go语言开发eBPF程序

本文永久链接 – https://tonybai.com/2022/07/19/develop-ebpf-program-in-go 在前面的《使用C语言从头开发一个Hello World级别的eBPF程序》一文中,我们详细说明了如何基于C语言和libbpf库从头开发一个eBPF程序(包括其用户态部分)。那篇文章是后续有关eBPF程序开发文章的基础,因为到目前为止,无论eBPF程序的用户态部分用什么语言开发,运行于内核态的eBPF程序内核态部分还是必须由C语言开发的。这样一来,其他编程语言只能拼一下如何让eBPF程序的用户态部分的开发更为简单了,Go语言也不例外。 ...

July 19, 2022 · 11 min · Tony Bai

使用C语言从头开发一个Hello World级别的eBPF程序

本文永久链接 – https://tonybai.com/2022/07/05/develop-hello-world-ebpf-program-in-c-from-scratch 近两年最火的Linux内核技术非eBPF莫属! 2019年以来,除了eBPF技术自身快速演进之外,基于eBPF技术的观测(Observability)、安全(Security)和网络(Networking)类项目如雨后春笋般出现。耳熟能详的的包括:cilium(把eBPF技术带到Kubernetes世界)、Falco(云原生安全运行时,Kubernetes威胁检测引擎的事实标准)、Katran(高性能四层负载均衡器)、pixie(用于Kubernetes应用程序的可观察性工具)等。 今年3月份发布的thoughtworks技术雷达第26期也将eBPF技术放入试验的象限阶段。 eBPF技术火热,但很多童鞋还不知道eBPF技术究竟是什么,能做什么?在这篇文章中,我将带大家简单了解一下什么eBPF内核技术以及如何从头开始用C语言开发一个Hello World级eBPF程序。 ...

July 5, 2022 · 20 min · Tony Bai

Prometheus采不到数据了!居然是Prometheus client包的锅

本文永久链接 – https://tonybai.com/2022/06/15/prometheus-can-not-pick-up-data-because-of-the-prometheus-client-package 在基于eBPF的新一代观测设施尚未成熟之前,我们采用了业界成熟的Prometheus+Grafana方案采集节点与应用度量指标(metrics)信息。众所周知,这样的方案是一种对应用有侵入的方案,即需要在应用内部嵌入采集度量信息及与Prometheus通信的client包。 Prometheus官方提供并维护了主流语言的client包,包括Go、Java、Python、Ruby、Rust等,如下图: ...

June 15, 2022 · 6 min · Tony Bai