您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 62中间件技术2 RPC和分布式处理环境
1中间件技术Middlewaretechnology第二章分布式处理及环境介绍赖永炫博士厦门大学软件学院2009.092主要内容分布式处理的概念远程过程调用RPC分布式计算环境(DCE)3什么是分布式处理分布式计算环境是在具有多地址空间的多计算机系统上进行计算和信息处理的软件环境;分布式软件系统是支持分布式处理的软件系统,它包括分布式操作系统,分布式程序设计语言及其编译系统,分布式文件系统和分布式数据库系统等。分布式处理就是多台相连的计算机各自承担同一工作任务的不同部分,在人的控制下,同时运行,共同完成同一件工作任务。4哑终端dumbterminal从远程大型主机(MainFrame)或强大的UNIX服务器运行的整体进程显示结果–直接拿电缆从哑终端连入主机智能终端---》PC–包括了专门的电路和固件,还可能有通信协议来和母机进行特定的合作终端仿真(Terminalemulation)–PC出现后,数百名用户都能远程登录到一台强大的主机和UNIX服务器上–特定的通信协议,代价是复杂性5客户/服务器计算(C/S)典型的客户有一个图形化用户界面,使用多种通信协议与服务器对话;服务器通常处理后台持久性的数据在C/S架构下,通信层软件必须开发成能够处理客户和服务器的交互。这种类型的软件后来被称为”中间件”——即客户/服务器交互用的介质进程可认知数据,但不理解一个原始的网络流–PackageUnpackage6遇到的问题业务逻辑和复杂计算在客户机上实现太昂贵了由于客户机能力“微不足道”,客户性能上将受到很大影响软件开发人员在编写处理客户/服务器通信的协议规范和代码上要发太多时间每个客户/服务器系统都要利用某种安全性来防止潜在的攻击安全软件通常是自己开发的,没什么标准可循7采用RPC的分布式计算客户只负责简单的显示、捕获和验证用户数据,即所谓的“瘦客户”(ThinClient)中间层是支持客户机做复杂商务处理(如计算花费)的服务器层,较为强大和灵敏后台服务器管理持久性的业务数据,通常直接和数据库交换信息,这一层也应当放置在高端计算机上三层体系各司其职,从而使得每个角色各尽所能。软件开发人员可以用某种格式的RPC,如–SunONCRPC;DCERPC8随着RPC的到来,使得在整个企业范围内分布功能和服务变得很容易,使得“分布式计算”这一术语更加流行9远程过程调用RemoteProcedureCall10RPC背景在传统的编程概念中,过程是由程序员在本地编译完成,并只能局限在本地运行的一段代码也就是说主程序和过程之间的运行关系是本地调用关系。除了web网页,你编过在非本地运行的程序吗?11这种结构在网络日益发展的今天已无法适应实际需求。其调用模式无法充分利用网络上其他主机的资源(如计算资源、存储资源、数据资源、显示资源等),也无法提高代码在实体间的共享程度,使得主机资源大量浪费。12远程过程调用的概念进程间通信(IPC)是在多任务操作系统或联网的计算机之间运行的程序和进程所用的通信技术。有两种类型的进程间通信(IPC);本地过程调用(LPC):用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息远程过程调用(RPC):类似于LPC,只是在网上工作。RPC开始是出现在Sun微系统公司和HP公司的运行UNIX操作系统的计算机中13远程过程调用协议远程过程调用协议:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议RPC是一个Client/Server模型,调用程序片称为rpcclient(本地程序),被调用程序片称为rpcserver(远程服务器)14RPC调用模型main(…)...调用A...退出主程序A(…)...调用B...退出过程A代码B(…).......退出过程B代码机器1机器2机器315RPC的通信模型ClientSend(remotecallpi(…))(发送“请求服务”信息)Receive(ans)接收回复信息server接收调用信息;抽取参数并分析;调用所指的过程;执行远程过程返回执行结果Send(ans)发送回复信息等待回复请求服务等待调用继续返回调用结果16RPC的执行LocalreturnLocalcallClientProcessOP4Client-stubOP1RPCRoutinewaitreceivetransmitcallworkreturnServerProcessOP2Server-stubOP3RPCRoutinereceivetransmit1234567891017RPC的实现User代码Remote(x)Stubremote(x){packarguments;send(msg,ans);unpackarguments;}stubSend(){Tx(packet);Rx(packet);}RPCruntimeserverProcedureremote()end;{ofremote}Receive(msg);unpackargs;remote(x);packargs;reply(ans);stubRx(packet);Tx(packet);RPCruntimeclientserver18远程程序中的互斥单个远程程序一次只能支持一个远程过程调用,当前远程过程调用完成之前会自动阻塞其他远程过程调用,程序员设计分布式程序时不需要考虑这种互斥。19通信协议支持两种传输协议:TCP、UDPTCP:连接、可靠、低效。保证要么把调用传递到远程过程且接受应答,要么报告通信无法进行。UDP:无连接、不可靠、高效。使用UDP的远程过程调用也许会丢失或重复。20RPC编程1、构建解决问题的常规应用程序;2、选择一组过程形成远程程序,以便将远程程序转移到远程机器中,通过这种方法将程序分解;3、为远程程序编写RPC界面(xxx.idl),包括远程的名字及其编号,还有对其参数的申明。选择远程程序号和版本号;4、运行rpcgen检查该界面,如果合法,便生成四个源代码文件:xxx.h(类型说明文件)、xxx_XDR.c(XDR转换例程)、xxx_clnt.c(客户端的stub过程)以及xxx_svr.c(服务守护过程,服务端的stub过程),这些文件将在客户和服务器程序中使用;21RPC编程5、为客户端和服务器端编写stub接口例程;6、编译并链接客户程序。它由四个主要文件组成:去掉了远程过程的程序、客户端的stub(rpc生成)、客户端的接口stub以及XDR过程(rpc生成)。7、编译并链接服务器程序。它由四个主要文件组成:远程过程组成的程序、服务器的stub(rpc生成)、服务器端的接口stub以及XDR过程(rpc生成)。8、在远程机器上启动服务器,接着在本机上启动客户。22RPC编程xxx.idlrpcgenxxx_clnt.cC编译器客户应用程序客户stub接口客户xxx.hxxx_xdr.cC编译器远程过程服务器stub接口服务器xxx_svr.c23RPC的优势位置透明性:被调用的函数在本地或者远程都能实现,调用者不必在意目标函数的位置在哪里RPC使开发人员可以集中精力在运用程序的功能上,再也不用再通信和网络协议上劳神了位置透明性,使得开发人员能够把三层系统思想扩展到多层RPC还内置了对安全性的支持,支持多线程概念和网络协议的独立性24分布式计算环境DISTRIBUTEDCOMPUTINGENVIRONMENT25DCE的体系结构操作系统和传输协议线程RPC安全服务目录服务时间服务分布式文件服务DCEApplicationsClientServer26DistributedComputingEnvironment(DCE)是20实际80年代末成立的OSF(OpenSoftwareFoundation)协会的成果最初是为了解决网络环境中多厂商提供的异种机之间的互操作性;由于众多的建议,DCE的目标已从解决异种机互操作性扩展为实现分布式处理系统27Theframeworkincludesaremoteprocedurecall(RPC)mechanismknownasDCE/RPC,anaming(directory)service,atimeservice,anauthenticationserviceandadistributedfilesystem(DFS)knownasDCE/DFS28DCE服务作为一个中间件DCE提供着两类服务:基本服务和扩充性服务基本服务:线程服务、RPC服务、目录服务和安全服务。扩充性服务:分布式文件服务和时间服务除此之外,还有管理这些服务的简单设施29线程服务利用线程服务,客户和服务器内部可以有多个控制流,从而实现内部的并行处理。Client1Computer1Client2Computer2ServerThread1Thread2Computer330线程服务Server1Computer2Server2Computer3Computer1ClientThread1Thread231RPC服务RPC服务提供DCE环境中所需的进程之间的通信工具。它支持客户对远程服务器的访问。提供统一格式的数据类型,屏蔽了字节顺序和相关的语言细节。RPC实现了开放分布式处理中的访问透明性和位置透明性。32目录服务目录服务允许客户在整个分布式环境中寻找自己所需的服务。具体的实现包括了两个独立的组成部分CDS(CellDiretoryService)和GDS(GlobalDirectoryService)。CDS在一个逻辑组内提供一个层次型的命名空间。GDS把CDS的层次型命名空间扩展到逻辑组外,从而实现了一个全系统的目录服务。33目录服务目录软连接对象实体CDS目录的层次34目录服务使用(1)服务器进行服务注册;(2)客户进行服务查找;35目录服务:服务注册正在初始化的服务器将该服务器的主机地址及每个界面的名字写入CDS服务器服务器将每个界面名字和其服务器端点写入主机的endpointmap中;服务器开始监听endpointmap中的端口。36目录服务:服务注册CDS服务器Mail_if-130.122.16.8Statistic_if-130.124.97.7Print_if-130.124.97.7Mathserver其它服务器ListenTCP/IPport1042EndpointMapStatistic_if-1042Print_if-1043界面名服务器主机地址应用服务器主机地址130.124.97.7界面名服务器endpoints123图7.1服务器初始化37目录服务:服务查找当客户应用请求一远程服务时,RPC软件与客户方的CDS软件交互作用,以便从DCE的目录服务获得服务方的绑定信息;CDS服务器返回查询结果给客户方的CDS软件。CDS软件缓存该结果以便提高今后的查询速度,同时将应用服务方的主机地址返回给客户方。38目录服务:服务查找CDSsoftwareCDS服务器Mail_if-130.122.16.8Statistic_if-130.124.97.7Print_if-130.124.97.7DCE目录服务主机rpcdMathserverListenport1042其它服务器Statistic_if-1042Print_if-1043EndpointMap应用服务器主机地址:130.124.97.7MathclientCDSsoftware应用客户方主机123图7.2寻找服务器39目录服务:服务查找现在客户知道了服务方所在的主机的地址,客户通过rpcd查看服务方系统上的EndpointMap便可找到服务进程的端点。使用服务器的端点信息,客户可直接与服务方通信。40目录服务:服务查找CDSsoftwareCDS服务器Mail_if-130.122.16.8Statistic_if-130.124.97.7Pr
本文标题:62中间件技术2 RPC和分布式处理环境
链接地址:https://www.777doc.com/doc-5527750 .html