微服務優化之使用gRPC做微服務的內部通訊

2022-04-25 14:33:11 字數 968 閱讀 8294

grpc是乙個高效能的、開源的、普遍通用的rpc框架。簡單地說,它能夠幫助我們建立透明的服務端和客戶端通訊系統。google開發了grpc並且將其開源。 通過它,乙個客戶端消費者服務可以像呼叫本地方法一樣,呼叫另一台主機上面的服務端方法。 grpc本質上仍然遵循常規的remote procedure call (rpc) 技術,但是在實現上使用了http2.0、協議緩衝區等更現代化的技術方案,從而最大程度上確保服務端和客戶端的互操作性及效能上的提公升。

當客戶端向服務端發起請求的時候,客戶端grpc類庫使用協議緩衝區並且封裝遠端過程呼叫(rpc),並且將其通過http2傳送到服務端。服務端將其拆封,並且使用協議緩衝區呼叫對應的程式。響應資料的過程和傳送請求的過程是類似的,只不過乙個是從客戶端到服務端,乙個是從服務端到客戶端。

從開發的角度,在服務端和客戶端使用grpc最大的好處在於:你的服務端的**和客戶端的**不需要擔心它會影響你解析json或者其他類似的文字格式訊息。grpc雖然接收到的是二進位制格式,但會並將其反序列化為物件。同樣的我們可以通過idl來定義服務介面,idl是非常強大的乙個特性,幫助我們處理多個微服務之間的互操作。

最初,幾乎所有的微服務之間都是通過json資料介面通訊的,乙個服務可能呼叫空乙個服務或者多個服務,被呼叫的服務可能還呼叫其他服務。如果其中任何乙個服務執行緩慢,將影響整個系統的執行速度,因為restful(json) api不支援http2的多路復用和雙向流模型。傳統的restful介面使用json、xml或者其他的一些格式作為資料載體,使得服務執行緩慢,記憶體占用較高、並且傳輸過程沒有壓縮。

grpc解決所有的這些問題,但是它僅僅用於系統應用微服務之間的通訊的情況,系統的對外服務介面仍然使用http-json介面。這樣保證對外部使用者的開發技術棧沒有任何影響。

與傳統rest api相比,使用grpc建立的api可以為你的應用帶來令人難以置信的效能改進。

微服務優化之使用gRPC做微服務的內部通訊

grpc是乙個高效能的 開源的 普遍通用的rpc框架。簡單地說,它能夠幫助我們建立透明的服務端和客戶端通訊系統。google開發了grpc並且將其開源。通過它,乙個客戶端消費者服務可以像呼叫本地方法一樣,呼叫另一台主機上面的服務端方法。grpc本質上仍然遵循常規的remote procedure c...

Go微服務 grpc的簡單使用

我的是windows,將壓縮包bin目錄下的exe放到環境path目錄中即可。然後獲取外掛程式支援庫 grpc執行時介面編譯碼支援庫 從 proto檔案 grpc介面描述檔案 生成 go檔案 的編譯器外掛程式 go get u github.com golang protobuf protoc ge...

微服務之如何建模微服務

1.什麼樣的服務是好的微服務?它應該具備這兩個特點 松耦合 高內聚 松耦合 如果做到了服務之間的松耦合,那麼修改乙個服務就不需要修改另外乙個服務了。使用微服務最重要的一點是,能夠獨立修改和部署單個服務而不需要修改系統的其他部分,這一點非常重要。那麼相對的什麼是緊耦合呢?使用緊耦合來做服務之間的整合,...