Web Analytics

从 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

Python简史:一个圣诞节的“私活”项目,如何改变了编程世界?

本文永久链接 – https://tonybai.com/2025/08/30/python-an-origin-story 大家好,我是Tony Bai。 在编程语言的星空中,很少有哪颗星像Python一样,以如此温和而坚定的姿态,从一个不起眼的个人项目,成长为照亮地球未来的科技灯塔。如今,当我们谈论数据科学、人工智能时,Python几乎是绕不开的默认选项。但这一切的起点,竟源于一位程序员在阿姆斯特丹的圣诞假期里,为了“打发时间”而开始的一个“私活”项目。 ...

August 30, 2025 · 10 min · Tony Bai

无聊的API是最好的API:从系统设计到接口契约的九条法则

本文永久链接 – https://tonybai.com/2025/08/29/good-api-design 大家好,我是Tony Bai。 在解读《Everything I know about good system design》一文时,我们曾提炼出一个核心观点:“无聊即可靠”。这个看似反直觉的法则,在追求创新与复杂的软件工程世界里,如同一股清流。现在,这个“无聊”哲学将从宏观的系统设计,延伸至微观但至关重要的领域——API设计。 Sean Goedecke在其后续力作《Everything I know about good API design》中,再次强调了这一理念。他认为,一个伟大的API,必然是“无聊”的。它不应追求新奇或有趣,而应像一把用了多年的锤子,让使用者拿起就能用,无需思考。 ...

August 29, 2025 · 9 min · Tony Bai

我的 Gopher “长期主义”:从《Go语言第一课》新书说起

本文永久链接 – https://tonybai.com/2025/08/28/go-primer-published 大家好,我是Tony Bai。 前不久,在知乎上看到一个关于 Go 社区的帖子,其中一条评论让我感慨良多: “GopherChina 都没了,国内还有几人坚持?Tony Bai好像还在更新” ...

August 28, 2025 · 8 min · Tony Bai

Go语言的“灵魂拷问”:接口只关乎行为,还是也应拥抱数据?

本文永久链接 – https://tonybai.com/2025/08/27/go-interface-embrace-data 大家好,我是Tony Bai。 在 Go 语言的世界里,接口(interface)一直被视为其设计哲学的基石之一——它只关心一个类型能做什么(行为),而不关心它是什么(结构)。这种基于方法集的鸭子类型,赋予了 Go 独一无二的灵活性和解耦能力。然而,随着 Go 1.18 泛型的到来,一个深刻的问题被摆上了台面:当我们需要编写对数据的结构而非行为具有通用性的代码时,现有的约束机制是否足够? ...

August 27, 2025 · 7 min · Tony Bai

告别性能猜谜:一份Go并发操作的成本层级清单

本文永久链接 – https://tonybai.com/2025/08/26/go-concurrency-cost-hierarchy 大家好,我是Tony Bai。 Go语言的并发模型以其简洁直观著称,但这种简单性背后,隐藏着一个跨越五个数量级的巨大性能鸿沟。当你的高并发服务遭遇性能瓶颈时,你是否也曾陷入“性能猜谜”的困境:是sync.Mutex太慢?是atomic操作不够快?还是某个channel的阻塞超出了预期?我们往往依赖直觉和pprof的零散线索,却缺乏一个系统性的框架来指导我们的判断。 ...

August 26, 2025 · 13 min · Tony Bai

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

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

August 26, 2025 · 10 min · Tony Bai

Go的“七宗罪”:一篇“Go依然不够好”如何引爆社区激辩?

本文永久链接 – https://tonybai.com/2025/08/25/go-is-still-not-good 大家好,我是Tony Bai。 在技术圈,平静的湖面下往往暗流涌动。对于Go语言社区而言,这股潜藏已久的暗流,被近期的一篇名为《Go is still not good》的博文彻底引爆。作者Thomas Habets,一位自称拥有超过十年Go使用经验的资深开发者,在他的这篇文章中系统性地列举了他眼中Go语言的“七宗罪”。这篇文章迅速登上Hacker News热榜,吸引了超过700条评论,形成了一场规模空前的社区大辩论。 ...

August 25, 2025 · 11 min · Tony Bai

掌握架构师的“编程语言”:将“想法”部署到“人”的艺术

本文永久链接 – https://tonybai.com/2025/08/25/documents-the-architects-programming-language 大家好,我是Tony Bai。 从初级到高级,开发者的职业路径通常是清晰的:写出更好的代码。但当站在高级工程师的十字路口,是转向管理还是深入技术成为架构师?许多人选择了后者,却发现这个角色的定义模糊不清。最近,stackoverflow的一篇精彩的博客文章《文档:架构师的编程语言》提出了一个深刻的洞见:高级开发者将代码部署到代码构成的系统中,而架构师将想法部署到人构成的系统中。 ...

August 25, 2025 · 6 min · Tony Bai