關(guān)于遠程過程調(diào)用gRPC的那些事兒
如果你接觸過分布式系統(tǒng)的話,那么你一定接觸過RPC,它是Remote Procedure Call的縮寫,翻譯過來的意思是遠程過程調(diào)用,用通俗地語言來說就是允許一臺計算機上的程序去執(zhí)行另一臺機器上的程序,而能夠?qū)崿F(xiàn)這種遠程需求的就是RPC這種協(xié)議。而gRPC就是谷歌實現(xiàn)的一種RPC協(xié)議,因為它更快速,高效且安全,因此很多公司選擇它作為RPC的實現(xiàn)。
誕生背景
在2000年之前,人們就已經(jīng)有RPC調(diào)用的實現(xiàn),當時人們采用的是REST來實現(xiàn),但是這種效率非常低下,因此,在2016年,谷歌推出了免費開源的gRPC協(xié)議。
因為它的性能非常強,它的輕量級消息比json的消息傳輸性能提升了非常多。
此外,它還提供了非常方便的代碼生成工具,你可以非常方便地生成各種語言對應的RPC代碼。
gRPC的優(yōu)點
就像我們之前說的一樣,性能是最重要的因素,無論你是多么地好用,多么地方便,如果你的效率不夠高,你是不能得到大部分人的認可的。而這也是c語言一直占據(jù)編程市場份額的主要語音,性能足夠強大。
gRRC因為提供了自動生成工具,因此通過定義通用的proto文件,我們可以非常快速地構(gòu)建代碼,可以非常方便地生成各種語言對應的代碼,非常適合多語言的團隊項目。
gRPC是支持雙向流的,這對于游戲應用來說有著巨大的作用,此外雙向流也讓消息傳遞變得非常方便。
gRPC是安全的,它支持TLS協(xié)議,它支持通過基于令牌的身份驗證??梢酝ㄟ^通道進行調(diào)用,確保數(shù)據(jù)安全。
如何使用
谷歌提供了非常豐富詳盡的文檔,你可以找到你擅長的編程語言,然后通過簡單的案例來開始學習。
你需要掌握的就是如何在proto文件中定義函數(shù)和消息體結(jié)構(gòu),然后通過運行g(shù)rpc_tools,你就可以生成對應語言的RPC代碼。
它的過程一般是下面這樣的。
- 定義服務service
- 定義rpc方法,指定請求類型,返回類型
- 生成服務器端代碼,生成客戶端代碼
- 創(chuàng)建服務器,創(chuàng)建客戶端
總結(jié)
gRPC有著出色的效率,支持雙向流,有著非常高的安全性,因此很多公司都開始采用gRPC作為遠程調(diào)用的框架。
對于物聯(lián)網(wǎng),gRPC的出色性能將會發(fā)揮更大的作用。在萬物互聯(lián)的時代,你確定不學習一下gRPC嗎?