您好,欢迎来到99网。
搜索
您的当前位置:首页基于RPC的分布式计算的实现

基于RPC的分布式计算的实现

来源:99网
维普资讯 http://www.cqvip.com

第2期 刘跷风:基于RPC的分布式计算的实现 基于RPC的分布式计算的实现 刘晓风 (西安交通大学电子与信息工程学院,陕西西安710049) 摘要:讨论Unix系境下基于RPC的分布式计算的实现问题,包括XDR数据交换、Server与Client程序设 计、多线程与多进程RPc调用。 关键词:分布式计算;RPc;XDR;NFS;1Jr1ix 中图法分类号:Tl ̄91 文献标识码:A 文章编号:1001.3695(2002)02.Ol11・02 Implementation of Distributed Computing Using RPC LIU Xiao-fen¥ (Schoe ̄ E m &q r哪c∞ 脚 f 戚 舳 Unkz,rs岭、Xi 帆S/mr ̄7L0049、 ” Al ̄traet:This paper dJscusoes implememation of distributed computing using RPC under Unix,including XDR data exchange,Ser.,er and Client pn granl i ,muhithre, ̄IM and muhiproee'a ̄RPC ut ;RPC;XDR;N ;Unix Key word ̄:Distributed 分布式计算可以充分利用网络上其它计算机的资 源:假定应用App在AppHost上运行,过大的计算量是 其应用的瓶颈.如果网络上其它计算机Hostl, A1 ̄st2,一除运行它们本身的应用外还有富余的资源,就 可以为App提供计算上的帮助。 st ̄ct avg to hosl】 slrI t ’u】l from hasl boolL xdr—h%tlI); bo0l 1 xdr ̄sult h册tl(、 — 1 XDR函数 RPc提供的参数传送与计算结果返回方法是XDR maia( w、argv) char L; (Extereal Data Representation)函数。通过将数据转换为 XDR标准格式,在RPC Client与Server之间传送数据,也 可在不同语言 操作系统、不同类型的计算机间工作。 在Client端的clnt call中指定传递参数与返回结果的 XDR函数.在Server端可调用函数取回参数并送出结果: 如果参数与结果不是单一数据,需要定义为结构。XDR 库提供的基函数可传送字符、整型、浮点、枚举、string和 array等类型的数据。在自定义的XDR函数中通过调用 基函数传送结构的元素实现结构的传送。 2 RPC Server 在Host1.Host2,…上为App提供的计算功能可以通 过后台运行的RPC Se ̄er来实现。下面是采用标准接口 的RPC Server的一个框架,假定在H0 1上运行,只要加 ch I ̄ttvpe[ = netpath : -r ̄te(h册_lprog HOST]PROG,HOSTI PROGif(s*e(一—一—VERS r耻t b'pe ==O)l fptintf(stde . %……exit(11; t£ a 、 .a ̄v:0】1} …n1]}/ 阻塞在此.等待Client的请求,服务后莲回此处*, st lc void host1一ptog(requestp.1ransp J — ̄trucl svcreq qu%屯 SVCXPRT tmnsp:  switch(requestp一>rqP Dc1—… UU_PROC: svc ̄ndmply(transp.xdr W Ld.NULL t… 明 HOST break{ de ult: …一FUNC} n。 0c‘ha¨ p J; 入计算代码就可以生成Server端的实用程序: #include(sldi0 h inc]ude(rpc/qx ̄h inc]ude(xpe/types h> t… il"(! / 骨吐 学( 唧.xdr aeg一 t L.&甜g一 ¨, 取回参数 fprintfl g)0 4 L、 5 … ・ can I decode argu, ̄nt+、 ); 。 e‘ an叩1 #define 14OSTIdefiae HOSTIdefine HOSTI——PR ̄3G tll1 —PROG VERS“u Long)” PUNCII ulong)】) —exit(¨i 1 i*进行HOSTI FT'NC所要求的计算 / s"一fr a gs{ p.xdr—— —ho ̄l1.& g how1) 收稿日期:200].04.26 /*释鼓执行s ge 且rg5()时所分配的内存*/ 维普资讯 http://www.cqvip.com

l】2 ifl! s1 P…计算机应用研究 2002正 sendTep]'r(U'ansp.xdr t ̄sult h∞“,&msuh h∞t v… ITltransp J: 将结果发连 Clienl方 h_圳l x 一, 4多线程调用 要实现并发的分布式计算,调用程序可采用多线程 或多进程.每个线程或进程使用不同的 lient han dle调 arc bastl( d p. p: Ⅷ; XDR x&sp struet g to hI tl 诵用基函数传送参数的各个元素 /{ 【 t xdr Tesuh】10 1 f x&sp.resultp) XDR xd… 用不同计算机上的服务程序 例如用如下的程序: gtrll(t r ̄ult ITutn I】 l ms ̄tp; pthmad—t rid[THRNUM:: 调用基函数传进结果的各个元素*, mt ̄tatus; 字符串nettype指定了所用的传输协议粪型.“net— …nt ptkread create(&tld 0 J.NULL,tkT p『 0.&at 。; path 是缺省设置,此时协议由NETPAI'H环境变量决定 pthread—c reate(&rid l J.NUL[..thT pJ 1& 、; create返回生成Se/n ̄er handle所用的传输协议号. / 执行奉机七的计算* host]prog是s run所调用的服务函数:参数的传送 for(…0 n<THRNUM;…『 一—与计算结果的返回可 有两种方法:第一种方法是采用 p/hread—Join(thl Ln].&status’i, 等待所有线程结束*, ,*现在可 使用其它计算机的计算结果*- XDR(External Dam Representation)函数:函数xdr atg 其中thT—proc n()是各线程的人El函数.在这些函数内 hostl与xdrresult——host1分别是向Server端传送参数和 巅人RPC Client的程序 向Client端返回计算结果的XDR函数:通过函数svc 创建多个子进程来实现RPc调用更加简单.例如F ge/args()获取参数,svc—sendrepl?'()送回运算结果:如果 面的程序: 计算中需要大量的原始数据或者计算结果中含有大量 int pid, ̄talES; 的数据,也可 采用NFS,直接访问AppHost的目录读写 , 将每十子进程的RPC所需的有关参数赋纷对应的全局变量*, 数据,这时不需要参数与返回结果,也就不用XDR函数 if rfork(、==0 】~1¨; ifIfoTk()==01 pTOC 2(】: 了。在上面的程序中删除与sVc—getargs()有关的程序, 用s"esndreply(transp,xdr/ 执行本机上的计算任暑*/ —void..cad&t)NULL)替换 for];;1}/*等待所有的子进程结束 程序中的函数svc sendreplv() pid=wait(&status): '{(md=;L&&…o==ECHILD} 3 RPC Client break; / 现在可 使用所有的计算结 *. 应用程序App通过RPc Client调用其它计算机上的 pine—n()是子进程的人E1.可将RPC调用程序嵌入 程序:下面是Client程序的一个实例: 其中:在父进程中可定义供每个子进程引用的数据,在 include<stdio h 创建子进程前填人数值。子进程被创建后继承父进程 #【 】ude<rpc,.'rpc h 的环境 可 直接引用:在主进程中可 反复创建子进 #i ̄Iude<㈣lypes h> #defi ̄HOSTI PROG f(u[ong)0xd43000001) 程执行RPC调用: #define HOSTI pROG VERS(tu]ong11) 在多线程应用程序中采用线程比进程节省资源 这 de6 HOSTl FUNC((u】∞ )1) 主要体现在较底层的直用上 如大量线程同时作凰或并 defi ̄霄Arr TIME l30)/*根据调用所需的时间设置*/ IxM t xdr a host1(t: 行计算:在RPC应用方面没有感受到明显差别,采用子 】瑚l I xdr r ̄ult ho 1(1: 进程程序更简单 运行结果可以通过XDR函数返回后填 steel t… I time out; 人共享内存,也可直接写磁盘(NFS) 都很容易实现。 CLIEl、T client: …tint aI m: 5结束语 h nettype【 = n ̄th"; h hostI【J= Hosl ; 分布式计算可 带来多方面的好处,『列如许多与图 client=clnt cr ̄te(h咂t『_HOSTI—PROG HOSTI—PROG VERS.J t typet. 形有关同时又有人机交互的应用 绘图可在很短时间完 if(clJenl=:(CLIENT )NULL) 成但计算需要大量时间.可由 台计算机完成绘图的工 c]nt rT0r( Couldn t cm e client ) exil(11: 作 其它计算机进行计算 使应用的运行速度达到口』以 接受的标准;在实验室建设方面,可以用一组低档工作 tlme out¨…WAtT TIME: 站提供一台高档多CPU工作站的功能 同时还可运行本 tJ…ttv… 0; slat=e]nt( 【fclient.HOSTI FENC. 身的应用: xdr arg—hostl—c ̄ddr—t)&嘤hostt, 一Tesuh h呻t1.(caddr t)& ̄ult haml 参考文献: tlr| out1: ifI slat I:RPC SUCCESS); l ONC+Developer s Guide,Salads 2.6[M:Sun Micro t c]nl pemv{client ”Cal】fai]ed t: 1997 exit r】); 【2  ̄dultithreaded Programming Guide N ̄lari s 2 6:M Sun Mi crosyslems,I997 作者简介: Jm】 hostl1) : 刘晓风(1953一),男,籍贯胰西 副教授 研究方向为软件与应用 h)一 suIt h雌tl 系统开发 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务