一、分布式应用系统开发背景
近十年来,通信技术和计算机技术都得到了长足发展,主要表现在:光纤通信技术的传输速率达到了难以置信的高度;无线通信技术则从模拟发展到数字,从窄带发展到宽带;计算机技术的则在计算处理速率、并行处理结构以及面向对象的软件技术和分布对象计算技术方面获得突破性发展。计算机CPU处理速度按照摩尔定律不断提升,已经达到1000MHz以上;巨型计算机的处理速度已经从每秒亿次上升到每秒千亿次、甚至万亿次指令;高性能计算机体系结构和并行计算结构,使得计算机处理速度已经超越单个CPU处理速度的限制;面向对象的软件技术使得计算机软件在软件重用技术上出现了突破性进展;分布对象技术使得异构软件系统在网络环境下可以容易地实现互操作和系统集成。
通信技术和计算机技术的发展,推动了网络应用的发展。当前网络应用已经从传输单一的正文数据,发展到传输话音数据和视频数据,以及集成多种类型数据传输的多媒体网络应用;从传统的点到点交互,发展到单点到多点交互(如视频广播和远程教育应用)和多点到多点之间的交互(如计算机视频会议应用系统);从传统的集中控制结构发展到分布控制结构,进一步发展到联邦(具有不同行政管理域的)控制结构;从传统的尽力而为的、没有任何服务质量要求的服务模式,发展到高速运输服务模式和具有服务质量保证的高性能网络服务。
网络体系结构的发展体现了网络技术发展的特征。20世纪80年代网络技术的主要特征是开放、互连,那个时期的网络体系结构主要是基于ISO的开放式系统互连(OSI)参考模型。现在计算机网络已经发展到高性能网络阶段,现在网络技术的特征在于开放、集成、高性能和智能化。这些网络技术的特征同样也体现在网络体系结构的发展中。我们认为,对新型网络体系结构影响最大的主要是集成和高性能。
分布式网络应用范围及其广泛,包括在线事务处理系统,网管系统,全球个人通讯系统,电子医疗图像系统,CORBA的对象请求代理,高性能WEB服务器和多处理器通信子系统。
二、分布式应用系统的好处和面对的挑战
基于网络的分布式应用能够带来如下潜在的好处:
Ø 增强的连通性和协作性:信息对所有的客户都是快速可访问的,避免手工进行数据和控制信息传输
Ø 显著提高的系统性能、可扩展性和容错性:根据当前和未来的系统要求合理分配计算资源;在新的硬件被添加到系统中或相关硬件被更新(比如替换故障系统)不会涉及到分布式系统中其他的应用单元
Ø 降低的系统成本:多个用户或应用程序共享那些昂贵的外围设备比如文件服务器或高容量彩色打印机可以降低系统的成本;分离的服务单元有利于二进制级的代码重用减小系统后续开发代价。
分布式网络应用的典型结构是多个PC或服务器通过局域网相连。在这种环境下,众多分散的应用单元协同为终端用户提供各种计算任务。比如:
Ø 一个交互式GUI能够被XWINDOWS服务端或其他瘦客户端采用诸如支持JAVA的WEB浏览器来管理
Ø 由一个或多个主机共同提供服务处理能力
Ø 通过一个或多个文件服务器访问永久资源,比如SQL数据库、WEB CACHES 和许可管理
相互兼容的网络协议使各个相分离的应用服务(功能)单元(术语为组件)间的互操作成为可能,即使这些组件所在的网络环境中的网络协议、操作系统、硬件、软件和编程语言都是异构(不同类别)的。
一个基于网络的分布式应用从设计到实现、调试、优化和监测(Monitor)都比传统的单机应用系统要复杂和困难得多。尽管在过去的10多年来,面向对象的开发技术和框架思想(frameworks)获得很大发展,同时大量的原理、方法、模式和工具被用来减轻开发和配置分布式网络应用所带来的复杂程度,但是想要达到分布式应用的理想境界,人们还面临着很多必须解决的课题。服务的划分和跨进程/主机的负载均衡;全网范围内的服务定制问题,全网范围内的资源控制问题以及全网范围内的用户管理问题。
分布式网络应用所面临的困难:
一些是由于在分布式网络环境下自然产生的困难,包括
Ø 检测短暂(transient)发生的网络或主机故障,并且恢复正常
Ø 最小化通信延迟对端到端应用性能的影响
Ø 如何合理的划分一个分布式应用中各种服务
Ø 在网络环境下何地何时分布这些服务,同时为这些服务提供负载均衡
这些困难是在分布式网络环境下与生具有的,不会在短时间内消失。开发者还将为解决这些问题作大量的工作。
以下是由于开发工具和开发技术带来的困难,包括:
Ø 缺少类型安全的、可移植的和可扩展的本地系统方法调用接口;缺少可重用的函数和类库
Ø 缺少针对跨进程和主机的远程方法调用的有效调试工具
不断涌现的网络编程概念和对网络处理能力的不断提升,使软件的生命周期大大减短,大大增加了软件的开发费用