GRPC基礎入門

2021-09-02 21:31:50 字數 1311 閱讀 6152

專案中要使用rpc協議框架來實現兩個系統之間的介面呼叫。a系統呼叫b系統的相應介面,因為考慮到http請求會包含更多冗餘資訊,造成請求過大,因此選用了rpc眾多框架中的grpc。 

grpc是google開源的rpc框架,目前版本1.0.0,看jar包引入包括netty與okhttp,同時序列化中使用的是protobuf(google自主研發的序列化方式—支援http2.0與多路復用,同時對資料進行壓縮,效率較高,跨平台),目前grpc中的protobuf使用的是3.0最新版本(除了部分語言目前僅支援protobuf 2版本)。

一.為什麼要使用grpc

rpc可以基於tcp協議也可以基於http協議,基於tcp的rpc協議較為難讀,不友好,雖然資料量小精簡,但如果對資料速度及io要求沒有那麼高,完全可以使用基於http協議的rpc。由於grpc基於http/2標準設計,所以相對於其他rpc框架,grpc帶來了更多強大功能,如雙向流、頭部壓縮、多復用請求等。這些功能給移動裝置帶來重大益處,如節省頻寬、降低tcp鏈結次數、節省cpu使用和延長電池壽命等。同時,grpc還能夠提高了雲端服務和web應用的效能。grpc既能夠在客戶端應用,也能夠在伺服器端應用,從而以透明的方式實現客戶端和伺服器端的通訊和簡化通訊系統的構建。

二.為什麼要使用protobuf

protocol buffers 是一種輕便高效的結構化資料儲存格式,可以用於結構化資料序列化,很適合做資料儲存或 rpc 資料交換格式。 

比json、xml效率更高,以高效的二進位制方式儲存,比 xml 小 3 到 10 倍,快 20 到 100 倍。protobuf 的程式設計模式比較友好,簡單易學。 

有兩項技術保證了採用 protobuf 的程式能獲得相對於 xml 極大的效能提高: 

1.protobuf 序列化後的資訊內容,資訊的表示非常緊湊。 

protobuf 序列化後所生成的二進位制訊息非常緊湊,這得益於 protobuf 採用的非常巧妙的 encoding 方法。 

2.protobuf 封解包的大致過程,封解包的速度。 

首先我們來了解一下 xml 的封解包過程。xml 需要從檔案中讀取出字串,再轉換為 xml 文件物件結構模型。之後,再從 xml 文件物件結構模型中讀取指定節點的字串,最後再將這個字串轉換成指定型別的變數。這個過程非常複雜,其中將 xml 檔案轉換為文件物件結構模型的過程通常需要完成詞法文法分析等大量消耗 cpu 的複雜計算。 

反觀 protobuf,它只需要簡單地將乙個二進位制序列,按照指定的格式讀取到程式對應的結構型別中就可以了。從上一節的描述可以看到訊息的 decoding 過程也可以通過幾個位移操作組成的表示式計算即可完成。速度非常快。

gRPC入門小結

首先要知道rpc是什麼 remote procedure call的簡稱,翻譯成中文就是遠端過程呼叫。rpc主要是為了解決以下倆個問題 grpc 一開始由 google 開發,是一款語言中立 平台中立 開源的遠端過程呼叫 rpc 系統,g有global的意思 在grpc裡客戶端應用可以像呼叫本地物件...

go版本gRPC入門

本文通過乙個簡單的示例,了解如何在go中使用grpc。使用命令列安裝 使用以下命令安裝grpc go get google.golang.org grpc 獲取編譯器外掛程式protoc gen go,並將其安裝在 gobin路徑中,預設為 gopath bin。5 必須設定好 path環境變數,協...

go語言 grpc入門

go get google.golang.org grpc1.編寫.proto描述檔案 hello.proto syntax proto3 package proto message string service helloservice2.使用protoc工具生成相應的go 生成的 與porto描...