基于N层架构的优势分析解决方案

一、概论
  N层(三层以上)架构集成了信息引擎技术和Internet技术,从软件体系结构上保证应用系统在性能上可扩展、可规模化,在功能上具有开放性、可重用、可延展,是一种能够满足未来企业级信息共享、业务操作的应用框架。
  N层架构的核心是提供可规模化特性,一方面是从服务负载上可规模化,能同时为极大规模的用户同时提供服务;另一方面是服务功能上的可规模化,可形成极大规模的软件群系统,各分系统可以共享信息、服务,形成企业级的信息高速公路。
    N层架构的四层是指Presentation Tier(表示层)、Web Server Tier(Web服务器层)、 Application Server Tier(应用服务器层)和 Data Tier(数据层),其关系如下图所示。 
 


图表一、N层架构体系结构
  N层架构是在三层架构的基础上形成的,是三层架构在Internet上的实现,是一种Internetable的三层架构。三层架构将应用逻辑从数据源的管理(数据库)和客户端中分离出来。一方面它使得客户端程序仅关注与数据的可视表示和用户输入信息的收集,这减小了客户端程序的复杂度,客户端程序更加小巧、灵活,降低了对客户端计算机硬件的要求。另一方面,由于应用逻辑集中在应用服务器,这更便于应用逻辑的管理和修改、调整等。
  N层架构具有三层架构的全部优点,同时由于N层架构中使用浏览器作为客户端界面,这又使得应用系统在实施布署时极大地简化,可以达到零布署开销的目标。 在N层架构中,信息引擎封装在应用服务器的核心,一方面信息引擎使用了数据库后端系统提供的强大功能,另一方面信息引擎将信息服务以更为方便易用的方式通过应用服务器提供出来,并可将其通过Web Server在Internet上发布出来,使得信息服务的功能在整个Internet的范围中都是可访问的。
  在N层架构中,客户端在网络通信上使用的是Web系统的HTTP协议。Web系统是针对信息的发布和检索而设计的,从根本上讲它是一种无连结、无状态的通信协议。在商业领域的业务网络应用系统中,传统的网络模型是Client/Server结构,其核心思想是在一条通信连结上进行请求/应答方式的业务数据交互。连结保持、状态转化和Transaction概念是网络业务应用系统不同于Web系统的特点。
  N层架构的目的就是要在HTTP协议上解决连结保持、状态转化和Transaction完整性(事务完整性)等问题,同时兼有上述两种系统的优越性。 应用系统在设计时通常考虑功能和性能两方面的需求。大多数传统的系统在设计时就已经将系统的负载确定在一个较小变化的范围中,因此为达到一定的性能,通常是在系统建立的初期通过系统硬件设备的选择来达到一定的性能要求。而业务系统的软件设计则是在此硬件平台基础之上进行的,而现在的企业应用环境中,业务系统负载快速变化的现象已十分普遍,上述系统一旦达到系统硬件的极限,整个系统的软、硬件就将全面报废。业务系统中软件部分的重要性和成本变得越来越大,软件系统的可规模化就成为一个至关重要的因素。软件体系的可规模化特性就是指当系统硬件性能达到极限后,通过简单增加硬件设备,无须对软件进行修改就可以使整个系统的性能同量级地提升。N层架构的核心就是要提供软件系统的可规模化(scalability)。

二、系统概要
    1.系统网络逻辑结构设计
    N层架构应用系统的网络逻辑结构如下图所示:

