面向服务的计算和web数据管理第1章-分布式面向服务计算导引课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《面向服务的计算和web数据管理第1章-分布式面向服务计算导引课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 服务 计算 web 数据管理 分布式 导引 课件
- 资源描述:
-
1、1 1第1章 分布式面向服务计算导引1.1 计算机体系结构和计算范型计算机体系结构和计算范型 1.2 分布式计算和分布式软件体系结构分布式计算和分布式软件体系结构 1.3 面向服务的体系结构和计算面向服务的体系结构和计算 1.4 面向服务的开发与应用面向服务的开发与应用 1.5 讨论讨论2 2软件体系结构和分布式软件开发与执行软件的计算机系统的体系结构是相关的。本节介绍计算机系统结构以及各种计算范型。1.1 计算机体系结构和计算范型计算机体系结构和计算范型3 31.1.1 计算机体系结构计算机体系结构对于单处理器计算机,计算机体系结构通常指的是处理器的体系结构,它是软件和硬件之间的接口或者处理
2、器的指令体系结构Patterson2004。对于多处理器计算机,体系结构通常指的是指令和数据流。FlynnsTaxonomyFlynn1972将计算机体系结构分为四种类型:单指令单数据流(SISD),即简单的处理器系统;单指令多数据流(SIMD),例如向量或阵列式计算机;多指令单数据流(MISD),例如对同一数据流执行冗余计算并对结果进行表决的容错计算机系统;4 4 多指令多数据流(MIMD),由拥有自己的内存和控制器、算术逻辑运算部件以及输入输出部件的独立计算机系统组成的计算机系统。MIMD被看做是分布式系统,不同的分布式系统有不同的关注点,如图1.1所示。分布式计算关注用并行或(和)分布方
3、式表达计算时涉及的原理、方法以及技术。分布式软件体系结构关注的是软构件间的组织和接口。网络体系结构研究的是网络节点的拓扑结构以及连接。网络通信研究协议层,协议层允许节点之间相互通信并理解彼此之间的数据格式。有些研究者用操作系统区分分布式系统和网络。当一组网络节点有独立的操作系统时,分布式系统是内聚性的操作系统。5 5图1.1 分布式系统和网络6 61.1.2 软件体系结构软件体系结构一个程序或计算机系统的软件体系结构是指系统的一个或多个结构,结构中包括软件的构件、构件的外部可见属性以及它们之间的相互关系Bass2003。软件体系结构的设计并不意味着开发可执行的软件。相反,它被看成软件的概念模型
4、,是软件开发中的一个步骤。通过体系结构的设计,软件工程师能够做到:(1)分析设计满足需求的有效性;(2)考虑体系结构的各种方案,使设计容易变更;(3)定义构件间的接口;(4)降低建立软件的风险。7 7在设计算法和实现软件之前设计软件体系结构是很重要的,因为软件体系结构可以使对系统开发感兴趣的各方(项目相关者)进行通信。面向服务体系结构(SOA)是本书中的一个重要主题,在面向服务的体系结构中,明确地包括了三方:服务提供者、服务中介和服务请求者,每一部分独立进行算法设计和代码编写。软件体系结构强调早期的设计决策,这些决策对后续的软件工程工作以及系统的最终成功产生深刻的影响。8 81.1.3 计算范
5、型计算范型历史上,已开发出的编程语言很多,但只有数千种在实际中被应用。相对于独立发展和演变的自然语言,计算机编程语言之间有很大的相似性。它们彼此相似是因为如下原因:享有共同的数学基础(例如:布尔代数、逻辑);提供类似的功能(例如:算术、逻辑运算和文字处理);基于相同的指令集和硬件;有共同的设计目标寻找一种人类使用简单并且硬件执行效率高的语言。编程语言的设计者分享他们的设计经验。9 9但是有些编程语言彼此之间更相似,而另一些语言之间大不相同。基于它们之间的相似性或者范型,编程语言被分为不同的类。在编程语言的定义中,范型是表达计算或算法的基本规则、概念、方法的集合。主要的范型包括命令式、面向对象、
6、函数式、逻辑、分布式以及SOC。命令式计算范型,也叫做过程式计算范型,通过全部说明和全部控制被命名数据的操作并以步的方式表达计算。换句话说,数据或值最初被存储在变量中(存储单元),从内存读取,在ALU(算术逻辑单元)中操作,然后再存到相同或者不同的变量中(存储单元)。10 10最后,变量的值作为输出发送到输入/输出设备中。命令式语言的基础是基于存储程序概念的计算机硬件组织和体系结构(冯诺依曼机)(参见http:/en.wikipedia.org/wiki/Von_Neumann_machine的例子)。命令式编程语言包括所有的汇编语言和早期的高级语言,例如FORTRAN、Algol、Ada、P
7、ascal以及C。11 11面向对象计算范型和命令式计算范型基本类似,除了相关变量以及对变量的操作被封装在对象中。为了减少(简化)对象之间的交互,对象中的变量和方法(操作)的访问权限允许被定义为私有的。对象被看做程序的主要构造块,它支持继承、类层次结构以及多态。典型的面向对象程序语言包括Smalltalk、C、Java和C#。函数式计算范型,也叫做应用型计算范型,以数学函数表达计算。因为我们在很多数学课程中用数学函数来表达计算,所以函数式编程可能被认为容易理解和使用。12 12但实际上,由于函数式编程和面向对象以及命令式编程大不相同,而大多数程序员习惯于用命令式编程和面向对象编程编写代码,所以
8、转化到函数式编程就变得很困难。其主要区别是在函数式编程语言中没有存储单元的概念,每个函数用多个值作为输入(参数)并且返回单一的值(函数输出);返回值不能被存储供日后使用,它必须作为最终输出或者是作为另一个函数的参数值立即使用。函数式编程就是定义函数并组织一个或者多个函数的返回值作为另一个函数的参数。函数式编程语言主要基于将在第4章讨论的-演算。典型的函数式编程语言包括ML、SML和Lisp/Scheme。13 13逻辑计算范型,也叫做声明计算范型,用逻辑谓词表达计算。一个逻辑程序是事实、规则和问题的集合。一个逻辑程序的执行过程是把问题和给定的事实与规则库中的每一个事实和规则进行比较。如果问题找
9、到了一个匹配,则我们得到这个问题的肯定答案。否则,得到否定答案。逻辑编程包含发现事实、基于事实定义规则编写想解决的问题等内容。Prolog是唯一一个比较有意义的逻辑编程语言。所有编程范型都支持“小型程序”和“大型程序”。前者强调使用基本的编程结构,例如,顺序、条件分支和循环结构开发程序组件或模块;后者强调开发大型应用。14 14大型应用通常要求更多的人力和工作量,而且它们也被用在关键领域,比如,银行、电子商务、嵌入式系统和电子政务。另外一个重要的计算范型是基于构件的计算。这一范型强调的是用预先编写好的构件或模块构成大型应用。构件或模块往往是预先编译的程序单元,并在运行之前连接到应用程序。从概念
10、上讲,基于构件的计算并不是新的范型。面向对象计算被广泛认为是基于构件的计算,它的一个类或一个对象就是一个构件。一个名字空间(一组类)也可以被视为是一个构件。然而上述观点紧紧围绕着类的定义。15 15基于构件的计算有更为广泛的含义,它允许任何组件或模块被看成是一个构件,因此,基于构件的计算可看做一个不同于面向对象的计算范型。一个构件可以和一个对象一样小,也可以和一个应用程序一样大,而且构件的封装性很好。因此,在有些人看来,SOC是真正的基于构件的计算,服务被看做是构件。在他们的认识中,SOC基本上是基于构件的计算,但每个构件用开放标准说明。16 16分布式计算包括在多个逻辑和物理的处理器或者计算
11、机上执行的计算。这些单元相互协作沟通,完成一个完整的应用。计算单元可以是构件中的函数(方法)、构件或应用程序。在分布式计算范型中首先需要解决的问题是分布式单元间的并发性、并行计算、资源共享、同步、消息和通信。不同级别的分布式会导致不同的变化。多线程是一种常见的分布式计算技术,它允许同一软件中不同函数并发执行。如果分布式单元在对象级别,则分布式计算就是分布式面向对象计算。主要的分布式面向对象计算框架是由OMG(对象管理组织)开发的CORBA(公共对象请求代理体系结构)以及由微软开发的分布式构件对象模型(DCOM)。17 17面向服务计算(SOC)也是一个分布式计算范型,SOC在以下几个方面和分布
12、式面向对象计算不同:(1)SOC强调的是分布式服务(包括可能的服务数据)而不是分布式对象;(2)SOC明确区分开发责任、软件提供服务、服务中介,通过服务消费构建应用;(3)SOC支持库(公共或私有)中重用服务的匹配、发现和调用(远程或本地);(4)在SOC中,服务通过独立于平台和供应商的开放标准和协议进行通信。18 18图1.2 不同计算范型的特征19 19 值得一提的是,许多编程语言属于多种计算范型。例如,C是一个面向对象的编程语言。然而C几乎包括C的所有特征,因此C也是一种命令式的编程语言,我们可以用C去写C程序。Java是一个纯粹的面向对象的编程语言,也就是,语言的设计重点强调了面向对象
13、,但是它仍然包含许多命令式特征。例如:Java的基本类型变量使用值语义并且不从堆中分配存储单元。2020Lisp包含了许多非函数特性,Lisp和Scheme是函数式编程语言,但是它们也包含了许多非函数式特征,例如当涉及到输入输出时进行顺序处理。Prologs是一个逻辑编程语言,但是它的算术操作用的是命令方式。总而言之,这些计算范型往往互相重叠。例如,面向对象程序设计语言通常也被看做命令式程序设计语言、SOC语言,例如,Java和C#也是面向对象程序设计语言。因此,一个编程语言可以用不同的计算范型编写程序。C、C、Scheme和Prolog用于这些计算范型的介绍参见(Chen,2006)。21
14、21在分布式计算中,计算分布在多个计算单元(处理器或计算机)中,而不是局限在单一的计算单元中。实际上,当多核处理器的设计出现后,现在所有的大型计算系统都是分布式的。1.2 分布式计算和分布式软分布式计算和分布式软件体系结构件体系结构22221.2.1 分布式计算分布式计算软件体系结构描述了系统结构和功能在若干逻辑和物理计算单元上的分配。为一个应用选择合适的体系结构对于达到预期的服务质量是必不可少的。分布式计算经常要处理多层面的挑战,包括复杂性、通信和连接、安全性和可靠性、可管理性、不可预测性以及非确定性行为。Sun公司研究员提出的分布式计算的八个谬论(http:/en.wikipedia.or
15、g/wiki/Fallacies_of_Distributed_Computing)很好地表达了这些挑战:网络是可靠的;延迟是零;带宽是无限的;2323网络是安全的;拓扑结构不发生变化;有一个管理员;传输成本是零;网络是同质的。前四个谬论就是所谓的网络计算的谬论,是BillJoy和TomLyon在1991年提出来的。PeterDeutsch增加了后面的三个,这经常被称做是Deutsch的七个谬论。JamesGosline在1997年增加了第八个谬论。24241.2.2 N层体系结构层体系结构类似于OSI的七层网络体系结构,分布式软件体系结构通常是层次结构,其中的组件是用层来组织的,也称为N层体
16、架构。例如,复杂的商业软件可以组成一个五层模型:(1)表示层:图形用户界面的风格(GUI);(2)表示层的实现:用特定的编程语言编写GUI;(3)业务逻辑层:业务对象、规则和策略的实现;(4)数据访问层:业务逻辑和数据库的接口;(5)数据层:数据库。2525因为同一层或一些相邻层可以放在分布式系统的同一节点上,所以层次化设计非常适合于分布式计算,层次化设计的另一个优点是维护系统时的灵活性,每一层可以相对独立地进行修改。例如,当第二层,也就是表示层的实现发生变更时,从逻辑上看其他层不必作改变,用户仍然使用同样的接口,业务逻辑层也保持不变;从编程的角度来看,如果在修改层提供不同的用户接口,那么上面
17、的层可能需要改变。两层体系结构和三层体系结构是广泛使用的分布式体系结构。两层体系结构,也被称做是客户/服务器体系结构,应用程序分别被建模为服务器提供的一组服务以及使用这些服务的一组客户。2626客户知道服务器但是服务器不必知道客户。客户和服务都是逻辑处理,可以驻留在同一计算机或不同的计算机中。图1.3是一个客户/服务器体系结构的例子。为了对客户提供可靠的服务,服务器可以组成一个允许他们之间相互备份的联盟。该联盟对用户是透明的。数据库提供的数据服务对业务应用是非常重要的,数据库是这个体系结构中服务的一部分。2727图1.3 具有服务器联盟的客户/服务器体系结构2828客户/服务器体系结构可以进一
18、步被划分为瘦客户和胖客户的体系结构。在瘦客户体系结构中,所有应用处理以及数据管理都在服务器端执行。客户端只负责运行表示层的软件。在胖客户体系结构中,客户端软件实现了应用逻辑以及和系统用户的交互。服务器端只负责数据(数据库)的管理。客户/服务器体系结构联盟的进一步发展是虚拟化,它把多个服务看成是一个单一的虚拟服务,或者将一个服务看做多个虚拟的服务。每一个虚拟服务和实际的物理服务的使用方式是相同的。2929为了进一步提高资源的共享率,一个虚拟服务可以有多个租户,每一个租户共享这个环境以及环境中的资源。虚拟化和多租户是实现云计算的关键技术。三层体系结构由三个层次组成,如图1.4所示。每一层在一个单独
19、的处理器上运行。这是一个更加平衡的方法,它比瘦客户方法的性能好,比胖客户方法易于管理。三层体系结构也是一个伸缩性更好的体系结构,当需求增加时,可以添加额外的服务。3030图1.4 三层体系结构31 31图1.5是一个三层架构的网上银行系统的例子。图中的客户端包含ATM(自动提款机)的图形用户界面、POP(购买点)以及用户账户的Web访问。应用处理层安装在银行的IT中心,负责处理所有的请求。数据,例如账户信息和存款,存储在不同的服务器中进行管理。3232图1.5 三层架构的网上银行系统实例3333面向服务的体系结构可以实现成四层次的体系结构,如图1.6(a)所示,它包含表示层、应用层、服务存储层
20、以及数据管理层。然而,面向服务体系结构不被局限于这一架构,因为这种体系结构只有相邻层之间才可以通信。图1.6(b)以及(c)是实现SOA的两个可能的变种。3434图1.6 四层体系结构及其变种35351.2.3 分布式对象体系结构分布式对象体系结构不同于N层体系结构,在层次体系结构中服务器和客户端有明确的区别,而在分布式对象体系结构中客户端和服务器没有很明显的区别,每个分布实体都可以向其他对象提供服务或接收来自其他对象的服务。分布式对象体系结构在实现不同应用时更为通用。但和分层结构相比,它的设计和管理更为复杂,因为它允许系统设计者延迟决定在何处以及怎样提供服务。换句话说,这是一个开放的体系结构
21、,允许系统根据需求添加新的资源。3636用分布式对象体系结构构建的系统是灵活的和可扩展的。根据需要,通过对象在网络中的迁移重新动态配置系统成为可能(例如,使用同一种编程语言)。作为为一个逻辑模型,分布式对象体系结构允许开发人员组织和管理系统。在这种情况下,通过服务和服务组合,开发者更多地关注应用的功能。两个主要的分布式对象体系结构是OMG(ObjectManagementGroup)开发的CORBA(Co mmonObjectRequestBrokerArchitecture)和微软开发的DCOM(DistributedComponentObjectModel)。在CORBA中,对象通过一个称
22、为对象请求代理(ORB)的中间件系统通信,它也被称为软件总线,如图1.7所示。3737图1.7 CORBA体系结构3838 原则上,CORBA对象和C、C以及Java中的对象类似。类似于C,CORBA对象有一个用通用语言IDL(接口定义语言)描述的独立接口,对象的接口可以用任何编程语言描述。程序转换器可以用来转换接口代码,例如C和Java可被转换成IDL代码,因此用不同编程语言所写的对象可以相互通信。ORB通过用IDL语言写的存根程序处理对象之间的通信。服务提供者通过IDL存根程序使服务端口为大家所知。如果一个服务请求者调用服务存根程序,这个调用将转化为对服务提供者的函数的调用。3939支持分
23、布式对象体系结构的另一个平台是Java企业版(JavaEE)。Java消息服务(JMS)是连接Java对象的软件总线,位于因特网InterOrb协议(RMIIIOP)之上的Java远程方法调用(JavaRMI)提供了一个与CORBA通信的IDL接口。IIOP上的JavaRMI是由Sun和IBM联合开发的。JavaEE的对象也可以和微软平台通信。Java本地接口(JNI)可用来和C以及C#程序通信。DCOM(分布式对象构件模型)是微软在VisualStudio.Net之前开发的分布式软件开发框架。DCOM允许软件构件分布在多个互联的计算机上并相互通信。4040框架经过了几代演变。起初,分布式软件
24、开发框架被称为OLE(对象连接与嵌入),OLE也是一个分布式对象系统,然后被扩展到网络OLE,再到1993年的COM(构件对象模型),COM提供了对象间的通信能力。在演化为DCOM之前,在Windows2000中,对COM作了有意义的扩展,并被命名为COM。DCOM的所有技术由VisualStudio.Net集成或取代,VisualStudio.Net是一个集所有功能于一身的面向对象、分布式、面向服务的软件开发环境。41 41分布式对象体系结构是SOC的前身。它有许多SOC的特点。SOC明显的进步和成就包括:(1)所有主要的计算机公司都认可SOC标准、协议以及建立可操作服务的接口,接口与平台和
25、语言无关。在分布式对象体系结构中,CORBA和DCOM具有相似的功能和目标,然而,在这两种环境中开发的系统不具有互操作性,DCOM也是平台依赖的。(2)SOC明确划分了开发的职责:服务提供者开发服务,服务请求者用现有的服务建立应用,服务中介发布服务,并进行服务的匹配和发现。在分布式对象体系结构中,没有明确的职责划分,而且服务的发布和发现也没有外部机制。4242(3)用Web服务实现SOC能够利用互联网基础设施传输服务,采用相同的技术和标准,也可以用局域网建立私有的SOC应用。多线程是一个基本的分布式计算模型,允许程序员在函数和类级别上指定并行计算单元,这些计算单元是在相同或不同处理器上运行的独
展开阅读全文