RPC通信原理
什么是 RPC
RPC(Remote Procedure Call Protocol)遠程過程調(diào)用協(xié)議。
通俗的描述是:客戶端在不知道調(diào)用細節(jié)的情況下,調(diào)用存在于遠程計算上的某個過程或函數(shù),就像調(diào)用本地應(yīng)用程序中的一樣。
正式的描述是:一種通過網(wǎng)絡(luò)從遠程計算機程序上請求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。
一句話總結(jié):
RPC:remote procedure call Protocol 遠程過程調(diào)用
調(diào)用遠程服務(wù),就像調(diào)用本地的服務(wù)一樣,不用關(guān)心調(diào)用細節(jié),就像調(diào)用本機的服務(wù)一樣的
RPC 主要特質(zhì):
RPC 是協(xié)議:協(xié)議意味著規(guī)范。目前典型的 RPC 實現(xiàn)包括Hetty 等。但這些實現(xiàn)往往都會附加其他重要功能,例如 Du理、訪問權(quán)限管理等功能。
網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò) IO 模型對其透明:既然 RPC 的客戶端認(rèn)地對象。那么傳輸層使用的是 TCP/UDP 還是 HTTP 協(xié)議,又或絡(luò)協(xié)議它就不需要關(guān)心了。既然網(wǎng)絡(luò)對其透明,那么調(diào)哪一種網(wǎng)絡(luò) IO 模型調(diào)用者也不需要關(guān)心。
信息格式對其透明:遠程調(diào)用過程中,需要傳遞一些參調(diào)用結(jié)果。至于這些參數(shù)會以某種信息格式傳遞給網(wǎng)絡(luò)上的個信息格式是怎樣構(gòu)成的,調(diào)用方是不需要關(guān)心的。
跨語言能力:對于調(diào)用方來說,不知道也無需知道遠程語言運行的,無論服務(wù)器方使用的是什么語言,本次調(diào)用都值也應(yīng)該按照調(diào)用方程序語言所能理解的形式進行描
?
RPC 原理:
實現(xiàn) RPC 的程序包括 5 個部分:User、User-stub、RPCRuntime、Server-stub、Server。
user 就是發(fā)起 RPC 調(diào)用的 client ,當(dāng) user 想發(fā)起一個遠程調(diào)用時,它實際是通過本地調(diào)用 user-stub。 user-stub 負責(zé)將調(diào)用的接口、方法和參數(shù)通過約定的協(xié)議規(guī)范進行編碼并通過本地的 RPCRuntime 實例傳輸?shù)竭h端的實例。遠端 RPCRuntim 實例收到請求后交給 server-stub 進行解碼后發(fā)起本地端調(diào)用,調(diào)用結(jié)果再返回給 user 端。
stub:為屏蔽客戶調(diào)用遠程主機上的對象,必須提供某種方式來模擬本地對象,這種本地對象稱為存根(stub),存根負責(zé)接收本地方法調(diào)用,并將它們委派給各自的具體實現(xiàn)對象
總結(jié)
- 上一篇: thinkphp5.1 中间件是什么有什
- 下一篇: RESTful API 最佳实践