目录
架构并不是被“发明”出来的,而是持续进化的结果。
从以下三个方面思考:
1. 它们都是什么、取代了什么,以及为什么能够在技术发展的中取得成功;
2. 为什么会成为软件架构不可或缺的支撑;
3. 它们为什么会失败,为什么会逐渐被我们遗忘。
结论
1. 微型机取代了大型机,逐步走向人们身边,因为当时硬件运算能力有限,因此原始分布式架构探索的第一步迈出,并没有取得成功;
2. 原始分布式架构的第一次探索,为后面分布式架构技术的演进奠定了基础;
3. 不能说是完全的成功,也不能说是失败,在当时也是提出了很多分布式技术的初级理论,这些理论没有被遗忘,后面终会重见天日,就在三十年后的今天。
原始分布式架构时代
分布式系统的设想和它实际的尝试,反而要比你今天所了解的大型单体系统出现的时间更早。
产生的背景
在 20 世纪 70 年代末到 80 年代初,计算机科学刚经历了从以大型机为主,到向以微型机为主的蜕变,逐渐走向社会,走向家庭,走向我们身边。还记得著名的英特尔处理器的鼻祖,Intel 8086 处理器。
当时的计算机硬件的运算处理能力还相当薄弱,已经直接妨碍了单台计算机上信息系统软件能够达到的最大规模。想看看到底能不能使用多台计算机共同协作,来支撑同一套软件系统的运行。
这个阶段其实是对分布式架构最原始的探索与研究。因为在这个时期提出的很多技术、概念,对 Unix 系统后续的发展,甚至是对今天计算机科学的很多领域,都产生了巨大而深远的影响,直接带动了后续的软件架构演化进程。
探索实践的结论
在当时产生了一些最原始技术的概念雏形理论实践,例如:
- 惠普公司(及后来被惠普收购的 Apollo),在 80 年代初期提出的网络运算架构(Network Computing Architecture,NCA),就可以说是未来远程服务调用的雏形。
- 卡内基 · 梅隆大学提出的AFS 文件系统(Andrew File System),可以看作是分布式文件系统的最早实现(顺便一提,Andrew 的意思是纪念 Andrew Carnegie 和 Andrew Mellon)
- 麻省理工学院提出的Kerberos 协议,是服务认证和访问控制(ACL)的基础性协议,是分布式服务安全性的重要支撑,目前包括 Windows 和 macOS 在内的众多操作系统的登录、认证功能,等等,都会利用到这个协议
而为了避免Unix 系统的版本战争在分布式领域中重演,负责制定 Unix 系统技术标准的开放软件基金会(Open Software Foundation,OSF,也就是后来的“国际开放标准组织”)就邀请了各个主要的研究厂商一起参与,共同制订了“分布式运算环境”(Distributed Computing Environment,DCE)的分布式技术体系。
DCE 包括了一整套完整的分布式服务组件的规范与实现。
这些技术的主旨,确实非常符合Unix 设计哲学(有过几个版本的不同说法,这里我指的是 Common Lisp 作者Richard P. Gabriel提出的简单优先“Worse is Better”原则),但这个目标其实是过于理想化了,它存在一些在当时根本不可能完美解决的技术困难。
- 例如远程调用和本地调用:
远程的服务在哪里(服务发现)、有多少个(负载均衡)、网络出现分区、超时或者服务出错了怎么办(熔断、隔离、降级)、方法的参数与返回结果如何表示(序列化协议)、如何传输(传输协议)、服务权限如何管理(认证、授权)、如何保证通信安全(网络安全层)、如何令调用不同机器的服务能返回相同的结果(分布式数据一致性)等一系列问题,就需要设计者耗费大量的心思。
因为把一个系统直接拆分到不同的机器之中,这样做带来的服务的发现、跟踪、通讯、容错、隔离、配置、传输、数据一致性和编码复杂度等方面的问题,所付出的代价远远超过了分布式所取得的收益。
原始分布式时代的教训
某个功能能够进行分布式,并不意味着它就应该进行分布式,强行追求透明的分布式操作,只会自寻苦果。
这两条理论其实是有些矛盾的
在当时计算机科学面前,有两条通往更大规模软件系统的道路:
- 是尽快提升单机的处理能力,以避免分布式的种种问题;
- 另一条路是找到更完美的解决方案,来应对如何构筑分布式系统的问题。
摩尔定律的黄金时期
在 20 世纪 80 年代,正是摩尔定律开始稳定发挥作用的黄金时期,微型计算机的性能以每两年就增长一倍的惊人速度在提升,硬件算力束缚软件规模的链条,很快就松动了,我们用单台或者几台计算机,就可以作为服务器来支撑大型信息系统的运作了,信息系统进入了单体时代,而且在未来很长的一段时间内,单体系统都将是软件架构的主流。
总结
原始分布式时代提出的构建“符合 Unix 的设计哲学的”,以及“如同本地调用一般简单透明的”分布式系统的这个目标,是软件开发者对分布式系统最初的美好愿景。不过迫于现实,它会在一定时期内被妥协、被舍弃,分布式将会经过一段越来越复杂的发展进程。