介 绍
今天的应用程序可以说是分布式系统开发中的一项奇迹。基于不同的系统架构,构成应用程序的每个功能或服务可能在不同的系统上执行,而系统位于不同的地理位置,使用不同的计算机语言编写。应用程序的组件可能托管在一个功能强大的系统上,该系统由用户自己携带,并且可以和世界各地的应用程序组件或服务进行通信(他们都是数据中心的副本)。
而令人惊讶的是,使用这些应用程序的用户通常并不会对复杂环境的请求作出响应。这样的请求包含了像本地时间、本地天气或前往酒店的方向等等。
让我们慢慢开始介绍,看看使这一切成为可能的工业魔法,并思考开发人员在处理这种复杂性时应该牢记哪些思想和规则。
系统设计的演变史
从程序员编写应用程序,手工将它们编译成他们正在使用的机器的语言,然后使用切换开关将单个机器指令和数据直接输入到计算机的内存开始,应用程序开发已经走过了漫长的道路。
随着处理器越来越强大,系统内存和在线存储容量增加,计算机网络能力显著增强,开发方法也产生了变化。现在,数据可以从地球的一段传递到另一端,而速度比早期电脑将数据从系统内存转移到处理器本身的速度还要快!
让我们看看这一惊人转变中的一些亮点。
单体设计
早期的计算机程序都是基于单体设计的,所有的应用程序组件都被设计成在一台机器上执行。这意味着像用户界面(如果用户实际能与程序交互)、应用程序处理规则、数据管理、存储管理和网络管理(如果计算机连接到计算机网路上)等功能都包含在了程序中。
这些虽然编写起来简单,但这些程序会变得越来越复杂,越来越难以形成文档,也难以更新和更改。这时,机器本身对企业来说就成了最大的开销,因此应用程序的设计是为了尽最大可能使用机器。
客户端/服务器架构
随着处理器越来越强大,系统和在线存储容量增加,数据通信更快、更经济,应用程序的设计也随之发展,以适应发展的速度。应用程序逻辑被重构或分解,允许每个应用程序在不同的机器上执行,并且在组件之间插入了不断改进的网络。这使得一些特性可以迁移到当前可用的成本最低的计算环境中。这一演变经历了一下几个阶段:
- 终端和终端模拟
早期的分布式计算依赖于特别用途的用户访问设备——终端。应用程序必须理解它们使用的通信协议,并直接向设备发出命令。当廉价的个人计算机(PC)出现时,终端被运行终端模拟程序的PC所取代。
此时,应用程序的所有组件仍然驻留在单个大型机或小型计算机上
- 轻量客户端
随着PC的功能越来越强大,支持更大的内部和在线存储,网络性能进一步提高,企业对其应用程序进行了细分或分解,以便在本地PC上提取和执行用户界面。应用程序的其余部分则继续在数据中心的系统上执行。
这些PC通常比它们所替代的终端便宜,并且它们还有额外的优点。这些PC是多功能设备,它们可以运行在它们所替换的终端上无法运行的、却能提高办公效率的应用程序。这种组合促使企业在更新或刷新应用程序时,开始倾向于客户端/服务器应用体系结构。
- 中型客户端
PC的发展仍在快速进行。一旦出现了更强大、存储容量更大的系统,企业就会使用它们,将更多的处理操作从数据中心昂贵的系统迁移到便宜的用户办公桌上。这时,用户界面和一些计算任务就迁移到了本地的PC上。
这样大型机和小型计算机(现在成为服务器)就有了更长的使用寿命,从而降低了企业总体的计算成本。
- 重型客户端