日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

什么是RFC

發布時間:2023/12/16 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是RFC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用以記錄學習thift過程中一些資料。

概念:

什么是RFC

RFC(remote procedure call protocal):遠程過程調用協議

簡單來講就是遠程調用,有兩個應用分別部在兩臺服務器A和B上,現在A服務器上的應用想調用B服務器上的某個方法,但是由于兩個應用不在一個內存空間,所以無法直接調用,這就需要通過網絡來表達調用的語義和調用的數據。以上的過程可以描述為一下:

1. 首先,兩個服務器需要先通訊,如上,主要是通過TCP在客戶端和服務端簡歷連接,遠程過程調用的所有交換的數據都在這個連接里傳輸。連接可以是按需連接,調用結束后就斷掉,也可以是長連接,多個遠程過程調用共享同一個連接。

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

3. 當A服務器上的應用發起遠程過程調用時,方法的參數需要通過底層的網絡協議如TCP傳遞到B服務器,由于網絡協議是基于二進制的,內存中的參數的值要序列化成二進制的形式,也就是序列化(Serialize)或編組(marshal),通過尋址和傳輸將序列化的二進制發送給B服務器。

4. B服務器收到請求后,需要對參數進行反序列化(序列化的逆操作),恢復為內存中的表達方式,然后找到對應的方法(尋址的一部分)進行本地調用,然后得到返回值。

5. 返回值還要發送回服務器A上的應用,也要經過序列化的方式發送,服務器A接到后,再反序列化,恢復為內存中的表達方式,交給A服務器上的應用。

?

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

?

轉載于:https://www.cnblogs.com/space-place/p/10293867.html

總結

以上是生活随笔為你收集整理的什么是RFC的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。