大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java框架教程之RPC框架介紹

Java框架教程之RPC框架介紹

更新時間:2020-05-29 14:22:03 來源:動力節(jié)點(diǎn) 瀏覽4323次

關(guān)于RPC框架,首先了解什么叫RPC,為什么要RPC,RPC是指遠(yuǎn)程過程調(diào)用,也就是說兩臺服務(wù)器A,B,一個應(yīng)用部署在A服務(wù)器上,想要調(diào)用B服務(wù)器上應(yīng)用提供的函數(shù)/方法,由于不在一個內(nèi)存空間,不能直接調(diào)用,需要通過網(wǎng)絡(luò)來表達(dá)調(diào)用的語義和傳達(dá)調(diào)用的數(shù)據(jù)。

比如說,一個方法可能是這樣定義的:

Employee getEmployeeByName(String fullName)

那么:

首先,要解決通訊的問題,主要是通過在客戶端和服務(wù)器之間建立TCP連接,遠(yuǎn)程過程調(diào)用的所有交換的數(shù)據(jù)都在這個連接里傳輸。連接可以是按需連接,調(diào)用結(jié)束后就斷掉,也可以是長連接,多個遠(yuǎn)程過程調(diào)用共享同一個連接。

第二,要解決尋址的問題,也就是說,A服務(wù)器上的應(yīng)用怎么告訴底層的RPC框架,如何連接到B服務(wù)器(如主機(jī)或IP地址)以及特定的端口,方法的名稱名稱是什么,這樣才能完成調(diào)用。比如基于Web服務(wù)協(xié)議棧的RPC,就要提供一個endpoint URI,或者是從UDDI服務(wù)上查找。如果是RMI調(diào)用的話,還需要一個RMI Registry來注冊服務(wù)的地址。

第三,當(dāng)A服務(wù)器上的應(yīng)用發(fā)起遠(yuǎn)程過程調(diào)用時,方法的參數(shù)需要通過底層的網(wǎng)絡(luò)協(xié)議如TCP傳遞到B服務(wù)器,由于網(wǎng)絡(luò)協(xié)議是基于二進(jìn)制的,內(nèi)存中的參數(shù)的值要序列化成二進(jìn)制的形式,也就是序列化(Serialize)或編組(marshal),通過尋址和傳輸將序列化的二進(jìn)制發(fā)送給B服務(wù)器。

第四,B服務(wù)器收到請求后,需要對參數(shù)進(jìn)行反序列化(序列化的逆操作),恢復(fù)為內(nèi)存中的表達(dá)方式,然后找到對應(yīng)的方法(尋址的一部分)進(jìn)行本地調(diào)用,然后得到返回值。

第五,返回值還要發(fā)送回服務(wù)器A上的應(yīng)用,也要經(jīng)過序列化的方式發(fā)送,服務(wù)器A接到后,再反序列化,恢復(fù)為內(nèi)存中的表達(dá)方式,交給A服務(wù)器上的應(yīng)用

Java框架教程之RPC框架介紹

為什么RPC呢?就是無法在一個進(jìn)程內(nèi),甚至一個計(jì)算機(jī)內(nèi)通過本地調(diào)用的方式完成的需求,比如比如不同的系統(tǒng)間的通訊,甚至不同的組織間的通訊。由于計(jì)算能力需要橫向擴(kuò)展,需要在多臺機(jī)器組成的集群上部署應(yīng)用,

RPC的協(xié)議有很多,比如最早的CORBA,Java RMI,Web Service的RPC風(fēng)格,Hessian,Thrift,甚至Rest API。

關(guān)于Netty

而Netty框架不局限于RPC,更多的是作為一種網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)框架,比如HTTP,由于RPC需要高效的網(wǎng)絡(luò)通信,就可能選擇以Netty作為基礎(chǔ)。除了網(wǎng)絡(luò)通信,RPC還需要有比較高效的序列化框架,以及一種尋址方式。如果是帶會話(狀態(tài))的RPC調(diào)用,還需要有會話和狀態(tài)保持的功能。

大體上來說,Netty就是提供一種事件驅(qū)動的,責(zé)任鏈?zhǔn)剑ㄒ部梢哉f是流水線)的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)方式。網(wǎng)絡(luò)協(xié)議包含很多層次,很多部分組成,如傳輸層協(xié)議,編碼解碼,壓縮解壓,身份認(rèn)證,加密解密,請求的處理邏輯,怎么能夠更好的復(fù)用,擴(kuò)展,業(yè)界通用的方法就是責(zé)任鏈,

一個請求應(yīng)答網(wǎng)絡(luò)交互通常包含兩條鏈,一條鏈(Upstream)是從傳輸層,經(jīng)過一系列步驟,如身份認(rèn)證,解密,日志,流控,最后到達(dá)業(yè)務(wù)層,一條鏈(DownStream)是業(yè)務(wù)層返回后,又經(jīng)過一系列步驟,如加密等,又回到傳輸層。

Java框架教程之RPC框架介紹

這樣每一層都有一個處理接口,都可以進(jìn)行不同的操作,比如身份認(rèn)證,加解密,日志,流控,將不同的處理實(shí)現(xiàn)像拼積木那樣插接起來就可以實(shí)現(xiàn)一個網(wǎng)絡(luò)協(xié)議了(快速開發(fā))。每一層都有自己的實(shí)現(xiàn),上層不需要關(guān)注面向網(wǎng)絡(luò)的操作(可維護(hù))。Netty已經(jīng)提供了很多實(shí)現(xiàn)。

Java框架教程之RPC框架介紹

當(dāng)然Netty還有許多好處,比如對非阻塞IO(NIO)的支持,比如在鏈上傳遞時最大程度的減少buffer的copy(高性能)。

以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java框架教程之RPC框架介紹”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲国产精品一区二区久 | 天天射天天干天天操 | 五月天婷婷在线视频国产在线 | 久久日韩| 亚洲天天网综合自拍图片专区 | 久久网在线 | 四虎影视在线永久免费观看 | 日韩欧美中文字幕在线视频 | 亚洲精品一区二区三区四区手机版 | 98精品国产综合久久 | 全免费一级毛片在线播放 | 大乳女做爰中文字幕 | 国产免费久久精品44 | 中文字幕亚洲高清综合 | 欧美一级成人毛片视频 | 四虎永久在线精品影院 | 青春草国产成人精品久久 | 亚洲国产精品日韩在线观看 | 久青草视频免费视频播放线路1 | 久久久久久夜精品精品免费啦 | 国产福利午夜波多野结衣 | 免费日韩精品 | 国产精品久久九九 | 亚洲欧洲免费 | 亚洲成人欧美 | 久久99精品久久久久久牛牛影视 | 精品国产成人系列 | 国产l精品国产亚洲区久久 国产l精品国产亚洲区在线观看 | 国产精品午夜波多野结衣性色 | free性欧美极度另类超级大 | 成 人 黄 色视频免费播放 | 国内精品久久久久影院不卡 | 麻豆视频一区 | 精品国产福利在线 | 99久久www免费| 美利坚永久精品视频在线观看 | 99久久精品免费观看国产 | www日韩在线 | 成人美女隐私免费 | 国产精品日韩一区二区三区 | 欧美成人三级视频 |