




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
现代软件工程 九. 软件体系结构模式2,中国传媒大学计算机软件学院 研究生课程 主讲教师:扈文峰,1. 客户机/服务器结构(C/S),1.1 客户机/服务器概述 一个软件系统整体被分为两个逻辑上分离的部分,每一部分充当不同的角色、完成不同的功能。一般地,客户机为完成特定工作向服务器发出请求,服务器的任务是处理客户的请求并返回结果。 常见的例子有:操作系统的内核与外层之间、在通过网络连接的物理上分离的计算机之间等,都属于C/S结构。 随着网络特别是国际互联网的发展,允许应用程序分布在多台计算机上共同完成统一任务的C/S结构获得了极大的应用。由开始单纯的“客户界面/数据库服务器”的两层结构,逐渐分离出应用逻辑服务器、WWW服务器等,形成更为复杂的多层C/S结构。即使在两个服务器的连接之间,也是一个充当客户机,一个充当服务器。参见下图。,客户界面,数据服务器,两层C/S结构,客户界面,数据服务器,应用逻辑服务器,三层C/S结构,客户界面,应用逻辑服务器,数据服务器,WWW服务器,四层C/S结构,1.2 客户机/服务器的结构分析,1.2.1 客户机/服务器的组成 客户机/服务器系统是两个独立的逻辑系统为完成特定任务而形成的单向协作关系。 客户机通常由以下部分组成: 用户交互界面(可选); 请求表达; 服务代理; 通信。,服务器通常由以下部分组成: 服务器接口; 调度管理; 事务处理计算; 共享资源管理; 通信。 客户机和服务器之间具有通讯连接机制,并遵循公共的通讯协议,包括: 请求的表达; 返回结果的表达; 连接关系和连接状态的表达。,1.2.2 各个组成部分的责任 客户的用户界面:负责接受用户的输入、提交用户的操作请求、显示操作请求返回的结果。 请求表达:把用户的操作请求转换为合乎通讯协议的表达形式。 服务代理:是服务器在客户方的代理部件,客户通过它提出请求、获得返回信息、掌握服务器的工作状态。 通信部件:负责建立和保持客户与服务器之间的连接。, 共享资源管理:是服务器内部维持的内部公共信息和其他资源,它为操作请求的实现提供信息的资源。 调度管理:根据客户的请求和内部的工作状态,管理刻画请求,调配系统资源,快速高效地完成操作请求处理。 服务器接口:体现了服务器所能够对外提供的操作服务,是客户与服务器连接的桥梁。 事务处理计算:负责完成接口所描述的各种计算和处理。,1.2.3 客户机与服务器之间的通信 如果客户机和服务器都配置在同一台计算机上,客户机与服务器之间的通信连接可以通过消息、共享存储区和信号量等方法实现。 如果客户机和服务器分布在不同计算机上,它们之间的通信就需要通过网络了。 网络间的进程通讯首先要解决的是“进程标识”! 在同一台机器上,不同的进程可以用进程号作为唯一标识。但在网络间,各个机器独立分配的进程号就不能作为不同进程的区别标识了。要在网络的多台机器上区别进程,必须需要机器的网络地址和端口(Port)号的参与。,套接字(Socket)是两个进程连接的端点。每个套接字都有相应的套结字地址,是由一个因特网地址和一个16位的整数端口组成,用“地址:端口”来表示。 当客户发起一个连接请求时,客户端套接字地址中的端口是由内核自动分配的,称为临时端口。然而服务器套接字地址中的端口通常是某个知名的端口,是与服务对应的。例如,Web服务器通常使用端口80,而电子邮件服务器使用端口25,等。,所以网络间进程通信的全局唯一标识需要用一个三元组:(协议,本地网络地址,本地端口) 这成为半相关。完整的网络间进程通信连接,由客户机和服务器组成,需要一个称为全相关的五元组来标识: (协议,本地网络地址,本地端口, 远地网络地址,远地端口号) 以下以Unix中为例,说明客户机/服务器通过使用网络套接建立连接的时序关系:,socket(),bind(),listen(),accept(),read(),write(),socket(),connect(),write(),read(),服务器,客户机,等待服务请求,处理服务请求,建立连接,服务请求,服务响应,产生一个soket,标志着一个进程的产生,将本地soket地址(包括本地网络地址和本地端口)与创建的soket联系起来,即将本地的soket地址赋予soket,以指定半相关。,指示服务器进入等待接受状态,这一对系统调用合作完成客户机和服务器之间的通信连接,以缓冲方式发送待传送的信息,以缓冲方式接受传送来的信息,1.3 客户机/服务器的连接,1.3.1 客户机与服务器连接的特征 客户与服务器间的通信是通过定义的接口实现的。 (2) 客户对服务器的请求时通过特定的词法和语法形式表达的。 (3) 从客户到服务器是以请求信息为主;从服务器到客户时以返回信息和服务器状态信息为主。 (4) 客户的请求时在客户端经过打包后传送给服务器的; (5)在服务器端,对接受到的信息进行解包分析,取出有效的信息,形成对请求的服务调用。,1.3.2 连接发生的检测 服务器不可能预测客户端何时发生连接请求。显然,服务器通过循环查询的方式检查连接的到来是不恰当的。应该通过类似中断请求的方式激发和控制连接。 客户机/服务器的连接是通过“进程等待”和“网络请求中断”来完成的。 在服务器端有一个守护进程(Daemon),也称为服务器进程,它随系统启动而运行。当没有客户请求时,守护进程处于等待状态。每当有一个客户请求到达,服务器进程立即响应并产生资源分配和执行处理,然后回到等待状态,接受下一个请求。,1.3.3 连接机制 客户和服务器之间的连接方式有两种:同步和异步! 远程过程调用:位于两台计算机上的两个软件部件必须通过良好定义的接口进行通讯,这些接口可以是系统中的过程(函数),因而造成了可以调用其它机器上的函数的假象,这就是由“远程过程调用(RPC)”和其它机制实现的。 同步请求:客户通过远程过程调用向服务器接口发出请求后,往往立即进入等待返回结果状态,并且在未得到返回结果之前,客户一直处于等待状态,不执行任何自身的出程序逻辑。 异步请求:客户的请求一旦发出并得到服务器的确认,客户立即返回去执行自身的其它程序逻辑,待到服务器完成请求的操作后,才把结果通知客户。,serverRequest() (3) ,(4) (5) respondClient(),(2),客户请求的异步响应,serverRequest() (6) ,(3) (4) respondClient(),(2),(5),客户请求的同步响应,1.3.4 连接协议 客户和服务器之间传送的只是字符信息。该信息的意义需要进行分析处理,根据句法形式转达特定的含义。 例如,远程过程调用请求,如同程序中函数和过程的声明一样,需要提供调用的名称、执行方式、参数的个数、顺序、类型、值以及返回的类型。 在更广泛范围应用的客户机和服务器中,需要采用更为标准化的表达。目前可使用的至少有三类协议。一是在数据库系统中得到广泛应用的SQL查询语言;二是远程过程调用规范RPC/LPC;三是根据应用需要设计的用户语言。,1.4 客户机/服务器的运行机制,1.4.1 服务器的任务调度 服务器调度是解决多客户和多请求同时执行带来的诸多问题的。 作为独立工作的服务器,它必须做好准备,能够同时接受和处理多个相同或者不同的请求。如果服务器已经无能力处理新的请求,它必须以一定的策略建立等待队列或者通知客户不能立即处理请求。 目前基于服务器的应用程序所使用的操作系统大多数是多任务的。这样,服务器利用多进程或者多线程机制,可以方便地建立起多客户多请求情况下的复杂调度问题。,存在两类调度方式:有等待队列和无等待队列。无等待队列方式假设服务器的进程和线程资源是无限的,足够为每一个客户请求建立其独立的处理进程或线程。有等待队列方式假设服务器的可用进程数或线程数是有限的,当同时发生的客户请求超过此数目时,请求被放入等待队列,或由服务器通知客户暂时不能进行处理。,1.4.2 进程方式调度 在服务器端建立一个岁系统启动而运行的服务器主进程,它含有服务器的对外接口以及从事管理的共享数据和操作服务。当没有客户请求时主进程处于等待状态。每当有一个客户请求到达,主进程立即产生一个字子进程,然后回到等待状态,由子进程响应请求,处理完请求后撤销子进程。 有时将主进程称为主服务器(Master),它负责接受请求并调度响应任务的子进程;子进程称之为从服务器(Slave),它只执行特定的响应任务。 进程具有两个特征:代码执行和资源所有权。是多任务系统中的控制机制。但是进程会消耗大量的计算机资源,过度使用进程会造成资源紧张和效率低下。,1.4.3 线程调度方式 在服务器端仍要建立一个随系统启动而运行的服务器进程,它含有服务器的对外接口以及从事管理的共享数据和操作服务。当没有客户请求时主进程处于等待状态。每当有一个客户请求到达,主进程立即产生一个线程,然后回到等待状态,由线程响应请求,处理完请求后撤销线程。 线程可以看成轻量级的进程,它是程序中的一个函数的执行。所以线程比进程所消耗的资源要小得多,但同样可以产生并发性,处理多个请求的发生。所以采用线程的服务器运行效率和速度要高于进程。,1.4.4 线程池调度方式 线程的产生和撤销也占用时间和空间。为此通常采用线程池的工作方式。 这样,在支持线程池的服务器中,服务器进程除了等待请求并分配任务外,还管理一个线程数量有限的线程池和一个请求队列。线程池中的线程是在系统启动时一次性创建的,其中每个线程执行什么任务、为哪个客户请求服务,是由服务器进程的主线程管理的。 当客户请求到来时,主线程根据线程资源的负荷情况,分配一个空闲的线程,指派一个执行任务,使其运行以响应客户请求。响应结束后,线程变为闲置状态,等待新请求的到来和主线程的任务分配。这其中,不发生线程的创建和撤销,只有线程状态的变化。 当同时发生请求的数量超过线程池中线程的数量时,请求进入等待队列。,2. 实时控制系统,2.1 实时控制系统概述 举例: 飞船发射飞行控制系统; 导弹攻击跟踪系统; 病人监护系统; 工业机器人。 等等。 这类系统的共同特点是:不断循环执行对监控目标的检测、计算和控制。检测器不断地检测环境信息的变化,并把数据传送给控制器。计算器在考虑目标设定和外来干扰的情况下,经过快速地计算得到控制信息,并把它交给执行器。执行器按照控制信息进行动作调整,以实现系统设定的目标。参见下图。,这个系统的另外两个特点是:整个循环周期执行的实时性和计算的连续性。实时性要求系统各个环节执行的速度要足够高。连续性要求各个部分能够重复、快速地运行,而始终维持系统工作的正确。 根据目标设定的方式的不同,这类系统又分为跟踪和稳态控制两种。 稳态控制的目标是确认不变的,例如温度控制。 跟踪控制的目标是随着环境而不断发生变化的,例如导弹攻击。,计算器,执行器,被控对象,设定目标,检测器,2.2 系统结构,系统的一般结构如下图,说明如下。 检测器1到n是系统的输入信息。这些信息被采集器1到n以特定的工作方式传送到系统内部。 计算器按照一定的方式被触发执行,在设定目标的参与下根据规定的处理方法,完成对所有采集信息的计算,获得对输出的控制信息。 输出控制信息被送到各个执行器1到m,实现对系统对象的控制。 系统的实际运行状态信息又被各个检测器1到n获得,作为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效开发流程2025年考试试题及答案
- 现代社会中的编程语言选择与应用试题及答案
- 吉林省长春市第二实验学校2025年数学八下期末达标检测模拟试题含解析
- 社会实践活动在幼儿园的开展计划
- 教学资源共享与借用策略计划
- 湖北省黄冈市麻城市思源实验学校2025届八下数学期末综合测试模拟试题含解析
- 2024年宁夏开放大学辅导员考试真题
- 2025届福建省南安市柳城义务教育小片区八年级数学第二学期期末质量跟踪监视试题含解析
- 2024年黑龙江省体育局下属事业单位真题
- 黑龙江省七台河市名校2025届八下数学期末教学质量检测模拟试题含解析
- 病假医疗期申请单(新修订)
- 95598工单大数据分析及压降策略
- 《游园不值》-完整版课件
- 钻孔桩钻孔记录表(旋挖钻)
- 660MW机组金属监督项目
- 大连银行招聘考试最新笔试复习材料题目内容试卷真题复习
- 卷烟纸生产工艺
- JBK-698CX淬火机数控系统
- 肩关节镜下肩袖修补术的护理查房ppt
- 回旋镖运动轨迹的模拟
- 《康复医学》PPT课件(PPT 105页)
评论
0/150
提交评论