一句話總結:
RPC:remote procedure call Protocol 遠程過程調用
調用遠程服務,就像調用本地的服務一樣,不用關心調用細節,就像調用本機的服務一樣的
什么是 RPC
RPC(Remote Procedure Call Protocol)遠程過程調用協議。
通俗的描述是:客戶端在不知道調用細節的情況下,調用存在於遠程計算上的某個過程或函數,就像調用本地應用程序中的一樣。
正式的描述是:一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。
RPC 主要特質:
RPC 是協議:協議意味着規范。目前典型的 RPC 實現包括Hetty 等。但這些實現往往都會附加其他重要功能,例如 Du理、訪問權限管理等功能。
網絡協議和網絡 IO 模型對其透明:既然 RPC 的客戶端認地對象。那么傳輸層使用的是 TCP/UDP 還是 HTTP 協議,又或絡協議它就不需要關心了。既然網絡對其透明,那么調哪一種網絡 IO 模型調用者也不需要關心。
信息格式對其透明:遠程調用過程中,需要傳遞一些參調用結果。至於這些參數會以某種信息格式傳遞給網絡上的個信息格式是怎樣構成的,調用方是不需要關心的。
跨語言能力:對於調用方來說,不知道也無需知道遠程語言運行的,無論服務器方使用的是什么語言,本次調用都值也應該按照調用方程序語言所能理解的形式進行描
RPC 原理:
實現 RPC 的程序包括 5 個部分:User、User-stub、RPCRuntime、Server-stub、Server。

user 就是發起 RPC 調用的 client ,當 user 想發起一個遠程調用時,它實際是通過本地調用 user-stub。 user-stub 負責將調用的接口、方法和參數通過約定的協議規范進行編碼並通過本地的 RPCRuntime 實例傳輸到遠端的實例。遠端 RPCRuntim 實例收到請求后交給 server-stub 進行解碼后發起本地端調用,調用結果再返回給 user 端。
stub:為屏蔽客戶調用遠程主機上的對象,必須提供某種方式來模擬本地對象,這種本地對象稱為存根(stub),存根負責接收本地方法調用,並將它們委派給各自的具體實現對象
