应用平台体系结构

来源:互联网 发布:影响外汇的重要数据 编辑:程序博客网 时间:2024/05/01 17:08

计算机研究生开放研究 《基于多层结构的网络游戏平台的研究与应用》 美国GeneChiu基金资助

多层结构的网络游戏平台的研究与应用研 究 生: 匡 华

第三章 应用平台体系结构

3.1 C/S模式3.1.1 C/S工作原理  C/S结构,即Client/Server(客户机/服务器)结构,这一概念最早用于描述软件的体系结构,表示两个程序间的关系,一个是提出请求的应用程序,另一个是服务程序。从概念上讲,C/S模式是一种特殊的协作处理模式,整个应用程序分布于客户机和服务器上,两者都参与一个应用程序的处理。C/S模式把系统分成两个基本组成部分:  客户机(Client):面向最终用户,实现各自业务处理、提供人机交互界面;  服务器(Server):负责有效地管理系统资源,并提供某项服务功能。 C/S模型方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。这一套惯例包含了一套协议。它必须在通讯的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称的。在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。一个对称协议的例子是Internet中用于终端仿真的TELNET。而非对称协议的例子是Internet中的FTP。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在“客户进程”和“服务进程”。  一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被“惊醒”并且为客户提供服务一对客户的请求作出适当的反应。这一请求/相应的过程可以简单的用图3.1表示。虽然基于连接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过数据报套接口提供的。  图3.1 客户端/服务器的结构3.1.2 TCP工作机制  在C/S架构中,客户端和服务器之间的网络层通信协议是IP,传输层通信协议是TCP和UDP,TCP是面向连接的,在基于不可靠的IP服务基础上,提供可靠的传输层服务,保证数据一定传送到接收者;而U DP提供的是不可靠的无连接数据报传输服务,因而可能出现UDP报文丢失、重复、乱序的错误。在大部分C/S架构中,一定要保证数据的可靠传输,因此一般都采用TCP作为传输层协议。TCP在通信会话中提供几个重要作用。可以认为它是多个应用和网络之间的联络。其功能包括: ·多路复用多种应用数据。 ·测试所接收数据的完整性。 ·顺序化乱序接收的数据。 ·对成功收到数据做出应答。 ·速率一适应的流控(通过TCP窗口大小)。 ·定时功能。 ·重传在传输过程中损坏或丢失的数据。TCP协议有几个特点: 1. 多路复用数据流 TCP是用户应用与许多网络通信协议之间的接口。TCP必须能同时接收多个应用数据,TCP把它们打包到数据段中,之后传给IP。相似的,TCP必须能同时接收多个应用的数据。 TCP必须跟踪记录到达的报文要转发到的应用程序。这可以通过端口来实现。TCP段中既有源应用端口号又有目的端口号。另一个经常使用的术语是套接字,虽然TCP头中没有套接字域。套接字由驻留在主机上的特定应用端口号和机器IP地址联合构成。因此,套接字描述了惟一的主机和应用。“:”号把两个号分开。比如,套接字10.10.10.10:6666标识了主机10.10.10.10的应用,其端口号为6666。 2. 测试数据的完整性 封装在TCP段中的数据经过TCP执行的数学计算,并把结果放在TCP头的校验和域中。一旦数据到达目的地,对接收数据执行相同的数学计算,产生的结果应该和TCP头中存储的结果相同。如果二者相同,有理由相信数据没被改变过。否则,就要给源主机发一请求,要求其重发一份数据拷贝。 3. 重新排序 到达目的机的报文段经常是乱序的。其中有许多原因,比如,在一个利用率非常高的网络中,路由协议很可能对报文选择通过网络的不同路径。这会导致数据段乱序到达。另一种情况是,报文在传输过程中可能丢失或损坏。因此,接收应用程序所需的数据序列会被丢弃。目的机器的TCP协议会缓冲接收到的数据段,直到能把它们正确地重新排序。 通过查看TCP头中的序列号域可以完成这个任务,重新排序就是基于这个域对接收数据段的数学排序。 4. 流控 TCP会话中的源和目的机器称为对等实体。每一对等实体有对流向其物理缓冲中数据流的控制能力。流量控制使用的是TCP窗口大小。源和目的机的窗口大小通过TCP头进行通信。 任何一台主机将被所收数据淹没时,会减小发送机的速率。这可以通过通知其新的窗口大小即可,如果机器的缓冲完全被填满,它就会发送一个有关最后收到数据的应答报文,其中新的窗口大小为0。这样会有效地使发送停止,直到拥塞的机器能清理掉其缓冲。它所处理的每一段必须被应答,使用应答,可以通过重新设置大于0的窗口尺寸来启动发送。 虽然这个简单的机制能有效地调整两台机器之间的数据流,但是它只能保证通信的端系统不会被接收的数据所湮没。窗口尺寸自身不会考虑网络上存在的拥塞情况。网络拥塞意味着报文到达目的地的时间比通常情况长。因此拥塞管理一定是网络上时间的函数。TCP通过计时器的使用实现拥塞管理。 5. 计时机制 TCP为几个关键功能使用计时控制。每次传输一个数据段时,设置一个计时器。假如计时器在接到应答之前停止(就是说,减少到0),数据段就被认为己丢失。因此,会重传。计时器可以间接地管理网络拥塞,其方法是当超时出现时减慢传输率。理论上讲,当超时出现时才减小发送速率,因此,TCP不能很好地管理网络拥塞,但它会减小自身对拥塞的影响。 源机器会使用一个坚持(Persist)计时器周期性地查询目的主机的最大窗口尺寸。在理想世界中,从不需要Persist计时器,因为每个应答会包含窗口尺寸。然而,有时网络确实会丢失数据。如果一台机器发生了缓冲上溢问题,并发回一个0窗口尺寸的应答,传输节点会中止发送。但是,如果后序非0窗口尺寸的应答丢失,发送会话会处于危险境地。Persist计时器通过周期性的询问窗口大小来保证这种情况不会发生。如果查询仍不能得到窗口大小,TCP协议会重新设置连接。 另一个计时机制称为最大段生存时间(Maximum Segment Lifetime MSL)。MSL使TCP机器识别已经在网络中传输了很长时间的因此己被替换了的数据报,接收到MSL中止的数据报被简单抛弃。 6. 应答接收 如果ACK被设置,目的TCP机器必须要对接收到的特定数据做出应答。考虑到TCP几乎总是用于可靠模式,因此ACK不被设置的情况很少见。 没被应答的数据段被认为在传输过程中已丢失,并被重传。重传必须在源和目的机器之间配合进行。3.2 B/S模式3.2.1 B/S工作原理  B/S(浏览器/服务器)模式是一种以Web技术为基础的新型的系统体系结构。B/S系统采取请求/响应模式,首先由浏览器发起请求,以URI(统一资源定位符)的方式向服务器申请资源。如果是静态资源,比如一个纯HTML格式的网页,web服务器直接向浏览器返回该网页内容;如果是动态资源,web服务器会预先对它做出相应处理,同样返回HTML格式的内容。浏览器对HTML内容进行语法解释并显示,这样就完成了一次过程。 浏览器和服务器之间通过HTTP协议进行通信,HTTP协议是无状态的,浏览器每次向服务器请求资源时都会主动建立连接,服务器返回结果后双方即断开连接,所以对于服务器来说,在处理浏览器请求时,根本不知上一次请求处理状况,这和传统的C/S模式有很大区别。在这个过程中,作为客户端的浏览器所做的工作非常有限,只要负责对返回的HTML内容进行处理,我们知道HTML是一个标准的标注语言,任何浏览器都能阅读和显示。在这个意义上说,B/S系统的客户端是通用的,当我们修改应用系统时,不需对客户端进行更新,而且许多操作系统都自带了浏览器,意味着我们可以不用去关心客户端。  所以B/S系统几乎所有的复杂性都在服务器端,在一个典型的B/S系统中,绝大多数的网页都是动态的,服务器要经过相应的处理并把它转化为HTML格式的内容,才能被浏览器识别出来,这个处理过程随着服务器不同而有很大差别。当前主流的服务器动态资源处理技术基本有两种:  1.解释型  每次客户请求资源时,服务器解释执行网页中的脚本代码,结合网页中的HTML标记返回给用户,ASP和PHP等都属于这种类型。  2.编译型  当客户第一次申请时,服务器先编译网页,然后执行代码,后续的客户请求就直接执行编译后的代码,JSP就是这种类型的代表。  从开发效率看,解释型的方式要优于编译型的;但性能上,后者要远远超过前者,所以两者都有很大的市场,在实践中都被普遍使用。3.2.2 HTTP工作机制 在B/S架构中,浏览器和服务器之间的应用层通信协议是HTTP(超文本传输协议)[41],所以理解HTTP协议的特点是B/S系统设计的基础。HTTP是WWW联盟制定的标准,用于分布式协作超媒体信息系统的快速使用协议,是通用的,无状态的,面向对象的协议,通过扩展命令(或方法),可用于类似的任务,如名字服务,分布式面向对象系统。公布的版本有HTTP 1.0、HTTP 1.1,下一代的HTTP协议HTTP-NG(Next Generation)仍在制订之中。HTTP协议有几个特点: 1. 客户/服务器工作模式 在HTTP协议中,作为客户的WWW浏览器与作为提供WWW网页数据服务的服务器之间传递请求,应答数据。一个服务器可接受和处理世界范围内多个客户浏览器的同时访问,一个浏览器同样也可访问世界范围内的WWW服务器。 2. 简单快速 作为在客户与服务器之间传输超文本数据的协议,HTTP只规定了少量的用以沟通信息的请求报文、应答报文,这比因特网上其它的信息服务系统如FTP,Telnet等都要简单。在HTTP中定义的几种请求方法中,要求WWW服务器必须实现的有GET和HEAD,而其它是可选的。在浏览器与服务器建立连接时,浏览器只需传递必须的请求,应答方法。 3. 传输数据灵活 虽然被称为超文本传输协议,HTTP实际上允许传输任意类型的数据对象,这功归于请求信息与响应信息中都具有的消息首部(message-header)。信息的内容就是关于被传递的数据的信息。 4. 易于扩充 作为一个公开发布使用协议,HTTP具有良好的,可扩充性,如前述,它传输的已不仅仅是超文本数据。在此基础上针对应用开发者的研究、开发要求,很容易地增加请求方法和响应状态,运行于用户定制的系统之中。经过扩充的服务器,能够响应原有标准的浏览器,也能够区别出用户自己开发的专用客户程序,做出相应的响应处理。 5. 无状态性 在HTTP 1.0及其以前的版本中,每一次请求,应答的内容、状态及完成情况不作为历史数据保留到下一阶段使用。有关客户机的状态信息、用户消息也不保留在服务器中。服务器的响应状态,运作情况也都不反映在客户本地计算机中。这样做的优点是HTTP服务器实现起来比较简单、程序规模小,大大加快了服务器响应速度,对于早期WWW注重于信息发布的情况是比较合适的。 6. 无连接性 HTTP协议建立在可靠面向连接的TCP报文传输基础上,无连接指的是在HTTP 1.0中,客户与服务器的每次TCP连接只处理一个请求:客户发起连接后传递一个请求,服务器解析该请求、返回应答数据后立即断开连接。这种方式的优点同样也是对HTTP服务器一方来说实现起来简单,避免服务器由于保持和维护过多的TCP连接而浪费服务器资源。 HTTP1.1对有些方面进行了改进,但总的来说,这些特性并没有多大改变。 可以看到,B/S和传统的C/S方式有很大差别。在B/S模式下,复杂性都在服务器端,客户端浏览器只负责用户界面,浏览器的本地处理能力和资源访问能力是非常有限的。而在C/S方式下,作为客户端的PC机除了界面显示,还具有很强的本地处理能力,并可以方便地获取本地及服务器上的各种资源。相对于C/S方式,B/S系统的客户端处理能力太有限了,再加上HTTP协议的无状态性质,所以B/S系统对设计开发者提出了更高的要求。3.3 C/S模式与B/S模式的比较  根据以上对两种模式的技术分析,可以看出两者都各有优势,下面对C/S模式和B/S模式的各自优势作一下比较:  C/S模式的优势:  1) 交互性强是C/S固有的一个优点。在C/S中,客户端有一套完整的应用程序,在出错提示、在线帮助等方面都有强大的功能。B/S虽然也提供了一定的交互能力,但与C/S的一整套客户应用相比是太有限了。  2) C/S模式提供了更安全的存取模式。由于c/S是配对的点对点的结构模式,采用适用于局域网、安全性比较好的网络协议,安全性可以得到较好的保证。而B/S采用点对多点、多点对多点这种开放的结构模式,并采用TCP/IP这一类运用于Internet的开放性协议,其安全性只服务器来保证。由于采用TCP/IP,必须采用一系列的安全措施,如构筑防火墙,来防止用户对企业内部信息的窃取以及外界病毒的侵入。  B/S模式的优势:  1) B/S模式简化了客户端。它无需像C/S模式那样在不同的客户端安装不同的客户应用程序,而只需安装通用的浏览器软件。这样不但可以节省客户机的硬盘空间与内存,而且使安装过程更加简便、网络结构更加灵活。假设一个企业的决策层要开一个讨论库存问题的会议,他们只需从会议室的计算机上直接通过浏览器查询数据,然后显示给大家看就可以了。  2) B/S模式简化了系统的开发和维护。系统的开发者无须再为不同级别的用户设计开发不同的客户应用程序了,只需把所有的功能都实现在WEB服务器上,并就不同的功能为各个组别的用户设置权限就可以了。各个用户通过HTTP请求在权限范围内调用WEB服务器上不同处理程序,从而完成对数据的查询或修改。  3)相对于C/S,B/S的维护具有更大的灵活性。当应用逻辑发生变化时,它再为每一个现有的客户应用程序升级,而只需要对WEB服务器上的服务处理程序进行修订。这样不但可以提高公司的运作效率,还省去了维护时协调工作的不少麻烦。如果一个公司有上千台客户机,并且分布在不同的地点,那么便于维护将会显得更加重要。  4)系统处理负载分布在WEB服务器上,WEB服务器的数量可以根据访问量进行扩展配置,采用CLUSTER结构方式。当用户数**多时,性能不会明显下降。  5) B/S模式使用户的操作变得更简单。对于C/S模式,客户应用程序有自己特定的规格,使用者需要接受专门培训。而采B/S模式时,客户端只是一个简单易用的浏览器软件。操作人员都无需培训,就可以直接使用。3. 4 三层及多层软件体系结构3.4.1 二层结构的退出  C/S软件体系结构,即Client/Server (客户机/服务器)结构,是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,C/S结构将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。  C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。但随着企业规模的日益扩大,软件的复杂程度不断提高,传统的二层C/S结构存在以下几个局限:  (1)在传统的二层C/S结构数据库应用中,客户端的机器执行应用程序,连接到后端的数据库服务器中存取应用系统所需资料,因为应用系统的企业逻辑都编写在客户端的应用程序中,造成客户端非常臃肿,且当应用系统需求改变时,所有在客户端的应用程序都必须改变,使维护成本太高。  (2)二层C/S结构是单一服务器且以局域网为中心的,所以难以扩展至大型企业广域网或Internet;  (3)软、硬件的组合及集成能力有限;  (4)客户机的负荷太重,难以管理大量的客户机,系统的性能容易变坏;  (5)数据的完整性与安全性难以维护[9]。因为众多客户端程序可以直接访问数据库服务器,那么,在客户端计算机上的其他程序也可想办法访问数据库服务器,从而使数据库的安全性受到威胁。  正是因为二层C/S有这么多缺点,因此,多层C/S结构应运而生。3.4.2 三层及多层结构原理  为提高数据的安全性与系统的可扩充性,可在两层模型的基础上考虑采用三层(3-tier)或多层(N-tier)设计模型,将数据库访问分布在一个或多个中间层。客户程序与数据库的连接被中间层屏蔽,客户程序只能通过中间层间接地访问数据库。中间层可能运行在不同于客户机的其它机器上,经过合理的任务划分与物理部署后,可使得整个系统的工作负载更趋均衡,从而提高整个系统的运行效率。  这些位于中间层的程序又称应用服务程序(Application Server),因为它们实际上表达了一个企业处理信息的主要业务逻辑(Business Logic),即企业的系统模型与功能模型,而客户程序仅实现图形用户界面,完成终端用户与业务逻辑之间的交互。从客户程序的角度来看,中间层将企业的所有业务逻辑抽象为更高层次的应用程序接口(API),客户程序则通过这些API构建整个企业的应用系统。与典型的两层模型相比,三层模型或多层模型可更好地支持对企业业务逻辑的集中控制与管理。  多层结构应用软件与传统的C/S模式下的两层结构应用软件相比,有着可伸缩性好、可管理性强、安全性高、软件重用性好以及节省开发时间等诸多优点。在Internet/Intranet环境下,这些优点显得更加突出。很多公司也提出了多层应用软件体系结构。三层结构的客户/服务器模型是一种先进的协同应用程序开发模型,这种方案将客户/服务器系统中各种各样的部件划分为三层服务,它们共同组成一个应用程序,这三层服务包括:   ● 客户端服务程序,称为表示层;   ● 业务服务和其它中间层服务程序,通常称为业务逻辑层(中间层); ●数据层(数据库)。  典型的三层结构如图3.2所示。 图3.2 典型的三层结构示意图  表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。它用于检查用户从键盘等输入的数据,显示应用输出的数据。为使用户能直观地进行操作,一般要使用图形用户接口,操作简单、易学易用。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑。  功能层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,在制作订购合同时要计算合同金额,按照定好的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。表示层和功能层之间的数据交往要尽可能简洁。例如,用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层,而由功能层处理过的检索结果数据也一次性地传送给表示层。  通常,在功能层中包含有确认用户对应用和数据库存取权限的功能以及记录系统处理日志的功能。功能层的程序多半是用可视化编程工具开发的,也有使用COBOL和C语言的。  数据层就是数据库管理系统,负责管理对数据库数据的读写。数据库管理系统必须能迅速执行大量数据的更新和检索。因此,一般从功能层传送到数据层的要求大都使用SQL语言。  这些层次并不一定与网络上的具体物理位置相对应,它们只是概念上的层,借助这些概念可以开发出强大的应用程序。使用这种方法设计应用程序,开发人员在网络上部署进程及数据时可以有相当大的灵活性,从而有利于实现最佳的性能、更好的安全性以及更方便的维护。中间层中包括提供业务服务和其它中间服务的部件,是联系用户服务和数据服务的桥梁,它们响应用户(或其它业务服务)发来的请求,执行某种业务任务,并对相应的数据进行处理。用户不需要直接与数据库打交道。在实际应用过程中,中间层部件通常可分为两个以上的层次。因此,该应用模型也被称为多层次结构。  三层C/S的解决方案是:对这三层进行明确分割,并在逻辑上使其独立。原来的数据层作为数据库管理系统已经独立出来,所以,关键是要将表示层和功能层分离成各自独立的程序,并且还要使这两层间的接口简洁明了。  如果将功能层和数据层分别放在不同的服务器中,则服务器和服务器之间也要进行数据传送。但是,由于在这种形态中三层是分别放在各自不同的硬件系统上的,所以灵活性很高,能够适应客户机数目的增加和处理负荷的变动。例如,在追加新业务处理时,可以相应增加装载功能层的服务器。因此,系统规模越大这种形态的优点就越显著。  在更复杂的多层体系结构中,“廋”客户与远程数据库服务器之间可以加入更多的中间服务器,如加入一个中间安全服务器或中间转换服务器,用于对不同平台数据进行处理。 分布式多层结构把整个应用系统的执行分成数个不同部分并且执行在不同的机器中。其中应用程序服务器作为中间层集中实现企业逻辑,协调多层之间的请求,并掌握数据集定义的全部细节和远程数据库服务器进行通信,这样客户端应用程序就重点放在显示数据和与用户交互上,客户端应用程序甚至都不需要知道数据在那儿。3.4.3 三层及多层结构的特点  与传统的二层结构相比,三层及多层结构具有以下优点:     (1)允许合理地划分三层及多层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性。  (2)允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。例如,最初用一台Unix工作站作为服务器,将数据层和功能层都配置在这台服务器上。随着业务的发展,用户数和数据量逐渐增加,这时,就可以将Unix工作站作为功能层的专用服务器,另外追加一台专用于数据层的服务器。若业务进一步扩大,用户数进一步增加,则可以继续增加功能层的服务器数目,用以分割数据库。清晰、合理地分割三层结构并使其独立,可以使系统构成的变更非常简单。因此,被分成三层的应用基本上不需要修正。   (3)三层及多层结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言。使之能并行地而且是高效地进行开发,达到较高的性能价格比;对每一层的处理逻辑的开发和维护也会更容易些。   (4)实现分布式数据处理。把一个应用程序分布在几个机器上运行,可以提供应用程序的性能,通过冗余配置还可以保证不会因为局部故障导致整个应用程序崩溃。  (5)有利于安全。允许充分利用功能层有效地隔离开表示层与数据层,将一些敏感数据功能部分封装在中间层,并授予不同访问权限,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,可以保证对数据的访问限制,这就为严格的安全管理奠定了坚实的基础;整个系统的管理层次也更加合理和可控制。

http://210.40.7.188/NEW/KH/0030.asp:原文链接;我希望更多的人能分享自己看过的计算机各类相关的理论文章。

原创粉丝点击