仿真軟件技術(shù) 課件 第9章 -分布式交互通信技術(shù):RPC通信技術(shù)_第1頁(yè)
仿真軟件技術(shù) 課件 第9章 -分布式交互通信技術(shù):RPC通信技術(shù)_第2頁(yè)
仿真軟件技術(shù) 課件 第9章 -分布式交互通信技術(shù):RPC通信技術(shù)_第3頁(yè)
仿真軟件技術(shù) 課件 第9章 -分布式交互通信技術(shù):RPC通信技術(shù)_第4頁(yè)
仿真軟件技術(shù) 課件 第9章 -分布式交互通信技術(shù):RPC通信技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課前回顧REP客戶端REQ服務(wù)器

ZeroMQ的三種模式請(qǐng)求-應(yīng)答模式、發(fā)布-訂閱模式、管道模式這是哪種模式?請(qǐng)求-應(yīng)答模式對(duì)應(yīng)于RPC的傳統(tǒng)客戶端/服務(wù)器模型問(wèn)題引導(dǎo)RPC通信原理是什么?RPC通信與本地過(guò)程調(diào)用的區(qū)別?常見(jiàn)的RPC框架有哪些?仿真軟件技術(shù)第9章分布式交互通信技術(shù)SimulationSoftwareTechnology第9.1節(jié)RPC通信第9.3節(jié)RPC通信9.3.1RPC通信的基本概念9.3.2RPC調(diào)用9.3.3RPC通信的常見(jiàn)框架本講內(nèi)容9.3.1RPC通信的基本概念RPCRPC,遠(yuǎn)程過(guò)程調(diào)用(RemoteProcedureCall)通俗來(lái)說(shuō)是指計(jì)算機(jī)A上的進(jìn)程,調(diào)用另外一臺(tái)計(jì)算機(jī)B上的進(jìn)程,其中A上的調(diào)用進(jìn)程被掛起,而B上的被調(diào)用進(jìn)程開(kāi)始執(zhí)行,當(dāng)值返回給A時(shí),A進(jìn)程繼續(xù)執(zhí)行。RPC背后的思想是盡量使遠(yuǎn)程過(guò)程調(diào)用具有與本地調(diào)用相同的形式。9.3.1RPC通信的基本概念RPC概念RPC(遠(yuǎn)程過(guò)程調(diào)用)遠(yuǎn)程過(guò)程過(guò)程調(diào)用遠(yuǎn)程方法業(yè)務(wù)拆解分布式部署方法調(diào)用傳入?yún)?shù)執(zhí)行方法得到返回值RPC為分布式系統(tǒng)構(gòu)建帶來(lái)便利,但分布式系統(tǒng)本身也有通信延遲、地址空間被隔離等問(wèn)題9.3.1RPC通信的基本概念RPC通信流程客戶服務(wù)器調(diào)用遠(yuǎn)程過(guò)程從調(diào)用返回請(qǐng)求應(yīng)答調(diào)用本地過(guò)程并返回結(jié)果等待結(jié)果時(shí)間9.3.1RPC通信的基本概念RPC核心部分服務(wù)調(diào)用方(Consumer)調(diào)用端的本地存根(Stub)服務(wù)提供方(Provider)服務(wù)端的本地存根(Stub)RPCRuntimeRPC核心部分本地存根是為了解決地址空間隔離問(wèn)題RPCRuntime負(fù)責(zé)數(shù)據(jù)包的重傳、確認(rèn)、路由、加密等9.3.1RPC通信的基本概念RPC核心部分01服務(wù)提供方服務(wù)提供方的職責(zé)就是提供服務(wù),執(zhí)行接口實(shí)現(xiàn)的方法邏輯,也就是為服務(wù)提供端的本地存根提供方法的具體實(shí)現(xiàn)。02本地存根本地存根分為服務(wù)調(diào)用端的本地存根和服務(wù)提供端的本地存根。服務(wù)調(diào)用端的本地存根和服務(wù)調(diào)用方都屬于服務(wù)消費(fèi)端,它們存在于同一臺(tái)機(jī)器上,本地存根會(huì)解析函數(shù)調(diào)用的函數(shù)名、參數(shù)等信息,整理并且組裝這些數(shù)據(jù),然后將這些數(shù)據(jù)安裝定義好的協(xié)議進(jìn)行序列化,打包成可傳輸?shù)南?,交給RPC通信者。9.3.1RPC通信的基本概念RPC核心部分03服務(wù)調(diào)用方當(dāng)服務(wù)提供端的RPCRuntime收到請(qǐng)求后,交由服務(wù)提供端的本地存根進(jìn)行參數(shù)等數(shù)據(jù)的轉(zhuǎn)化。等函數(shù)執(zhí)行完成后,服務(wù)提供端會(huì)將執(zhí)行結(jié)果返回給服務(wù)提供端的本地存根,由本地存根再將結(jié)果數(shù)據(jù)系列化、打包,最后交給RPCRuntime。04RPCRuntime服務(wù)調(diào)用方也叫服務(wù)消費(fèi)者,它的職責(zé)之一是需要提供調(diào)用的接口的全限定名和方法,調(diào)用方法的參數(shù)給調(diào)用端的本地存根;職責(zé)之二是從調(diào)用端的本地存根中接收?qǐng)?zhí)行結(jié)構(gòu)。9.3.1RPC通信的基本概念與本地過(guò)程調(diào)用的區(qū)別和聯(lián)系

