分佈式高併發中,如何發揮gRPC的威力?來看看它的底層實現原理!

gRPC是什麼

gRPC是什麼可以用官網的一句話來概括:

A high-performance, open-source universal RPC framework

所謂RPC(remote procedure call 遠程過程調用)框架實際是提供了一套機制,使得應用程序之間可以進行通信,而且也遵從server/client模型。使用的時候客戶端調用server端提供的接口就像是調用本地的函數一樣。如下圖所示就是一個典型的RPC結構圖。


gRPC的優點

gRPC和restful API都提供了一套通信機制,用於server/client模型通信,而且它們都使用http作爲底層的傳輸協議(嚴格地說, gRPC使用的http2.0,而restful api則不一定)。不過gRPC還是有些特有的優勢,如下:

  • gRPC可以通過protobuf來定義接口,從而可以有更加嚴格的接口約束條件。

  • 另外,通過protobuf可以將數據序列化爲二進制編碼,這會大幅減少需要傳輸的數據量,從而大幅提高性能。

  • gRPC可以方便地支持流式通信(理論上通過http2.0就可以使用streaming模式, 但是通常web服務的restful api似乎很少這麼用,通常的流式數據應用如視頻流,一般都會使用專門的協議如HLS,RTMP等,這些就不是我們通常web服務了,而是有專門的服務器應用。)

gRPC+K8S

gRPC目前是k8s生態裏的事實標準,而Kubernetes又是容器編排的事實標準。gRPC已經廣泛應用於Istio體系,包括:

  • Envoy與Pilot(現在叫istiod)間的XDS協議

  • mixer的handler擴展協議

  • MCP(控制面的配置分發協議)

在Cloud Native的潮流下,開放互通的需求必然會產生基於HTTP/2的RPC。即使沒有gRPC,也會有其它基於HTTP/2的RPC。一方面,通過gRPC接入擴展兼具了sdk與RESTful的優勢: 支持跨語言調用的同時支持友好安全的接入方式。另一方面,gRPC的stream特性雖然好多答主說用不上,但在服務治理的場景下是非常合適的。輕舟微服務框架就使用了gRPC stream實現心跳檢查、配置下發,ServiceMesh服務發現、路由規則的下發用的也是gRPC協議。在這些場景下,gRPC stream成爲了很常用的一種手段。

gPRC四天集訓

目前越來越多的開發崗位,特別是高薪崗位,已將熟悉gRPC作爲任職要求中的重要指標,然而,gRPC的學習資料,特別是視頻學習資料少之又少。這裏,推薦大家一門gRPC集訓課,課程由架構師Tony老師耗時10天匠心打造,四天的時間裏,Tony老師將從gRPC的使用、原理、優化、實戰逐一爲大家講解,讓大家真正對gRPC有全面的認識,課程爲期四天,4月6日~9日晚上八點至九點半直播教學,本號粉絲,一律免費學習

微信掃碼加入集訓羣 

請如掃碼失敗加微信號:ruanmou777

週一:gRPC-入門

   1.1 grpc 介紹 

   1.2 grpc 微服務和Grpc如何演化

   1.3 grpc 跨平臺應用(跨語言演示)

週二:gRPC-流式處理

   1.1 什麼是流式處理 

   1.2 流式處理api介紹

   1.3 流式處理應用場景

   1.4 流式處理實現原理

週三:grpc-安全

   1.1 什麼是grpc安全

   1.2 grpc身份驗證和授權

   1.3 grpc日誌記錄和診斷

週四:grpc-集羣與部署

   1.1 什麼是grpc集羣

   1.2 grpc如何實現集羣負載均衡

   1.3 grpc如何部署

附贈額外福利一

福利1:送價值399元.NET Core視頻合集

福利2:送價值299元微服務視頻合集

福利3:送價值499元數據結構算法視頻合集

福利4:贈送價值199元Redis視頻合集

掃碼獲取以上福利

僅限前199名

微信掃碼加入集訓羣 

請如掃碼失敗加微信號:ruanmou777

附贈額外福利二

集訓完畢後,學習羣裏抽獎活動

中獎者獲書一本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章