日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

什么是RFC

發(fā)布時(shí)間:2023/12/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是RFC 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用以記錄學(xué)習(xí)thift過(guò)程中一些資料。

概念:

什么是RFC

RFC(remote procedure call protocal):遠(yuǎn)程過(guò)程調(diào)用協(xié)議

簡(jiǎn)單來(lái)講就是遠(yuǎn)程調(diào)用,有兩個(gè)應(yīng)用分別部在兩臺(tái)服務(wù)器A和B上,現(xiàn)在A服務(wù)器上的應(yīng)用想調(diào)用B服務(wù)器上的某個(gè)方法,但是由于兩個(gè)應(yīng)用不在一個(gè)內(nèi)存空間,所以無(wú)法直接調(diào)用,這就需要通過(guò)網(wǎng)絡(luò)來(lái)表達(dá)調(diào)用的語(yǔ)義和調(diào)用的數(shù)據(jù)。以上的過(guò)程可以描述為一下:

1. 首先,兩個(gè)服務(wù)器需要先通訊,如上,主要是通過(guò)TCP在客戶端和服務(wù)端簡(jiǎn)歷連接,遠(yuǎn)程過(guò)程調(diào)用的所有交換的數(shù)據(jù)都在這個(gè)連接里傳輸。連接可以是按需連接,調(diào)用結(jié)束后就斷掉,也可以是長(zhǎng)連接,多個(gè)遠(yuǎn)程過(guò)程調(diào)用共享同一個(gè)連接。

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

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

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

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

?

為什么RPC呢?就是無(wú)法在一個(gè)進(jìn)程內(nèi),甚至一個(gè)計(jì)算機(jī)內(nèi)通過(guò)本地調(diào)用的方式完成的需求,比如比如不同的系統(tǒng)間的通訊,甚至不同的組織間的通訊。由于計(jì)算能力需要橫向擴(kuò)展,需要在多臺(tái)機(jī)器組成的集群上部署應(yīng)用,RPC的協(xié)議有很多,比如最早的CORBA,Java RMI,Web Service的RPC風(fēng)格,Hessian,Thrift,甚至Rest API。(Netty框架不局限于RPC,更多的是作為一種網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)框架,比如HTTP,由于RPC需要高效的網(wǎng)絡(luò)通信,就可能選擇以Netty作為基礎(chǔ)。)除了網(wǎng)絡(luò)通信,RPC還需要有比較高效的序列化框架,以及一種尋址方式。如果是帶會(huì)話(狀態(tài))的RPC調(diào)用,還需要有會(huì)話和狀態(tài)保持的功能。大體上來(lái)說(shuō),Netty就是提供一種事件驅(qū)動(dòng)的,責(zé)任鏈?zhǔn)?#xff08;也可以說(shuō)是流水線)的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)方式。網(wǎng)絡(luò)協(xié)議包含很多層次,很多部分組成,如傳輸層協(xié)議,編碼解碼,壓縮解壓,身份認(rèn)證,加密解密,請(qǐng)求的處理邏輯,怎么能夠更好的復(fù)用,擴(kuò)展,業(yè)界通用的方法就是責(zé)任鏈,一個(gè)請(qǐng)求應(yīng)答網(wǎng)絡(luò)交互通常包含兩條鏈,一條鏈(Upstream)是從傳輸層,經(jīng)過(guò)一系列步驟,如身份認(rèn)證,解密,日志,流控,最后到達(dá)業(yè)務(wù)層,一條鏈(DownStream)是業(yè)務(wù)層返回后,又經(jīng)過(guò)一系列步驟,如加密等,又回到傳輸層

?

轉(zhuǎn)載于:https://www.cnblogs.com/space-place/p/10293867.html

總結(jié)

以上是生活随笔為你收集整理的什么是RFC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。