rpc(遠端過程呼叫: remote procedure call)是一種通過網路從其它程序或者其他主機上的程序請求服務的方式。rpc是分布式系統的基礎。
grpc是主要由google公司開發的乙個高效能、通用的開源rpc框架。grpc基於http2.0協議,基於protobuf序列化協議,語言中立、平台中立。
http1.0協議:
是文字協議,可讀性好,但並不高效
一問一答的互動模式,request 之後,必須等到 response才能下一次請求,而且每次請求都要攜帶冗長重複的請求頭資訊
沒有推送機制,只能通過長輪詢之類的方式,浪費資源。除非用websocket協議方式。
http2.0協議:
二進位制協議,可讀性巨差,有更小的傳輸體積,解析也不容易出錯。
多路復用,允許乙個http2.0連線發起多重請求和響應,可以實現多個流並行,卻不用建立多個tcp連線。
首部壓縮,http2.0依舊是無狀態協議,http2.0使用首部表來跟蹤儲存之前傳送的鍵值對,對於相同的資料,不再通過請求傳送,修改時只需傳送一次。
服務端推送,可以通過流從服務端直接推送給客戶端,即使客戶端沒有請求這些資料。
grpc服務是基於protocuf定義的。
優點:protobuf是二進位制協議,效能好、效率高,節約網路頻寬
生成目標**,簡單易用
序列化和反序列化直接對應其中的類或結構體
支援版本相容
支援多種語言
GRPC學習筆記(一)
專案中要使用rpc協議框架來實現兩個系統之間的介面呼叫。a系統呼叫b系統的相應介面,因為考慮到http請求會包含更多冗餘資訊,造成請求過大,因此選用了rpc眾多框架中的grpc。grpc是google開源的rpc框架,目前版本1.0.0,看jar包引入包括netty與okhttp,同時序列化中使用的...
grpc學習筆記
在 grpc 裡客戶端應用可以像呼叫本地物件一樣直接呼叫另一台不同的機器上服務端應用的方法,使得您能夠更容易地建立分布式應用和服務。與許多 rpc 系統類似,grpc 也是基於以下理念 定義乙個服務,指定其能夠被遠端呼叫的方法 包含引數和返回型別 在服務端實現這個介面,並執行乙個 grpc 伺服器來...
Grpc系列學習 一
以下內容出自我的個人部落格 個人部落格 grpc系列學習 一 剛開始學習go的時候就想認識go有沒有類似與springcloud的分布式框架,也是那個時候得知了grpc.說來慚愧,對grpc的認識也僅僅停留在 我知道有這麼個東西,但是我不會用.因為準備寫一系列部落格,來開始重新拾起這個分布式框架.h...