說起RPC,就不能不提到分布式,這個促使RPC誕生的領域。
假設你有一個計算器接口,Calculator,以及它的實現(xiàn)類CalculatorImpl,那么在系統(tǒng)還是單體應用時,你要調(diào)用Calculator的add方法來執(zhí)行一個加運算,直接new一個CalculatorImpl,然后調(diào)用add方法就行了,這其實就是非常普通的本地函數(shù)調(diào)用,因為在同一個地址空間,或者說在同一塊內(nèi)存,所以通過方法棧和參數(shù)棧就可以實現(xiàn)。

服務器啟動了一個線程監(jiān)聽 Socket 端口,
有Socket訪問了, 反序列化解析出
調(diào)用哪個Service 哪個 方法, 以及傳入的 參數(shù),
再用Socket 寫回去.

簡單rpc框架

暴露服務
客戶端 利用 Jdk 的Proxy 生成了一個代理類,
在創(chuàng)建 Proxy 時建立與服務器的Socket連接.
調(diào)用 Proxy 的方法時, 向服務器發(fā)送數(shù)據(jù), 等待結果返回.
核心就是socket和動態(tài)代理

引用遠程服務

prc調(diào)用