图表二、N层架构网络结构

  客户端使用浏览器,通过标准的HTTP协议连结到Internet。通常无须连结支持的信息浏览和查询等由Browser通过HTTP协议与Web Server交互得到。对于需要连结和状态支持的业务数据交互则通过在Browser中启动的Applet使用HTTP协议透过Web Server与Web Connector建立连结来实现。图中的LAN/iBus是建立在Intranet上的,它是与Internet是不能直接互通的,这保证了内部系统的安全性。Web Server与Internet相连,直接在Internet上提供服务,另一方面它通过Web Connector与Intranet上的iBus相连。数据库在Intranet中的连结有两中方式,一是通过ODBC或数据库系统提供的连结手段直接与应用服务器相连;一是开发DB Connector将数据库服务挂接在iBus上。
    2.软件模块划分及其逻辑关系
  客户端模块,客户端使用标准的Browser为用户提供GUI的用户操作界面,信息和数据使用HTML规范进行描述和布局,一些特殊的数据表现形式可以使用Applet的方式来表现。用户输入信息可以使用HTML FORM(可同时使用JavaScript来完成客户端的数据合法性检查功能)或Applet的图形界面方式来收集。客户端主要关注于输出信息的显示和用户输入信息的收集,对信息和数据的解释、处理等均在不在客户端进行。这样客户端可以达到零布署开销的目标。
  DNS / Web Redirector的目的是为客户端浏览器在发起连结时为其分配一个特定的Web服务器。它对客户端和Web服务器都是透明的,它仅在浏览器发起连结时参与服务器的分配,一旦浏览器首次访问Web服务器后它就不再与浏览器和Web服务器发生关系。DNS / Web Redirector的具体工作模式在后面作详细描述。
  Web Server + Web Connector是服务的提供者,客户端的所有请求都由它首先接收,服务系统的所有结果都由它送回客户端。一方面它提供标准Web Server的服务功能,另一方面它还作为一个代理服务器,将应用服务器的同能提供给客户浏览器。在业务系统中需要的连结保持、状态转换、权限控制等都由其上的Web Connector部分提供。它部队业务操作的具体数据作任何处理,它是在客户端浏览器和应用服务器之间转发业务数据包(Message Block)。任何的业务系统在通信上都可以抽象成请求数据包(Request Message Block)和应答数据包(Response Message Block)的交互。Web Connector所提供的功能就是完成这种请求/应答的数据包转发,同时将请求/应答的数据交互与特定的连结、状态、权限等业务系统所必须的功能关联起来。
  Application Server则实现具体的商业逻辑,完成具体的业务功能。连结保持、状态转换和权限控制等功能主要在Web Connector中完成,Application Server则以请求/应答的方式来实现具体的商业逻辑功能。在一个具体的应用系统设计时,首先抽象出业务系统的商业逻辑,将整个业务分解成一系列的具体服务,Application Server则以在iBus上为每一个服务发布一个主题(publish subject)的方式来提供服务。在完成具体业务的过程中,Application Server将需要数据库服务器提供支持,Application Server可以在Intranet上直接访问数据库,也可以通过访问数据库系统在iBus上发布的服务来得到数据库系统的支持。通常绝大部分的商业逻辑的实现都集中在Application Server上,这使得商业逻辑的管理、控制和修改能较为容易地完成,简化整个系统的维护工作。
  Database部分主要关注的是业务数据的保存、检索和备份等通常的数据库功能。这部分在整个系统中的复杂程度将因不同的应用系统有较大的变化。提供对业务数据的存储、访问是其最基本的功能,进而可以形成Data mart, Data warehouse最终将产生Data mining的需求。业务、统计、分析数据将随企业的发展和业务应用系统的运行而不断积累,这些数据是一个企业的重要财富,如何合理有效地使用这些数据将是一个长期的任务,这已是N层架构应用系统之外的论题了。
三、系统的可规模化
    为了保证系统具有尽可能好得可扩展性达到可规模化的特性,在N层架构应用系统中采用两级可扩展的设计。
    1.Internet上的可规模化
    第一级可扩展性在Internet网上实现,如下图所示。
    

图表三、Internet上的可规模化机制

  为了达到这一级的可扩展性,可以在Internet上布署多个Web Server,这些Web Server使用完全相同的软件系统,提供完全相同的服务功能。Web Server都直接连结到Internet上,都是在Internet范围中可访问的,它们各自拥有不同IP地址。Internet上所有的客户请求将由DNS/Web Redirector调度,分摊到这些Web Server上,这样每一个Web Server的负载就得到控制以保证服务系统的响应性能。
  DNS/Web Redirector在实现这种负载调度时有两种方法,一是使用DNS技术,一是使用HTTP Redirect技术。使用DNS技术时,所有的Web Server将在Internet上注册一个共同的域名,DNS/Web Redirector上将运行DNS服务,提供对这个域名的解析服务。通过配置DNS服务器可以使得其在响应每次对这个域名的解析请求时给出不同IP地址的响应,这个IP地址就是所有这些Web Server中的一个。这样所有用户的访问请求就被分摊到不同的Web Server上了。使用HTTP Redirect技术时,在Internet上注册的域名将被解析到一台特定的主机上Web Redirector。域名解析的功能由系统之外的Internet服务提供,所部署的所有Web Server则无须拥有域名。在Web Redirector运行Web服务,并将其缺省主页指定为一个CGI(或其他的Web Server扩展技术,如ISAPI, NSAPI,Servlet)程序上,该程序仅回应一个HTTP的Redirect命令。通过给出不同的Redirect命令就可以将用户的访问请求转移到已布署的Web Server中的一个上,以达到分摊负载的目的。
  在使用上述调度技术时,一种简单的调度算法就是依次将访问请求转移到不同的Web Server上,更为优化的方法是,各个Web Server实时将自己的负载情况反馈到DNS/Web Redirector上,这样可以实现智能的负载调度。
    2.Intranet上的可规模化
    另一级的可扩展性在Intranet上实现,如下图所示。
    

