知识卡片

原始分布式时代教训:能分布式不代表该分布式

普通读书笔记卡

内容

20世纪80年代的DCE分布式运算环境曾尝试让远程调用像本地调用一样”透明”——开发者 不必关心访问的资源是本地还是远程。这个目标符合UNIX”简单优先”的设计哲学,但现实 是”调用远程方法”与”调用本地方法”只有两字之差,复杂度却天差地别:远程方法失去了 内联等本地编译优化,还额外背负服务发现、负载均衡、故障处理、序列化、认证授权、 传输安全、跨机数据一致性等一整套新问题。为了让性能可接受,开发者甚至要用Tricks把 几个毫无关系的方法打包成一次远程调用来摊薄调用成本,这恰恰与”用分布式突破算力 瓶颈”的初衷相悖。最终的教训是:某个功能能够进行分布式,并不意味着它就应该进行 分布式,强行追求透明的分布式操作只会自寻苦果。这个教训在几十年后的服务网格 时代(见[[边车代理模式如何在不改业务代码前提下接管流量治理]])才真正被重新 拾起——不是靠”假装远程等于本地”,而是靠基础设施把远程调用的额外成本悄悄接管掉。

参考来源

- 位置:《凤凰架构:构建可靠的大型分布式系统》第1章"服务架构演进史"1.1节 "原始分布式时代"(源文件:_epub-src对应OEBPS/Text/chapter5.xhtml) - 结论依据:原文详述DCE团队努力实现"透明"分布式访问,但受限于远程调用与本地 调用的性能鸿沟,开发者被迫用非常规手段(打包无关方法)摊薄远程调用成本, 最终由IBM院士Kyle Brown总结出"某功能能分布式不代表该分布式"的教训,直接 支撑本卡片结论。 - 原始内容:某个功能能够进行分布式,并不意味着它就应该进行分布式,强行追求 透明的分布式操作,只会自寻苦果。——Kyle Brown,IBM Fellow,2016