企业多层分布式应用架构
在信息产业高速发展的今天,企业间的竞争将更加激烈。随着规模的不断扩大和业务的不断更新,企业迫切需求完整的分布式解决方案,用于管理复杂的异构环境,实现不同硬件设备、软件系统、网络环境及数据库系统之间的完整集成。
背景介绍
纵观人类计算机的发展历史,每隔十年至十五年,信息产业就会发生周期性的变革,1950年至1970年期间,企业主要采用大型主机-终端的体系结构,企业应用系统则采用单一、集中的方式为用户提供资源共享服务。80年代初期,开放系统与关系型数据库管理系统被企业大量采用,有别于集中式系统,应用程序逻辑分散在主从两端。随着Windows的普及,90年代则是图形化的应用时代,Client/Server体系结构也被广泛采用。90年代后期,信息产业出现了分布式对象技术,应用程序可以分布在不同的系统平台上,通过分布式技术实现异构平台间对象的相互通信。将企业已有系统集成于分布式系统,可以极大地提高企业应用系统的扩展性。90年代末出现的多层分布式应用为企业进一步简化应用系统的开发指明了方向。
在传统的Client/Server结构中,应用程序逻辑通常分布在客户端和服务器两端,客户端发出数据资源访问请求,服务器端将结果返回客户端。Client/Server结构的缺陷是,当客户端数目激增时,服务器的性能将会因为无法进行负载平衡而大大下降。而一旦应用的需求发生变化,客户端和服务器端的应用程序则都需要修改,这样给应用的维护和升级带来了极大的不便,而且大量数据的传输也增加了网络的负载。为了解决Client/Server存在的问题,企业只有向多层分布式应用转变。企业应用的多层架构如图1所示。
在多层分布式应用中,客户端和服务器之间可以加入一层或多层应用服务程序,这种程序称为“应用服务器”(Application Server)。开发人员可以将企业应用的商业逻辑放在中间层服务器上,而不是客户端,从而将应用的业务逻辑与用户界面隔离开,在保证客户端功能的前提下,为用户提供一个瘦的(thin)界面。这意味着如果需要修改应用程序代码,则可以只在一处(中间层服务器上)修改,而不用修改成千上万的客户端应用程序。 从而使开发人员可以专注于应用系统核心业务逻辑的分析、设计和开发,简化了企业系统的开发、更新和升级工作,极大增强了企业应用的伸缩性和灵活性。
当企业需要建立基于Web的商业应用系统时,多层分布式体系结构同样提供了强大优势,为基于Web的商业应用提供了“瘦客户”的体系结构,使基于浏览器的客户可以与Intranet资源进行有效交互,并且不需要在客户端进行复杂的应用配置工作。多层分布式解决方案在异构平台间架起了桥梁,可以使基于Web的商业应用与企业已有系统集成在一起。
目前,在我国的企业中,大量采用的还是Client/Server体系结构,而在西方发达国家,企业由传统的应用系统向多层分布式应用系统的转变已经成为业界主流。相信在我国,多层分布式系统将得到更为广泛的应用。
多层分布式应用带来的挑战
尽管多层分布式体系结构为企业提供了极大优势,但比起传统的Client/Server方式,开发多层分布式应用具有更大的难度,给开发人员带来了新的技术挑战。主要包括了以下三个方面:
1.分布式对象标准的多样化
企业要构建多层分布式系统,必须遵循分布式的工业标准,基于什么样的标准直接影响到企业应用系统的开放性和可扩展性。目前分布式对象的标准主要有三种:Microsoft 的DCOM、Sun Microsystems的Enterprise JavaBeans/RMI以及OMG(Object Management Group)组织的CORBA(Common Object Request Broker Architecture)。DCOM是基于Windows环境的分布式对象标准,因此支持的平台种类有限。RMI与Enterprise JavaBean是以Java语言为主体的分布式对象架构,适合大型企业的跨平台需求,但现实的应用系统环境一般是由多种不同的程序语言建立起来的,只依赖一种程序语言构建的企业应用是很少见的。CORBA是由800多个大型软、硬件公司参与的OMG组织所制定的分布式对象标准,获得IBM、Sun Microsystems、Oracle、Sybase、Novell、Netscape等大型公司的支持,CORBA标准实现了不同平台之间对象的通信及互操作,软件供应商只要遵循应用对象与ORB间通信的IDL(Interface Definition Language),便能够以对象的形式提供服务或获得服务,ORB使开发人员完全不需要考虑异构平台、不同的通信协议或不同程序语言造成的差异,而专注于应用逻辑的开发。可见,CORBA提供了开放、灵活的分布式标准,适于企业构建多层分布式应用系统。
2.多层分布式应用的开发是很复杂的
如果用传统方式开发多层分布式应用,则需要开发人员具有较深的计算机系统级知识,需要掌握诸如并发性、安全性、可伸缩性及事务处理等各个方面的知识。而且需要实现对系统资源访问的有效管理,如对线程、内存、数据库连接、网络连接的管理。而这些复杂工作极大地耗费了开发人员的精力,限制了开发工作的进展。而企业应用系统的开发更多地要求开发人员专注于商业逻辑方面的开发,而不是在系统级开发上浪费更多时间。
3.分布式应用的分发、管理也是一个挑战
大多数的分布式应用是由成百上千的组件组成的,而在分发时,每一个组件都有属性需要进行配置。通常,对组件属性的配置方式依赖于组件所在的平台。 因此,应用被分发后,如何管理分散的组件将是一个挑战。管理者需要确保应用的组件能够正确运行、可以位于企业网内的任何机器上,并能及时发现处理错误(包括系统错误、网络中断、应用错误等情况)。
传统意义上的网络系统管理(比如:SNMP)只能通过分析主机的状态,获得应用程序运行的情况,但对于分布式应用系统来说,一个应用并非运行于某一台主机,因此,管理者需要管理整个网络的状态,这就需要有恰当工具的支持。
多层分布式应用的需求
开发企业多层分布式应用,通常有以下方面的需求:
1.易于开发
虽然多层分布式体系结构要求有较深的计算机系统级知识作为基础(比如:数据库、事务处理、网络安全、CORBA技术等),但对于IT开发人员来说,要求在不用深入了解系统底层复杂技术的情况下,能够在一个友好的可视化集成开发环境(IDE)中,快速、容易地开发出功能强大的多层分布式应用系统。
2.简化分发、管理工作
开发人员要求能够在一个集成开发环境中测试、修改分布式应用程序,以提高应用的性能,并可以实现在同一环境中对应用的分发、管理。由于许多应用包括了成千上万分布于企业各处的组件,因此,需要一个集中化的管理工具,用于管理、控制分布式应用,并实现错误检测、更正的功能。
3.企业应用的鲁棒性要求
一个完善的企业分布式多层应用,应该满足事务处理、安全管理、容错、负载平衡、可伸缩性、高性能方面的要求。
4.具有开放的、基于工业标准的体系结构
企业需要的是开放的、基于工业标准的解决方案,可以实现与其他符合标准的系统进行交互。
5.可以实现与各种数据库及已有系统的集成
企业分布式应用必须能够访问企业的数据资源,而企业数据通常存储在当前流行的大型数据库上(如:Oracle、Sybase等),或通过TP Monitor(如:IBM CICS、BEA Tuxedo)访问,因此要求企业分布式系统能够与数据库及已有系统集成在一起。
6.支持不同平台环境
企业多层分布式应用需要支持不同的平台环境,服务器一端应该支持Windows NT或 UNIX平台,而且不同平台的客户都可以访问服务器上的应用,包括:HTML、Java applets 、Java 应用、Dynamic HTML、C++应用等。
企业应用服务器
基于上述原因,当企业向多层分布式应用转变时,需要应用服务器(Application Server)的支持,从而可以将不同的应用技术集成在一起,使多层分布式应用的开发、分发、管理变得更加容易。现在已经有很多企业使用了应用服务器技术,也极大地增强了企业应用的性能。但在我国处于应用中的应用服务器技术,还不能完全满足企业建立多层分布式应用的需求,这些应用服务器主要分为以下两类:
1.基于Web的应用服务器
基于Web的应用服务器一般提供了基于Web的Interner应用的开发环境,适于建立基于Web的Client/Server应用系统。在这种体系下,Web应用服务器通常运行在Web Server上,用来处理客户请求。通常用ODBC和JDBC连接数据库。这种类型的应用服务器一般易于使用,并且支持基于EJB(Enterprise JavaBeans)的服务器应用程序开发。但这种应用服务器存在的缺陷有:不支持事务处理、安全性差、对已有交易系统支持有限、性能较低。基于Web的应用服务器体系结构如图2所示。
2.基于中间件的应用服务器
基于中间件的应用服务器通过与已有系统(如:TP Monitors)进行集成,可以为企业提供更强大的功能,包括:事务处理、安全管理、容错、负载平衡等,但多数解决方案都是基于Client/Server体系结构的,或仅限于三层体系结构,不适于建立分布式的Web应用,而且没有一个有效的开发管理环境。基于中间件应用服务器体系结构如图3所示。
在信息产业高速发展的今天,企业间的竞争将更加激烈。随着规模的不断扩大和业务的不断更新,企业迫切需求完整的分布式解决方案,用于管理复杂的异构环境,实现不同硬件设备、软件系统、网络环境及数据库系统之间的完整集成。
背景介绍
纵观人类计算机的发展历史,每隔十年至十五年,信息产业就会发生周期性的变革,1950年至1970年期间,企业主要采用大型主机-终端的体系结构,企业应用系统则采用单一、集中的方式为用户提供资源共享服务。80年代初期,开放系统与关系型数据库管理系统被企业大量采用,有别于集中式系统,应用程序逻辑分散在主从两端。随着Windows的普及,90年代则是图形化的应用时代,Client/Server体系结构也被广泛采用。90年代后期,信息产业出现了分布式对象技术,应用程序可以分布在不同的系统平台上,通过分布式技术实现异构平台间对象的相互通信。将企业已有系统集成于分布式系统,可以极大地提高企业应用系统的扩展性。90年代末出现的多层分布式应用为企业进一步简化应用系统的开发指明了方向。
在传统的Client/Server结构中,应用程序逻辑通常分布在客户端和服务器两端,客户端发出数据资源访问请求,服务器端将结果返回客户端。Client/Server结构的缺陷是,当客户端数目激增时,服务器的性能将会因为无法进行负载平衡而大大下降。而一旦应用的需求发生变化,客户端和服务器端的应用程序则都需要修改,这样给应用的维护和升级带来了极大的不便,而且大量数据的传输也增加了网络的负载。为了解决Client/Server存在的问题,企业只有向多层分布式应用转变。企业应用的多层架构如图1所示。
在多层分布式应用中,客户端和服务器之间可以加入一层或多层应用服务程序,这种程序称为“应用服务器”(Application Server)。开发人员可以将企业应用的商业逻辑放在中间层服务器上,而不是客户端,从而将应用的业务逻辑与用户界面隔离开,在保证客户端功能的前提下,为用户提供一个瘦的(thin)界面。这意味着如果需要修改应用程序代码,则可以只在一处(中间层服务器上)修改,而不用修改成千上万的客户端应用程序。 从而使开发人员可以专注于应用系统核心业务逻辑的分析、设计和开发,简化了企业系统的开发、更新和升级工作,极大增强了企业应用的伸缩性和灵活性。
当企业需要建立基于Web的商业应用系统时,多层分布式体系结构同样提供了强大优势,为基于Web的商业应用提供了“瘦客户”的体系结构,使基于浏览器的客户可以与Intranet资源进行有效交互,并且不需要在客户端进行复杂的应用配置工作。多层分布式解决方案在异构平台间架起了桥梁,可以使基于Web的商业应用与企业已有系统集成在一起。
目前,在我国的企业中,大量采用的还是Client/Server体系结构,而在西方发达国家,企业由传统的应用系统向多层分布式应用系统的转变已经成为业界主流。相信在我国,多层分布式系统将得到更为广泛的应用。
多层分布式应用带来的挑战
尽管多层分布式体系结构为企业提供了极大优势,但比起传统的Client/Server方式,开发多层分布式应用具有更大的难度,给开发人员带来了新的技术挑战。主要包括了以下三个方面:
1.分布式对象标准的多样化
企业要构建多层分布式系统,必须遵循分布式的工业标准,基于什么样的标准直接影响到企业应用系统的开放性和可扩展性。目前分布式对象的标准主要有三种:Microsoft 的DCOM、Sun Microsystems的Enterprise JavaBeans/RMI以及OMG(Object Management Group)组织的CORBA(Common Object Request Broker Architecture)。DCOM是基于Windows环境的分布式对象标准,因此支持的平台种类有限。RMI与Enterprise JavaBean是以Java语言为主体的分布式对象架构,适合大型企业的跨平台需求,但现实的应用系统环境一般是由多种不同的程序语言建立起来的,只依赖一种程序语言构建的企业应用是很少见的。CORBA是由800多个大型软、硬件公司参与的OMG组织所制定的分布式对象标准,获得IBM、Sun Microsystems、Oracle、Sybase、Novell、Netscape等大型公司的支持,CORBA标准实现了不同平台之间对象的通信及互操作,软件供应商只要遵循应用对象与ORB间通信的IDL(Interface Definition Language),便能够以对象的形式提供服务或获得服务,ORB使开发人员完全不需要考虑异构平台、不同的通信协议或不同程序语言造成的差异,而专注于应用逻辑的开发。可见,CORBA提供了开放、灵活的分布式标准,适于企业构建多层分布式应用系统。
2.多层分布式应用的开发是很复杂的
如果用传统方式开发多层分布式应用,则需要开发人员具有较深的计算机系统级知识,需要掌握诸如并发性、安全性、可伸缩性及事务处理等各个方面的知识。而且需要实现对系统资源访问的有效管理,如对线程、内存、数据库连接、网络连接的管理。而这些复杂工作极大地耗费了开发人员的精力,限制了开发工作的进展。而企业应用系统的开发更多地要求开发人员专注于商业逻辑方面的开发,而不是在系统级开发上浪费更多时间。
3.分布式应用的分发、管理也是一个挑战
大多数的分布式应用是由成百上千的组件组成的,而在分发时,每一个组件都有属性需要进行配置。通常,对组件属性的配置方式依赖于组件所在的平台。 因此,应用被分发后,如何管理分散的组件将是一个挑战。管理者需要确保应用的组件能够正确运行、可以位于企业网内的任何机器上,并能及时发现处理错误(包括系统错误、网络中断、应用错误等情况)。
传统意义上的网络系统管理(比如:SNMP)只能通过分析主机的状态,获得应用程序运行的情况,但对于分布式应用系统来说,一个应用并非运行于某一台主机,因此,管理者需要管理整个网络的状态,这就需要有恰当工具的支持。
多层分布式应用的需求
开发企业多层分布式应用,通常有以下方面的需求:
1.易于开发
虽然多层分布式体系结构要求有较深的计算机系统级知识作为基础(比如:数据库、事务处理、网络安全、CORBA技术等),但对于IT开发人员来说,要求在不用深入了解系统底层复杂技术的情况下,能够在一个友好的可视化集成开发环境(IDE)中,快速、容易地开发出功能强大的多层分布式应用系统。
2.简化分发、管理工作
开发人员要求能够在一个集成开发环境中测试、修改分布式应用程序,以提高应用的性能,并可以实现在同一环境中对应用的分发、管理。由于许多应用包括了成千上万分布于企业各处的组件,因此,需要一个集中化的管理工具,用于管理、控制分布式应用,并实现错误检测、更正的功能。
3.企业应用的鲁棒性要求
一个完善的企业分布式多层应用,应该满足事务处理、安全管理、容错、负载平衡、可伸缩性、高性能方面的要求。
4.具有开放的、基于工业标准的体系结构
企业需要的是开放的、基于工业标准的解决方案,可以实现与其他符合标准的系统进行交互。
5.可以实现与各种数据库及已有系统的集成
企业分布式应用必须能够访问企业的数据资源,而企业数据通常存储在当前流行的大型数据库上(如:Oracle、Sybase等),或通过TP Monitor(如:IBM CICS、BEA Tuxedo)访问,因此要求企业分布式系统能够与数据库及已有系统集成在一起。
6.支持不同平台环境
企业多层分布式应用需要支持不同的平台环境,服务器一端应该支持Windows NT或 UNIX平台,而且不同平台的客户都可以访问服务器上的应用,包括:HTML、Java applets 、Java 应用、Dynamic HTML、C++应用等。
企业应用服务器
基于上述原因,当企业向多层分布式应用转变时,需要应用服务器(Application Server)的支持,从而可以将不同的应用技术集成在一起,使多层分布式应用的开发、分发、管理变得更加容易。现在已经有很多企业使用了应用服务器技术,也极大地增强了企业应用的性能。但在我国处于应用中的应用服务器技术,还不能完全满足企业建立多层分布式应用的需求,这些应用服务器主要分为以下两类:
1.基于Web的应用服务器
基于Web的应用服务器一般提供了基于Web的Interner应用的开发环境,适于建立基于Web的Client/Server应用系统。在这种体系下,Web应用服务器通常运行在Web Server上,用来处理客户请求。通常用ODBC和JDBC连接数据库。这种类型的应用服务器一般易于使用,并且支持基于EJB(Enterprise JavaBeans)的服务器应用程序开发。但这种应用服务器存在的缺陷有:不支持事务处理、安全性差、对已有交易系统支持有限、性能较低。基于Web的应用服务器体系结构如图2所示。
2.基于中间件的应用服务器
基于中间件的应用服务器通过与已有系统(如:TP Monitors)进行集成,可以为企业提供更强大的功能,包括:事务处理、安全管理、容错、负载平衡等,但多数解决方案都是基于Client/Server体系结构的,或仅限于三层体系结构,不适于建立分布式的Web应用,而且没有一个有效的开发管理环境。基于中间件应用服务器体系结构如图3所示。