乙個簡單RPC框架是怎樣煉成的 I 開局篇

2021-09-07 11:52:03 字數 1311 閱讀 9045

開場白,這是乙個關於rpc的相關概念的普及篇系列,主要是通過一步步的調整,提煉出乙個相對完整的rpc框架。

rpc(remote procedure call protocol)——遠端過程呼叫

協議,基於c/s模型。網路上有一篇文章寫得不錯。能夠去了解一下相關概念

深入淺出

rpc

這裡,直接使用一下上面作者的乙個示意圖

總結下來就是有4塊核心內容

rpc資料的傳輸。如上面的rpcconnector。rpcchannel。它們主要負責傳輸資料這一塊。 詳細client與server之間的連線是不是socket連線。是原始tcp連線還是使用http,這些rpc協議本身不做不論什麼規定。

那麼我們的任務就是抽象出這樣乙個傳輸層。

rpc訊息。如上面的rpcprotocol, 以及encode,decode方法。

由於rpc是遠端呼叫。所以沒辦法直接函式呼叫。於是就必須用一套專門的協議,去表示呼叫以及呼叫結果。另外,由於實際應用基本都是跨機器連線,所以無法直接傳遞記憶體變數,也就是說還須要將訊息編碼成 諸如字串一類的能夠跨裝置傳輸的內容。詳細的rpc訊息的封裝協議非常多,常見的是基於xml,json封裝的。那麼我們的任務就是抽象出這樣乙個協議層。

rpc服務註冊。

如上面callee -->export。 服務端詳細支援哪些呼叫。收到來自client的rpc請求後,如何去呼叫真正的須要執行的方法,這些內容也是乙個完整的rpc框架必須考慮的。一些略微高階一點的框架,都是能夠服務自己主動註冊的。如今主流的rpc框架,還支援通過idl(inte***ce definition language)來定義遠端介面,實現跨語言的rpc 。那麼我們的任務就是抽象出乙個rpc服務的註冊機制

rpc訊息處理。如上面的rpcinvoker。這裡事實上與rpc本身關係不大,一般就是考慮支援非同步/同步呼叫。 這一部分,大概我也會做一些說明,但不是這個系列的重點。

這次rpc框架的搭建,莊稼人將採用python作為開發語言,原因嘛。還有點不好意思:**量少。方便解釋(偷懶是碼工的天性

希望在這個過程中,能帶給各位同學更深刻的rpc入門知識。以及**改動的知識。說得有點高了,呵呵。

RPC 手寫乙個RPC框架

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

乙個自己實現的rpc框架

整合spring配置 檔案頭部加入rpc的namespace 服務端 服務端標籤 其中,protocol標籤屬性分析 port指定服務端繫結的埠 service標籤屬性分析 inte ce指定介面的完整類名,ref指定實現類的id,且該實現類必須放入spring容器中service標籤也可 以用註解...

設計乙個分布式RPC框架

提前先祝大家春節快樂!好了,先簡單聊聊。我從事的是大資料開發相關的工作,主要負責的是大資料計算這塊的內容。最近hive集群跑任務總是會出現thrift連線hs2相關問題,研究了解了下內部原理,突然來了興趣,就想著自己也實現乙個rpc框架,這樣可以讓自己在設計與實現rpc框架過程中,也能從中了解和解決...