Redis 之父吐槽现代前端的复杂性:我们到底是在解决问题,还是在制造问题?

本文永久链接 – https://tonybai.com/2026/05/29/redis-creator-slams-modern-frontend-complexity 大家好,我是Tony Bai。 曾几何时,Web 开发是一件极其纯粹且美好的事情。 在那个遥远的上世纪 90 年代末,你只需要写几个简单的 .html 文件,撒上一点 .css,再用几行 JavaScript 操纵一下表单,就能构建出一个能被全世界访问的网站。源代码和你最终在浏览器里看到的东西,几乎是一模一样的。 ...

May 29, 2026 · 7 min · Tony Bai

耗时六个月,我为你画了一张通往“分布式架构师”的黄金地图

耗时六个月,我为你画了一张通往“分布式架构师”的黄金地图 - Tony Bai Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ ...

January 6, 2026 · 5 min · Tony Bai

MinIO 开源版突发“安乐死”:维护模式开启,社区愤怒,你的数据还安全吗?

本文永久链接 – https://tonybai.com/2025/12/04/minio-enter-maintenance-mode 大家好,我是Tony Bai。 “这个项目目前处于维护状态,不接受新的更改。” 近日,GitHub 上拥有近 60k Star、Go 语言生态中最著名的开源对象存储项目——MinIO,悄然修改了其 README。这一行看似平淡的声明,标志着 MinIO 开源版实际上已经被宣判了“死刑”。 ...

December 4, 2025 · 6 min · Tony Bai

你的 Go 测试,还停留在“演员对台词”吗?

本文永久链接 – https://tonybai.com/2025/11/17/go-testing-journey 大家好,我是Tony Bai。 我想请大家想象一个场景: 周五下午五点,你刚刚修复了一个看似无关紧要的 bug,怀着对周末的憧憬,合并了你的代码。CI/CD 流水线一片绿灯,部署顺利完成。 ...

November 17, 2025 · 5 min · Tony Bai

从 0 到 1.5 亿 QPS:Uber 核心存储架构的十年演进与缓存设计哲学

本文永久链接 – https://tonybai.com/2025/09/01/uber-150-million-reads 大家好,我是Tony Bai。 在 Uber 这样体量的公司,其核心在线存储系统不仅要处理 PB 级的海量数据,还要以毫秒级的延迟响应每秒上亿次的请求。这一切是如何实现的?本文将深度整合 Uber 工程团队这几年公开发布的三篇文章,和大家一起穿越其核心存储架构的十年演进史:从最初为解决 MySQL 扩展性难题而生的 Schemaless,到拥抱 SQL 和强一致性的分布式数据库 Docstore,再到最终通过集成式缓存 CacheFront 将读取性能推向 1.5 亿 QPS 的极致。这是一个关于在 MySQL 之上构建分布式巨兽的真实故事,充满了工程上的权衡、妥协与创新。 ...

September 1, 2025 · 8 min · Tony Bai

“无聊”设计的终极奥义:为什么“做可能奏效的最简单的事”是最高法则?

本文永久链接 – https://tonybai.com/2025/08/31/the-simplest-thing-that-could-possibly-work 大家好,我是Tony Bai。 在我们解读了Github工程师Sean Goedecke关于“无聊即可靠”的系统设计和API设计理念之后,他再次带来了一篇精彩的的文章——《Do the simplest thing that could possibly work》。这既是对前两篇文章思想的延续,更是将其核心哲学提炼为一条终极黄金法则:在软件设计的每一个环节,都应“做可能奏效的最简单的事”。 ...

August 31, 2025 · 7 min · Tony Bai

无聊即可靠:一位资深工程师的九条系统设计法则

本文永久链接 – https://tonybai.com/2025/08/26/good-system-design 大家好,我是Tony Bai。 在技术圈,我们常常被各种“炫技式”的系统设计建议所包围。从入门级的“你一定没听说过队列吧?”到专家级的“在数据库里存布尔值简直是灾难”,这些建议要么过于肤浅,要么过于精巧,往往脱离了大多数工程实践的真实上下文。就连《设计数据密集型应用》这样的经典之作,虽然深刻,却也可能与我们日常面对的大多数问题有些距离。 ...

August 26, 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

关系代数、SQL语句和Go语言示例

本文永久链接 – https://tonybai.com/2023/11/15/relational-algebra-and-sql-with-go-examples 近些年,数据库领域发展日新月异,除传统的关系型数据库外,还出现了许多新型的数据库,比如:以HBase、Cassandra、MongoDB为代表的NoSQL数据库,以InfluxDB、TDEngine为代表的时序数据库,以Neo4J、Dgraph为代表的图数据库,以Redis、Memcached等为代表的内存数据库,以Milvus为代表的向量数据库,以CockroachDB、TiDB为代表的HTAP融合数据库以及云原生数据库等。各类型数据库都有自己的优势,开发者可以根据应用场景选择最合适的数据库。 ...

November 15, 2023 · 25 min · Tony Bai

Go项目组织:在单一repo中管理多个Go module指南

本文永久链接 – https://tonybai.com/2023/05/10/a-guide-of-managing-multiple-go-modules-in-mono-repo 0. 单repo单module管理回顾 众所周知,Go在1.11版本中引入了go module,随着近几年Go module机制的逐渐成熟,它已经被Go团队确定为Go标准的依赖管理与构建方案,原先的GOPATH mode已经被彻底废弃。 ...

May 10, 2023 · 9 min · Tony Bai