文章摘要
这篇文章以幽默讽刺的笔调描述了分布式系统中拜占庭容错问题的复杂性和无奈。作者将技术演讲比作苏联时期的压抑电影,暗喻系统可靠性问题如同无法信任的残酷现实,充满哲学式的悲观色彩,暗示在不可靠的网络环境中构建可靠服务近乎徒劳。
文章总结
最悲伤的时刻
作者:詹姆斯·米肯斯
每当我参加技术会议,发现有人要作关于“拜占庭容错”的演讲时,总会感到一种难以摆脱的悲伤。这种情绪类似于意识到“好人也会遭遇不幸”,或是“基努·里维斯的收入永远比你高几个数量级”。听这类演讲就像看某个前苏联加盟共和国的压抑电影——唯一的区别在于,电影里是年轻的卡普鲁斯金无法与煤矿相识的恋人重逢,而演讲中则是计算机和网络在不断崩溃。
演讲者总会天真地问:“如何构建可靠的计算机服务?”接着暗示:“如果无法信任任何事物,而‘幸福’本身只是强大操纵者设计的谎言,这任务就太难了。”虽然没人明说后半句,但听众都心知肚明。分布式系统的可靠性本质上是无法实现的,我们依赖拜占庭容错协议,就像查尔顿·赫斯顿紧握枪支,指望复杂协议能抵御“会穿裤子且恶意篡改网络数据包的暴怒猩猩”的袭击。
论文的荒谬现实
所有拜占庭容错论文都包含一张类似图1的示意图,标注着“图2:我们的网络协议”。实际上它应该写:“某天,一台计算机想向在线服务发送指令,这个简单愿望导致产生了16亿条消息。攻击者可能干扰其中1/f的消息——幸运的是,1/f远小于16亿。最终15亿条消息幸存,它们执行着连克苏鲁才懂的操作。经过优化后仅需14亿条消息,但若少于这个数,系统就会被指责‘只能处理常规故障,无法应对前人为标新立异提出的变态案例’。”
论文的“相关工作”部分常宣称:“对比我们的协议与先前最佳方案,显然我们更优。”但两张对比图看起来都像被冲上岸的诡异海藻团,难以分辨优劣。事实上,无论选择哪种协议,Twitter的可用性依然达不到99%。因为现实中的数据中心操作员泰德只会把咖啡洒在空调上,用盗版Nickelback磁带覆盖你的备份,然后准时回家看《霹雳猫》——他根本不会按论文设想发送15条加密签名消息。
自创术语与“直观解释”
这类论文总会发明新的一致性类型,比如“闰年三写脏镜异步半一致性”。在“3.2节:直观概述”中,作者用看似朴实的语言解释系统如何抵御恶意服务器和黑死病爆发:“直观上,恶意服务器无法欺骗客户端,因为每条消息都是加密、嵌套、签名、互认证的日志条目……”然而这些“直观解释”毫无生活共鸣。如果现实中的午餐邀约像拜占庭协议,对话将是:
- 詹姆斯:“我想吃午饭。”
- 布莱恩/里奇:“确认收到请求。”
- 克里斯:“你不想吃午饭!”
- (经过多轮验证、指控故障和声明糖尿病昏迷后)
- 里奇:“我已独自去食堂。”
结语:停止这场徒劳
人类应当停止发表拜占庭容错论文。这不是研究者的错——就像不该责怪瘾君子渴望可卡因。追求系统可靠性的执念终将导致疯狂,或生成167页满是证明的技术报告。即便用形式化方法和密码学驯服机器,我们也无法将泰德关进加密嵌套日志。当数据中心起火、我们疯狂呼叫泰德的传呼机时,才会发现他早已去了食堂。
(作者系微软雷德蒙实验室分布式系统研究员,专注Web应用与JavaScript框架,拥有密歇根大学计算机博士及佐治亚理工学士学位。)
评论总结
这篇评论围绕James Mickens的文章展开,主要观点可归纳为:
- 对Mickens写作风格的赞赏
- "This is one of my favorite quotes from technical comedic writing"(评论2)
- "Mickens is the best!"(评论6)
- 对拜占庭容错实用性的质疑
- "In actually useful business problems, there is trust to be 'exploited'"(评论3)
- "Twitter will still have fewer than two nines of availability"(评论5)
- 比特币带来的启示
- "demonstrates that Byzantine fault tolerance has practical applications"(评论7)
- "the question is not 'How do I verify this message?' but 'Why am I trying to deal with those assholes?'"(评论7)
- 幽默调侃
- "Things would be profoundly simpler if Judge Dredd would take care of computer crackers"(评论4)
- "leave Keanu out of this"(评论8)
- 对作者的个人追随
- "I don't actually care about byzantine fault tolerance. But, James Mickens wrote it? I'm reading"(评论1)