图表四、Intranet上的可规模化机制

    这一级的可扩展性的关键在于使用iBus技术。由于Web Server + Web Connector只处理连结的维持和数据包的转发,它对连结数量的处理能力是较强的。如果具体业务中的处理是一些耗时的运算,Application Server的服务能力就成为系统性能的瓶颈。由于Web Connector与Application Server之间的数据交换是通过iBus来完成的,因此可以在iBus上布署多个具有完全相同软件系统的Application Server来分摊这些业务处理的工作以达到提高系统整体性能的目的。iBus的订阅/发布、广播发送等机制使得系统的可扩展性得到很好的保证。 当数据库是用于信息发布的只读模式,多份重复布署仍然可用于提高系统的整体性能。若是业务数据库,操作中存在对数据的修改时,数据库的多份重复布署将会导致数据一致性的问题,这时提高性能的方法是将数据根据不同的业务类型分到不同的数据库中去。这时整个系统的结构如下图所示。

 

    图表五、双总线体系结构

    四、用户端与Web Connector间的连结维持
    1.客户端浏览器软件结构
    客户端使用浏览器,其软件层次结构图示如下。
    

图表六、客户端的软件层次结构

    Dynamic HTML可以很好地进行公开信息的发布,通过HTML Form机制可以从浏览器中得到用户检索等简单操作的输入信息。对于无须身份认证、访问控制的内容,在Web Server上可以使用通常的CGI技术获取用户的请求、查询条件,通过Web Connector还可以使用应用服务其提供的后台服务,结果使用HTML方式描述,并可直接回送到客户端的浏览器。如果进一步使用Applet技术,还可以在客户端实现更为友好的交互式显示模式。无论是使用DHTML技术还是HTML Form加上Server方扩展(如CGI, ISAPI, NSAPI, fastCGI和servlet等)。它们适合处理的业务都是每次请求/应答基本独立,相互无关联的情况。对于一些更为复杂的应用,要求前后操作具有相关性,客户与服务器端各自保持状态的变化且状态是相关的。在这种情形之下,更好的解决方案是将客户端的所有操作保持在一个Applet中完成,由Applet直接与Web Server交互数据来完成请求/应答数据的交互。
    2.Web服务器软件结构
    使用Applet作为客户端的用户界面,很容易就可以实现身份认证、访问控制等业务系统中通用的功能。在此情形下Applet直接与Web Server通信,必须透过Web Server后Applet才能访问后台的服务系统。由于Web Server在数据传输时是使用HTTP协议的,而HTTP协议的设计就是面向无连接服务的,因此在HTTP协议上如何解决连接保持的问题就显得至关重要。标准的Web Server本身并不提供连接保持的功能,因此必须使用Web Server Extention技术通过Web Connector来实现连接的保持和管理。Web Server与Web Connector的关系如下图所示。

