为什么说“接口”,而非代码或硬件堆砌,决定了系统的性能上限?

本文永久链接 – https://tonybai.com/2025/09/07/the-power-of-an-interface-for-performance 我的《Go语言第一课》已上市,赠书活动正在进行中,欢迎点击此链接参与。 大家好,我是Tony Bai。 我们通常如何看待性能优化?答案往往是:更快的算法、更少的内存分配、更底层的并发原语、甚至用SIMD指令压榨CPU的每一个周期。我们痴迷于“引擎盖之下”的实现细节,坚信更好的代码和更强的硬件能带来更高的性能。 然而,TigerBeetle数据库创始人Joran Dirk Greef在Strange Loop上的一场精彩的演讲(https://www.youtube.com/watch?v=yKgfk8lTQuE),用一场耗资百万美元的数据库比赛,颠覆了这一传统认知。他通过无可辩驳的基准测试数据证明:在分布式系统中,接口(Interface)的设计,而非代码实现或硬件堆砌,才是决定性能上限的真正瓶颈。 在深入探讨之前,我们必须对本文的“接口”一词进行关键澄清。对于Go开发者而言,“接口”通常指代语言层面的interface类型,一种实现行为契约以及多态的工具。但本文中所说的“接口”,则是一个更宏观、更广义的概念,它指的是系统与系统之间、或用户与系统之间进行通信的交互模式、契约与协议。你的REST API设计、gRPC的.proto文件、微服务间的调用时序,都属于这个“广义接口”的范畴。 ...

September 7, 2025 · 7 min · Tony Bai

Go语言gRPC服务Handler单元测试详解

本文永久链接 – https://tonybai.com/2023/11/25/grpc-handler-unit-testing-in-go 在云原生时代和微服务架构背景下,HTTP和RPC协议成为服务间通信和与客户端交互的两种主要方式。对于Go语言而言,标准库提供了net/http/httptest包,为开发人员提供了便捷的方式来构建服务端HTTP Handler单元测试的测试脚手架代码,而无需真正建立HTTP服务器,让开发人员可以聚焦于对Handler业务逻辑的测试。比如下面这个示例: ...

November 25, 2023 · 13 min · Tony Bai