rpc框架解釋

2022-06-14 10:39:11 字數 696 閱讀 5573

rpc是指遠端過程呼叫,也就是說兩台伺服器a,b,乙個應用部署在a伺服器上,想要呼叫b伺服器上應用提供的函式/方法,由於不在乙個記憶體空間,不能直接呼叫,需要通過網路來表達呼叫的語義和傳達呼叫的資料。

首先,要解決通訊的問題,主要是通過在客戶端和伺服器之間建立tcp連線,遠端過程呼叫的所有交換的資料都在這個連線裡傳輸。連線可以是按需連線,呼叫結束後就斷掉,也可以是長連線,多個遠端過程呼叫共享同乙個連線。第二,要解決定址的問題,也就是說,a伺服器上的應用怎麼告訴底層的rpc框架,如何連線到b伺服器(如主機或ip位址)以及特定的埠,方法的名稱名稱是什麼,這樣才能完成呼叫。比如基於web服務協議棧的rpc,就要提供乙個endpoint uri,或者是從uddi服務上查詢。如果是rmi呼叫的話,還需要乙個rmi registry來註冊服務的位址。

第三,當a伺服器上的應用發起遠端過程呼叫時,方法的引數需要通過底層的網路協議如tcp傳遞到b伺服器,由於網路協議是基於二進位制的,記憶體中的引數的值要序列化成二進位制的形式,也就是序列化(serialize)或編組(marshal),通過定址和傳輸將序列化的二進位制傳送給b伺服器。

第四,b伺服器收到請求後,需要對引數進行反序列化(序列化的逆操作),恢復為記憶體中的表達方式,然後找到對應的方法(定址的一部分)進行本地呼叫,然後得到返回值。

第五,返回值還要傳送回伺服器a上的應用,也要經過序列化的方式傳送,伺服器a接到後,再反序列化,恢復為記憶體中的表達方式,交給a伺服器上的應用

實現RPC框架

什麼是rpc client端 student student call serveraddr,addage,student 1.將這個呼叫對映為call id。2.將call id,student params 序列化,以二進位制形式打包 3.把2中得到的資料報傳送給serveraddr,這需要使用...

RPC框架特性

既然是協議就只是一套規範,那麼就需要有人遵循這套規範來進行實現。目前典型的rpc實現包括 dubbo thrift grpc hetty等。既然rpc的客戶端認為自己是在呼叫本地物件。那麼傳輸層使用的是tcp udp還是http協議,者是一些其他的網路協議它就不需要關心了。既然網路協議對其透明,那麼...

RPC 手寫乙個RPC框架

基於上一節的內容rpc 準備階段,自己實現乙個基本的rpc框架。public class rpcserverframereg 註冊服務,就是將介面和實現類儲存到上邊定義的serviceholder中,param serviceinte ce 介面 param impl 介面的實現類 throws i...