健康检查为何成了分布式系统的隐形杀手——从TCP端口探测到语义健康检测的二十年陷阱

2018年,一个技术团队在生产环境遇到了一个诡异的现象:每当数据库响应变慢,整个服务集群就会在几分钟内完全瘫痪。排查后发现,罪魁祸首是健康检查——当数据库变慢时,应用的健康检查端点开始超时,负载均衡器将服务器标记为不健康,剩余服务器承受更多流量,进一步恶化,形成恶性循环。 ...

13 min · 6109 words

限流算法的选择困境:令牌桶、漏桶还是滑动窗口?

2005年,卡内基梅隆大学的研究人员进行了一项有趣的实验。他们在校园网络的边缘路由器上部署了四种不同的限流算法,然后用真实流量和Blaster蠕虫攻击数据进行测试。结果令人意外:表现最差的算法错误率高达30%,而表现最好的算法错误率低于1%。 ...

10 min · 4594 words

Git的隐藏架构:为什么这个「笨」内容寻址系统统治了版本控制二十年

2005年4月6日,Linus Torvalds在Linux内核邮件列表中写道:「我一直在考虑自己写一个SCM。」第二天,他做出了第一个提交——用Git自己提交Git的代码。这个最初只有约10,000行代码的工具,在接下来二十年里彻底改变了软件协作的方式。 ...

13 min · 6135 words

幂等性设计:为何一个请求被重复执行会产生数据灾难

2017年2月,一位开发者在Stripe官方博客下留言:他刚刚经历了一次"幽灵扣款"——用户点击支付按钮后页面超时,刷新重试,结果被扣了两次款。这不是技术故障,而是系统设计缺陷。在网络不可靠的世界里,重试是常态;如果没有幂等性设计,每一次重试都可能成为数据灾难的开始。 ...

9 min · 4020 words

Raft协议的"实现陷阱":为什么论文读懂了,代码却写不对

2014年,斯坦福大学的Diego Ongaro和John Ousterhout在USENIX ATC会议上发表了一篇题为《In Search of an Understandable Consensus Algorithm》的论文。这篇论文提出了Raft协议,声称比Paxos"更容易理解"。论文开篇直言:Paxos"非常难以理解",而Raft的设计目标就是提供"更好的可理解性"。 ...

15 min · 7104 words

CAP定理的误导性:为什么"三选二"是分布式系统被误解最深的公理

2000年7月,加州大学伯克利分校的Eric Brewer在ACM Symposium on Principles of Distributed Computing上做了一个主题演讲。他提出了一个看似简单的观点:分布式系统不可能同时提供一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。 ...

10 min · 4812 words

没有全局时钟的世界:分布式系统如何定义"先"与"后"

1978年7月,Leslie Lamport在《Communications of the ACM》上发表了一篇论文,标题是《Time, Clocks, and the Ordering of Events in a Distributed System》。论文开篇就抛出了一个反直觉的论断:分布式系统中,事件的"先后顺序"本质上是一个相对概念。 ...

10 min · 4654 words