區(qū)別本地過(guò)程調(diào)用(LPC)發(fā)生在同一臺(tái)計(jì)算機(jī)內(nèi)部,不涉及網(wǎng)絡(luò)通信;RPC則涉及網(wǎng)絡(luò)通信,需要處理網(wǎng)絡(luò)延遲、數(shù)據(jù)序列化與反序列化等問(wèn)題。

聯(lián)系RPC和LPC在本質(zhì)上都是過(guò)程調(diào)用,都涉及函數(shù)的調(diào)用和執(zhí)行。RPC可以看作是LPC的一種擴(kuò)展,將調(diào)用范圍從本地?cái)U(kuò)展到了遠(yuǎn)程。第9.1節(jié)RPC通信9.3.1RPC通信的基本概念9.3.2RPC調(diào)用9.3.3RPC通信的常見(jiàn)框架本講內(nèi)容9.3.2RPC調(diào)用RPC調(diào)用RPC調(diào)用,大抵可以分為下面四個(gè)階段:服務(wù)暴露服務(wù)發(fā)現(xiàn)服務(wù)引用方法調(diào)用9.3.2RPC調(diào)用服務(wù)暴露服務(wù)暴露也稱服務(wù)導(dǎo)出,發(fā)生在Provider端遠(yuǎn)端本地服務(wù)暴露發(fā)生在Provider端,暴露在本地是指直接將Provider的地址+端口寫死在Consumer中,耦合度嚴(yán)重。暴露在遠(yuǎn)程是指把Provider服務(wù)暴露在注冊(cè)中心。9.3.2RPC調(diào)用服務(wù)發(fā)現(xiàn)服務(wù)發(fā)現(xiàn)注冊(cè)中心式直連式兩種方式和服務(wù)暴露相對(duì)應(yīng)服務(wù)發(fā)現(xiàn)的過(guò)程發(fā)生在(Consumer)端,服務(wù)發(fā)現(xiàn)的過(guò)程也就是尋址的過(guò)程Consumer端如果要發(fā)起RPC調(diào)用,則需要先知道自己想要調(diào)用的應(yīng)用服務(wù)有哪些服務(wù)提供者,也就是需要知道這些服務(wù)提供者的地址和端口。9.3.2RPC調(diào)用服務(wù)引用服務(wù)引用服務(wù)引用的過(guò)程是與某一個(gè)服務(wù)節(jié)點(diǎn)建立連接服務(wù)引用的過(guò)程發(fā)生在服務(wù)發(fā)現(xiàn)之后,當(dāng)Consumer端通過(guò)服務(wù)發(fā)現(xiàn)獲取所有服務(wù)提供者的地址后,通過(guò)負(fù)載均衡策略選擇其中一個(gè)服務(wù)提供著的節(jié)點(diǎn)進(jìn)行服務(wù)引用。服務(wù)引用的過(guò)程就是與某一個(gè)服務(wù)節(jié)點(diǎn)建立連接,以及在Consumer端創(chuàng)建接口的代理的過(guò)程其中建立連接也就是兩端的RPCRuntime建立連接的過(guò)程。9.3.2RPC調(diào)用方法調(diào)用發(fā)起請(qǐng)求Consumer接收結(jié)果序列化反序列化接收結(jié)果數(shù)據(jù)等待接收請(qǐng)求數(shù)據(jù)發(fā)送結(jié)果數(shù)據(jù)反序列化序列化接收調(diào)用返回結(jié)果執(zhí)行方法stubRPCRuntimeRPCRuntimestubProvider發(fā)送請(qǐng)求數(shù)據(jù)調(diào)用方法的數(shù)據(jù)包傳輸調(diào)用結(jié)果的數(shù)據(jù)包傳輸網(wǎng)絡(luò)機(jī)器A機(jī)器B方法調(diào)用以下關(guān)于RPC通信的說(shuō)法中,論述正確的是()RPC允許像調(diào)用本地服務(wù)一樣調(diào)用遠(yuǎn)程服務(wù),并隱藏了具體的通信細(xì)節(jié)RPC通信是一種基于HTTP協(xié)議的通信方式RPC通信主要用于在同一臺(tái)計(jì)算機(jī)上的兩個(gè)進(jìn)程間進(jìn)行通信。RPC通信中,客戶端和服務(wù)器端必須共享相同的內(nèi)存空間。ABCD提交單選題1分第9.1節(jié)RPC通信9.3.1RPC通信的基本概念9.3.2RPC調(diào)用9.3.3RPC通信的常見(jiàn)框架本講內(nèi)容9.3.3RPC通信的常見(jiàn)框架RPC框架RPC框架是為了不用感知RPC調(diào)用實(shí)現(xiàn)中細(xì)節(jié)的工具,就是一個(gè)輪子。常見(jiàn)的框架有dubbo、gRPC、Trift等9.3.3RPC通信的常見(jiàn)框架Dubbodubbo由阿里巴巴開(kāi)源的高性能RPC框架,支持服務(wù)治理和多種協(xié)議,設(shè)計(jì)了自己的SPI機(jī)制,增加模塊之間的可插拔能力。9.3.3RPC通信的常見(jiàn)框架Dubbo特點(diǎn)提供對(duì)多種基于長(zhǎng)連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請(qǐng)求-響應(yīng)”模式的信息交換方式。遠(yuǎn)程通訊提供基于接口方法的透明遠(yuǎn)程過(guò)程調(diào)用(RPC),包括多協(xié)議支持,以及軟負(fù)載均衡,失敗容錯(cuò),地址路由,動(dòng)態(tài)配置等集群支持。集群容錯(cuò)基于注冊(cè)中心目錄服務(wù),使服務(wù)消費(fèi)方能動(dòng)態(tài)的查找服務(wù)提供方,使地址透明,使服務(wù)提供方可以平滑增加或減少機(jī)器。自動(dòng)發(fā)現(xiàn)9.3.3RPC通信的常見(jiàn)框架gRPCgRPCgRPC是2015年google開(kāi)源的一個(gè)語(yǔ)言中立、平臺(tái)中立、高性能的框架,采用自研的ProtocolBuffers作為序列化的解決方案,支持流式通信組合,權(quán)限驗(yàn)證機(jī)制豐富。9.3.3RPC通信的常見(jiàn)框架gRPC實(shí)現(xiàn)封裝DATAJSONGPBGRPCHTTP2.0TCP業(yè)務(wù)模塊的數(shù)據(jù),通信雙方需要了解彼此的數(shù)據(jù)模型,才能正確交互信息gRPC通過(guò)ProtocolBuffers編碼格式承載數(shù)據(jù)遠(yuǎn)程過(guò)程調(diào)用,定義了遠(yuǎn)程過(guò)程調(diào)用的協(xié)議交互格式gRPC承載在HTTP2.0協(xié)議上TCP連接提供面向連接的、可靠的、順序的數(shù)據(jù)鏈路9.3.3RPC通信的常見(jiàn)框架gRPC特點(diǎn)使用HTTP/2作為底層傳輸協(xié)議,支持多路復(fù)用,能夠高效的傳輸大量的請(qǐng)求和響應(yīng)數(shù)據(jù)。高性能支持請(qǐng)求和響應(yīng)的流式傳輸,可以實(shí)現(xiàn)雙向流式通信、單向流式通信等多種模式??赏卣剐允褂肞rotocolBuffers作為接口定義語(yǔ)言,通過(guò)定義接口和消息類型,可以方便地生成各種場(chǎng)景的需求。代碼自動(dòng)生成支持多種編程語(yǔ)言,可以在不同的語(yǔ)言之間進(jìn)行通信??缯Z(yǔ)言支持9.3.3RPC通信的常見(jiàn)框架ThriftThriftThrift是保存語(yǔ)言和平臺(tái)中立的RPC框架,設(shè)計(jì)了自己的IDL編譯工具,具有高性能、多語(yǔ)言支持、動(dòng)態(tài)擴(kuò)展性等特點(diǎn)。9.3.3RPC通信的常見(jiàn)框架Thrift特點(diǎn)通過(guò)IDL文件定義接口函數(shù)和數(shù)據(jù)類型,這些文件可以被Thrift的編譯器轉(zhuǎn)化為不同語(yǔ)言的代碼,從而實(shí)現(xiàn)跨語(yǔ)言通信。接口描述語(yǔ)言Thrift為服務(wù)器端程序提供了多種工作模式,如線程池模型、非阻塞模型等,可以根據(jù)實(shí)際應(yīng)用場(chǎng)景選擇最合適的工作模式。多種工作模型Thrift支持二進(jìn)制傳輸協(xié)議,相比文本格式(如XML,JSON),二進(jìn)制傳輸在體積和效率上更有優(yōu)勢(shì),特別是在數(shù)據(jù)量大的體系中。高效傳輸9.3.3RPC通信的常見(jiàn)框架現(xiàn)有框架對(duì)比gRPCThiftdubbo開(kāi)發(fā)語(yǔ)言多語(yǔ)言多語(yǔ)言Java序列化protobufThift格式hession2注冊(cè)中心××Zk等跨語(yǔ)言√√×服務(wù)定義protobuf文件Thift文件Java接口服務(wù)治理×××9.3.3RPC通信的常見(jiàn)框架RPC框架選擇框架語(yǔ)言與平臺(tái)中立項(xiàng)目需求和規(guī)模社區(qū)和生態(tài)性能和擴(kuò)展性模塊開(kāi)發(fā)可能是跨語(yǔ)言、跨平臺(tái)的強(qiáng)大的社區(qū)與生態(tài)系統(tǒng)意味著更好的支持與更新,以及更多的工具與插件框架的性能和擴(kuò)展性需求,需要考慮具體場(chǎng)景選擇不同的RPC框架適用于不同的項(xiàng)目此外

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論