rpc 一般俗稱,遠(yuǎn)程過程調(diào)用,把本地的函數(shù),放到遠(yuǎn)端去調(diào)用。
通常我們調(diào)用一個方法,譬如: sumadd(10, 20),sumadd方法的具體實(shí)現(xiàn)要么是用戶自己定義,要么存在于該語言的庫函數(shù)中,也就說在sumadd方法的代碼實(shí)現(xiàn)在本地,它是一個本地調(diào)用!
“遠(yuǎn)程調(diào)用”意思就是:被調(diào)用方法的具體實(shí)現(xiàn)不在程序運(yùn)行本地,而是在別的某個地方(分布到各個服務(wù)器),但是用起來像是在本地。
rpc遠(yuǎn)程調(diào)用原理 :
比如 A調(diào)用B提供的remoteAdd方法:
首先A與B之間建立一個TCP連接;
然后A把需要調(diào)用的方法名(這里是remoteAdd)以及方法參數(shù)(10, 20)序列化成字節(jié)流發(fā)送出去;
B接受A發(fā)送過來的字節(jié)流,然后反序列化得到目標(biāo)方法名,方法參數(shù),接著執(zhí)行相應(yīng)的方法調(diào)用(可能是localAdd)并把結(jié)果30返回;
A接受遠(yuǎn)程調(diào)用結(jié)果,然后do()。