RPC原理解析

2021-09-24 14:17:08 字數 1674 閱讀 7107

rpc(remote procedure call protocol)——遠端過程呼叫協議,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。rpc協議假定某些傳輸協議的存在,如tcp/ip或udp,為通訊程式之間攜帶資訊資料。rpc將原來的本地呼叫轉變為呼叫遠端的伺服器上的方法,給系統的處理能力和吞吐量帶來了近似於無限制提公升的可能。在osi網路通訊模型中,rpc跨域了傳輸層和應用層。rpc使得開發包括網路分布式多程式在內的應用程式更加容易。

乙個完整的rpc架構裡面包含了四個核心的元件,分別是client,client stub,server以及server stub,這個stub可以理解為存根。

(1) 客戶端(client)以本地呼叫方式(即以介面的方式)呼叫服務;

(2) 客戶端存根(client stub)接收到呼叫後,負責將方法、引數等組裝成能夠進行網路傳輸的訊息體(將訊息體物件序列化為二進位制);

(3) 客戶端通過sockets將訊息傳送到服務端;

(4) 服務端存根( server stub)收到訊息後進行解碼(將訊息物件反序列化);

(5) 服務端存根( server stub)根據解碼結果呼叫本地的服務;

(6) 本地服務執行並將結果返回給服務端存根( server stub);

(7) 服務端存根( server stub)將返回結果打包成訊息(將結果訊息物件序列化);

(8) 服務端(server)通過sockets將訊息傳送到客戶端;

(9) 客戶端存根(client stub)接收到結果訊息,並進行解碼(將結果訊息發序列化);

(10) 客戶端(client)得到最終結果。

rpc的目標是要把2、3、4、7、8、9這些步驟都封裝起來。

注意:無論是何種型別的資料,最終都需要轉換成二進位製流在網路上進行傳輸,資料的傳送方需要將物件轉換為二進位製流,而資料的接收方則需要把二進位製流再恢復為物件。

設計框架檢視如下:

與1.3架構圖相比較,rpc-sample-client相當於client-functions,通過介面方法發起請求;而rpc-client相當於client-stub,負責把方法和引數序列化並傳送給查詢到的伺服器。rpc-server相當於server stub,負責把客戶端傳送過來的訊息反序列化,並通過反射呼叫本地服務,再把本地服務返回的結果序列化傳送給客戶端;rpc-sample-server則相當於server-functions,提供本地服務並返回得出的結果給rpc-server。rpc-client等待接收rpc-server返回的結果,並將結果反序列化,再把反序列化最終得到的結果返回給rpc-sample-client。

rpc-common提供基於netty的序列化與反序列化方法,並封裝rpc請求和rpc響應,序列化和反序列的物件就是封裝好的rpcrequest和rpcresponse。rpc-registry則是基於zookeeper設計的分布式伺服器動態上下線通知的應用程式,通過rpc-registry可以查詢伺服器或者註冊伺服器,用於均衡負載。

rpc-client與rpc-server之間的通訊是基於netty的,netty底層也是sockets設計,但是效率比sockets高。

RPC原理解析

rpc remote procedure call protocol 遠端過程呼叫協議,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。rpc協議假定某些傳輸協議的存在,如tcp ip或udp,為通訊程式之間攜帶資訊資料。rpc將原來的本地呼叫轉變為呼叫遠端的伺服器上的方法...

kafka 請求處理與RPC原理解析 四

kafka server啟動後,會監聽一些埠,然後開始接收請求進行日常的工作。與請求處理相關的元件有 socketserver kafkaapis kafkarequesthandlerpool。這些都是在kafka server啟動時初始化並開始執行的。socketserver是乙個nio服務,基...

LCD原理解析

硬體體系 3個部分 lcd液晶 屏 lcd驅動晶元 lcd控制器 整合在arm晶元內部 控制器 通過驅動晶元 控制液晶屏 液晶屏種類 stn gf tft tft 在嵌入式中較為常用 lcd控制器結構與模組 由17個可程式設計的暫存器組和一塊 256 16的調色盤內 存組成,通過這些暫存器,可以配置...