關(guān)于遠(yuǎn)程過(guò)程調(diào)用gRPC的那些事兒
如果你接觸過(guò)分布式系統(tǒng)的話,那么你一定接觸過(guò)RPC,它是Remote Procedure Call的縮寫(xiě),翻譯過(guò)來(lái)的意思是遠(yuǎn)程過(guò)程調(diào)用,用通俗地語(yǔ)言來(lái)說(shuō)就是允許一臺(tái)計(jì)算機(jī)上的程序去執(zhí)行另一臺(tái)機(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來(lái)實(shí)現(xiàn),但是這種效率非常低下,因此,在2016年,谷歌推出了免費(fèi)開(kāi)源的gRPC協(xié)議。
因?yàn)樗男阅芊浅?qiáng),它的輕量級(jí)消息比json的消息傳輸性能提升了非常多。

此外,它還提供了非常方便的代碼生成工具,你可以非常方便地生成各種語(yǔ)言對(duì)應(yīng)的RPC代碼。
gRPC的優(yōu)點(diǎn)
就像我們之前說(shuō)的一樣,性能是最重要的因素,無(wú)論你是多么地好用,多么地方便,如果你的效率不夠高,你是不能得到大部分人的認(rèn)可的。而這也是c語(yǔ)言一直占據(jù)編程市場(chǎng)份額的主要語(yǔ)音,性能足夠強(qiáng)大。
gRRC因?yàn)樘峁┝俗詣?dòng)生成工具,因此通過(guò)定義通用的proto文件,我們可以非??焖俚貥?gòu)建代碼,可以非常方便地生成各種語(yǔ)言對(duì)應(yīng)的代碼,非常適合多語(yǔ)言的團(tuán)隊(duì)項(xiàng)目。

gRPC是支持雙向流的,這對(duì)于游戲應(yīng)用來(lái)說(shuō)有著巨大的作用,此外雙向流也讓消息傳遞變得非常方便。
gRPC是安全的,它支持TLS協(xié)議,它支持通過(guò)基于令牌的身份驗(yàn)證??梢酝ㄟ^(guò)通道進(jìn)行調(diào)用,確保數(shù)據(jù)安全。
如何使用
谷歌提供了非常豐富詳盡的文檔,你可以找到你擅長(zhǎng)的編程語(yǔ)言,然后通過(guò)簡(jiǎn)單的案例來(lái)開(kāi)始學(xué)習(xí)。
你需要掌握的就是如何在proto文件中定義函數(shù)和消息體結(jié)構(gòu),然后通過(guò)運(yùn)行g(shù)rpc_tools,你就可以生成對(duì)應(yīng)語(yǔ)言的RPC代碼。

它的過(guò)程一般是下面這樣的。
- 定義服務(wù)service
- 定義rpc方法,指定請(qǐng)求類(lèi)型,返回類(lèi)型
- 生成服務(wù)器端代碼,生成客戶(hù)端代碼
- 創(chuàng)建服務(wù)器,創(chuàng)建客戶(hù)端
總結(jié)
gRPC有著出色的效率,支持雙向流,有著非常高的安全性,因此很多公司都開(kāi)始采用gRPC作為遠(yuǎn)程調(diào)用的框架。

對(duì)于物聯(lián)網(wǎng),gRPC的出色性能將會(huì)發(fā)揮更大的作用。在萬(wàn)物互聯(lián)的時(shí)代,你確定不學(xué)習(xí)一下gRPC嗎?



























