一.基礎
本人從事大數據行業,故此做系列的博文,爲以後開發分佈式計算基礎服務做準備,這個系列重點了解一些rpc的思路,用什麼組件實現的不重要。
技術棧:
動態代理:https://blog.csdn.net/qq_19968255/article/details/82885416
zookeeper:https://blog.csdn.net/qq_19968255/article/details/82885663
線程:https://blog.csdn.net/qq_19968255/article/details/82881794
反射:https://blog.csdn.net/qq_19968255/article/details/82883570
netty:https://blog.csdn.net/qq_19968255/article/details/82734129
二.簡介
RPC—遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,爲通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分佈式多程序在內的應用程序更加容易。
RPC採用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然後等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達爲止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答覆信息,然後等待下一個調用信息,最後,客戶端調用進程接收答覆信息,獲得進程結果,然後調用執行繼續進行。
三.原理
運行時候,內部操作步驟:
1.調用客戶端句柄;執行傳送參數
2.調用本地系統內核發送網絡消息
3.消息傳送到遠程主機
4.服務器句柄得到消息並取得參數
5.執行遠程過程
6.執行的過程將結果返回服務器句柄
7.服務器句柄返回結果,調用遠程系統內核
8.消息傳回本地主機
9.客戶句柄由內核接收消息
10.客戶接收句柄返回的數據
四.結構
一般開發rpc的結構
五.異常
rpc調用和本地調用的區別:
1.rpc調用有網絡問題,可能發送不到服務端,本地調用一定會執行。
2.rpc調用還會拋出rpc框架運行時候其它異常,本地調用只會拋出接口聲明的異常。
3.兩者性能方面可能差距很大,這取決於rpc固有消耗所佔的比重,計算任務時間非常高,才值得使用rpc發送到服務端,單獨進程完成分佈式計算任務。
rpc異常策略:
可能是運行時候異常,可能是業務異常,需要區分對待。
未完待續!
rpc系列-rpc02:https://blog.csdn.net/qq_19968255/article/details/82896520