图表七、Web Connector软件模块结构

  所有来自客户端的请求(浏览器和Applet)都首先发送给Web Server(HTTP Daemon),然后由httpd启动相应的CGI/servlet扩展,CGI/servlet模块仅对上传的数据进行简单的检查和打包工作然后就传给Web Connector Daemon,CGI/servlet模块本身并不处理连接,它是以一种无连接的方式转发一个请求再回送应答。连接的维持和记录由Web Connector Daemon建立起连接记录表来完成。
    3.逻辑连接的维持
  基于业务的请求/应答交互在Client和Server间是通过HTTP协议完成的。HTTP是一种无状态保存的协议,实际业务中需要有状态保存和逻辑连接维持的需求。这时在服务器WCD上要解决的一个问题就是,当网络或客户端程序出现异常、错误而导致非正常退出时,WCD要能够完全释放为保持逻辑连接所占用的所有资源。解决这一困难的方法是使用心跳信号(Heart beat signal),Browser端的Applet定时发出心跳信号,WCD则定时检测,超时后就关闭此逻辑连接并释放所有资源。
  在企业级应用中,HTTP协议保证了一次请求/应答交互的完整性,客户端和服务器各自运行着自己的状态机,这两个状态机之间可以建立起逻辑连接来。合理地设计业务处理的交互协议,可以在逻辑连接上保证业务的完整性。
  另一方面,维持逻辑连接的工作可以是与具体业务操作无关的。这也使得Web Connector Daemon在实现时具有通用性,WCD仅对收发的数据包做语法的处理,而与具体业务相关的语义操作则是由应用服务器来处理的。
   
    五、Application Server(应用服务器)
    1.无连接的服务模式
  应用服务器在提供其业务服务时采用无连接的模式。在一次请求/应答的交互过程中保持连接,在不同的请求之间不存在连接的概念。由于在一次请求/应答过程中连接的可靠性是得到保障的,因此,只要合理地对业务功能进行划分后,就可以解决业务系统中常见的业务完整性问题。另一方面,无连接的服务模式具有更好的服务性能,由于服务器没有连接维持的开销,即使是应用负载较大的情况下服务器仍然能保证较好响应性能。
    2.应用系统群集
  每一个应用服务器都在iBus上发布自己提供的一系列服务。对于将来构造的应用系统在提供新的服务时,它完全可以是建立在老的应用服务器所提供服务的基础之上的。这样在一个服务器群集的框架中,不同的应用服务器可以相互提供服务,每一个应用服务器是完全可重用的。构建这样的系统群集时,对业务功能的划分是十分重要的。
       
    六、专业化的开发工具 - C++,Java
    企业应用系统要求软件系统能够达到企业强度,为保证大型应用系统在可靠性、容错性等方面要达到企业强度,满足企业业务运作的要求,作为系统开发工具必须使用专业化的开发工具。C++,Java是业界公认的专业化开发工具。专业化的开发工具对开发人员的素质要求较高,但它也是高质量具、有企业强度软件的根本保证。快速开发工具虽然在其简单易用,快速开发上具有优势,但也正是这些因素使得它们在功能上、灵活性和效率上受到一定的限制。对于大型应用系统软件,核心编程工具所生成的执行代码的效率对整个系统显得特别重要。过低的执行效率导致大型软件系统很难使用的现象并不少见。功能强大的开发工具是最终系统功能强大的基本保证。
    业界多年来的传统与经验表明,C++作为一种系统级的专业开发工具,无论是在功能强大上还是在运行代码的执行效率上都有十分优异的表现。但是在多年的发展中,也使得C++在跨平台、可移植性上产生了一些缺陷。Java正好弥补了这一缺陷,Java使用虚拟机技术非常好地解决了跨平台一致性的问题,它是一种真正的跨操作系统平台的开发工具。Java语言本身是一种通用目的的编程语言,在功能上它完全可以胜任系统级应用程序开发的要求,人们常常质疑的是其执行代码的运行效率。Java程序在其发展的初期其执行效率远比C++程序要低,但是若我们观察其发展趋势则可以看到Java程序在起执行效率上在很快地提高,目前它在许多方面与C++程序的执行效率相比已没有巨大的差异了,从发展的角度来看,可以预计不久Java程序在运行效率上就能接近C++程序了。

正是基于上述的原因,我们选择C++和Java作为主要的开发工具。这样既能保证应用系统的企业强度,同时又兼顾到了系统在跨平台一致性和运行效率两方面的要求。
   
    七、 N层架构应用系统的优势
    N层架构应用系统体系是完全面向企业级应用系统的。相对于传统的应用系统体系结构,它具有以下的优势:
    1.信息引擎架构
      信息引擎是位于整个系统最重要的应用服务器的核心。信息引擎使得数据库系统的具体细节对应用透明,同时它也提供了一个信息汇入的标准接口,这使得与老旧系统、第三方系统的结合较为容易,同时不会影响系统的其他部分。这样整个系统具有非常好的灵活性。另一方面,信息引擎的通信功能是建立在Internet的TCP协议之上的,TCP协议本身就非常好地提供了通信时数据的可靠性和容错性,信息引擎在通信层还提供了数据加密的接口,这样通过提供加密模块系统在信息数据的安全性上有非常强的保障。
    2.全面面向Internet
      在客户端用户界面使用浏览器,GUI界面操作标准化,客户端可以达到零部署开销的目标。系统在通信协议上完全使用HTTP协议,而Internet上最为流行和广泛使用的协议就是HTTP,并且在可预见的将来HTTP仍将在Internet上被广泛使用。
    3.系统性能可规模化
      系统性能的可规模化是企业应用系统所必须的,这也是应用系统能具有长久使用期限的关键因素。
    4.系统功能可规模化
      使用信息引擎架构来发布系统所提供的服务,这使得应用系统具有可重用性,能够形成大规模协同工作的软件系统群体。
    5. 系统维护方便
      由于应用系统的应用逻辑完全集中在应用服务器一级实现,客户端使用标准的浏览器,这对于系统的部署、维护和升级都是十分方便的。
    6. 系统具有企业应用强度
      由于系统开发选择了严肃的大型开发工具,C++、Java等。这为系统达到企业应用强度提供坚实的保障。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值