gRPC

gRPC 是 Google 基于 HTTP/2 以及 protobuf 的嗦董,要了解 gRPC 協(xié)議吏砂,只需要知道 gRPC 是如何在 HTTP/2 上面?zhèn)鬏斁涂梢粤?/p>

gRPC 通常有四種模式,unary镣典,client streaming镊叁,server streaming 以及 bidirectional streaming,對于底層 HTTP/2 來說团秽,它們都是 stream主胧,并且仍然是一套 request + response 模型

Request

gRPC 的 request 通常包含 Request-Headers, 0 或者多個(gè) Length-Prefixed-Message 以及 EOS

Request-Headers 直接使用的 HTTP/2 headers,在 HEADERS 和 CONTINUATION frame 里面派發(fā)习勤。定義的 header 主要有 Call-Definition 以及 Custom-Metadata踪栋。Call-Definition 里面包括 Method(其實(shí)就是用的 HTTP/2 的 POST),Content-Type 等图毕。而 Custom-Metadata 則是應(yīng)用層自定義的任意 key-value夷都,key 不建議使用 grpc- 開頭,因?yàn)檫@是為 gRPC 后續(xù)自己保留的

Length-Prefixed-Message 主要在 DATA frame 里面派發(fā)予颤,它有一個(gè) Compressed flag 用來表示該 message 是否壓縮囤官,如果為 1冬阳,表示該 message 采用了壓縮,而壓縮算法定義在 header 里面的 Message-Encoding 里面党饮。然后后面跟著四字節(jié)的 message length 以及實(shí)際的 message

EOS(end-of-stream) 會在最后的 DATA frame 里面帶上了 END_STREAM 這個(gè) flag肝陪。用來表示 stream 不會在發(fā)送任何數(shù)據(jù),可以關(guān)閉了

Response

Response 主要包含 Response-Headers劫谅,0 或者多個(gè) Length-Prefixed-Message 以及 Trailers见坑。如果遇到了錯(cuò)誤嚷掠,也可以直接返回 Trailers-Only捏检。

  • Response-Headers
    • HTTP-Status // 通常的 HTTP 200,301不皆,400
    • Content-Type
    • Custom-Metadata
  • Trailers-Only
    • HTTP-Status
    • Content-Type
    • Trailers
  • Trailers
    • Status // gRPC 的 status
    • 0 或者多個(gè) Custom-Metadata

如果在最后收到的 HEADERS frame 里面贯城,帶上了 Trailers,并且有 END_STREAM 這個(gè) flag霹娄,那么就意味著 response 的 EOS

Protobuf

gRPC 的 service 接口是基于 protobuf 定義的能犯,我們可以非常方便的將 service 與 HTTP/2 關(guān)聯(lián)起來

  • Path : /Service-Name/{method name}
  • Service-Name :?( {proto package name} "." ) {service name}
  • Message-Type : {fully qualified proto message name}
  • Content-Type : "application/grpc+proto"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市犬耻,隨后出現(xiàn)的幾起案子踩晶,更是在濱河造成了極大的恐慌,老刑警劉巖枕磁,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渡蜻,死亡現(xiàn)場離奇詭異,居然都是意外死亡计济,警方通過查閱死者的電腦和手機(jī)茸苇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沦寂,“玉大人学密,你說我怎么就攤上這事〈兀” “怎么了腻暮?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長毯侦。 經(jīng)常有香客問我哭靖,道長,這世上最難降的妖魔是什么叫惊? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任款青,我火速辦了婚禮,結(jié)果婚禮上霍狰,老公的妹妹穿的比我還像新娘抡草。我一直安慰自己饰及,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布康震。 她就那樣靜靜地躺著燎含,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腿短。 梳的紋絲不亂的頭發(fā)上屏箍,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機(jī)與錄音橘忱,去河邊找鬼赴魁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钝诚,可吹牛的內(nèi)容都是我干的颖御。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼凝颇,長吁一口氣:“原來是場噩夢啊……” “哼潘拱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拧略,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤芦岂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后垫蛆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體禽最,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年月褥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弛随。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宁赤,死狀恐怖舀透,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情决左,我是刑警寧澤愕够,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站佛猛,受9級特大地震影響惑芭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜继找,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一遂跟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦幻锁、人聲如沸凯亮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽假消。三九已至,卻和暖如春岭接,著一層夾襖步出監(jiān)牢的瞬間富拗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工鸣戴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啃沪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓葵擎,卻偏偏與公主長得像谅阿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子酬滤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)寓涨,斷路器盯串,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 經(jīng)過很長一段時(shí)間的開發(fā),TiDB 終于發(fā)了 RC3戒良。RC3 版本對于 TiKV 來說最重要的功能就是支持了 gRP...
    siddontang閱讀 41,931評論 7 80
  • gRPC 是一個(gè)高性能体捏、通用的開源RPC框架,其由 Google 主要面向移動(dòng)應(yīng)用開發(fā)并基于HTTP/2 協(xié)議標(biāo)準(zhǔn)...
    劉琨_10f5閱讀 1,297評論 4 6
  • gRPC 是基于 HTTP/2 協(xié)議的糯崎,要深刻理解 gRPC几缭,理解下 HTTP/2 是必要的。本篇文章會先簡單介紹...
    tcgx閱讀 1,281評論 1 1
  • 最近有朋友問我有沒有用過GRPC 沃呢,我一直以為RESTful的流行讓 RPC(Remote Procedure C...
    dimsky閱讀 10,711評論 8 12