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