4 grpc的原理

1 rpc流

  • 客戶端調(diào)用
  • sub構(gòu)建消息
  • http2網(wǎng)絡(luò)連接
  • 將消息傳遞給服務(wù)端骨架

2 pb編碼消息

pb的編碼方式:標(biāo)簽+值,標(biāo)簽+值 (字段索引決定位置)

標(biāo)簽:字段索引+線路類型

值編碼:不同的類型采用不同的編碼

  • int32使用varint編碼 (intx)
  • 字符串使用utf8編碼
  • 有符號整數(shù) zigzag轉(zhuǎn)為正數(shù),再varint
  • 非varint類型,固定字節(jié)float fixed64
  • 基于長度分隔

3 基于長度前綴的消息分幀

大端格式

壓縮標(biāo)+消息長度+數(shù)據(jù)內(nèi)容

grpc支3種傳輸方式

  • http2
  • Cronet
  • 進程內(nèi)的in-process

4 基于http2 的grpc

http2的客戶端和服務(wù)端的鏈接都通過一個tcp連接完成

重要術(shù)語

  • 流 (stream建立好的連接上的雙向字節(jié)流)
  • 幀(frame, 最小單元。幀頭,幀尾)
  • 消息(完整的幀序列:一個或多個幀祖冊)

消息格式

  • 數(shù)據(jù)- 頭信息-數(shù)據(jù)

請求消息

  • 請求頭信息,長度為前綴的消息, EOS標(biāo)記

響應(yīng)消息

  • 響應(yīng)投信息--長度為前綴的消息,trailer(攜帶狀態(tài)碼和請求的狀態(tài)消息)

理解通信模式

  • 一元模式,消息最后添加EOS標(biāo)記
  • 服務(wù)的流模式
    • 服務(wù)端發(fā)送多條消息
  • 客戶端流模式
    • 客戶端發(fā)送多條消息
  • 雙寫流模式
    • 都發(fā)送多條消息

5 grpc實現(xiàn)架構(gòu)

核心層

  • 代碼生成的api
  • grpc核心層
  • http/2
  • ssl
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • protocol buffers 報文結(jié)構(gòu) protocol buffers編碼格式是盡量將字段的元信息和字段的值...
    簡單一點點閱讀 2,528評論 0 0
  • 在微服務(wù)架構(gòu)中,可能完成一個請求需要多個服務(wù)進行協(xié)作,比如一個輸出商品詳情頁的HTTP接口,聚合服務(wù)需要查詢多個通...
    千杉沐雪閱讀 1,924評論 0 0
  • gRPC 是基于 HTTP/2 協(xié)議的,要深刻理解 gRPC,理解下 HTTP/2 是必要的。 演進 http2....
    tracy_668閱讀 14,145評論 0 7
  • 1 服務(wù)化 服務(wù)化(SOA: Service-oriented architecture): 小而美的獨立功能 平...
    tracy_668閱讀 8,221評論 0 4
  • gRPC 主要使用同步請求-響應(yīng)模型來交互,但是在初次連接建立后,可以實現(xiàn)全異步或者流模式; SOAP:Simpl...
    蘇慕漓閱讀 1,405評論 0 0

友情鏈接更多精彩內(nèi)容