gRPC筆記與相關(guān)問題

gRPC筆記

為什么要用RPC孤个,數(shù)據(jù)編碼,請求映射沛简?

數(shù)據(jù)編碼就是序列化齐鲤,反序列化,將對象變成字節(jié)流發(fā)送給服務(wù)端椒楣,服務(wù)端將收到的字節(jié)流再轉(zhuǎn)化為對象

常見的序列化给郊,反序列化工具XML, JSON, Protobuf。

既然Protobuf在某些場景下效率要比JSON高捧灰,為什么高淆九?

Json的缺點就是非字符串的編碼效率低,int類型在內(nèi)存只占兩個字節(jié)65535, 轉(zhuǎn)化成JSON卻需要五個字節(jié)炭庙,bool則需要占用四到五個字節(jié)

另一個缺點就是信息冗余饲窿,面對同一個接口同一個對象,需要重復(fù)傳送相同的字段名焕蹄。

Json在編碼效率和可讀性之間選擇了可讀性

Protobuf選用了VarInts對數(shù)字進(jìn)行編碼逾雄,解決了效率問題,另一方面將字段都指定為整數(shù)編號擦盾,傳輸?shù)臅r候只傳送字段編號嘲驾,解決了冗余問題,Protobuf使用.proto文件作為schema記錄字段和編號的對應(yīng)關(guān)系

gRPC底層使用的HTTP/2協(xié)議

HTTP協(xié)議本身可以通過Content-Encoding表示壓縮算法迹卢,使用Contetn-length指定數(shù)據(jù)長度辽故。

而gRPC重新定義了一套機制,因為gRPC支持stream rpc,流式接口腐碱。

gRPC支持三種流式接口誊垢,請求流,響應(yīng)流症见,雙向流喂走。

請求流可以在RPC發(fā)起之后不斷發(fā)送新的請求消息,此類接口最典型的使用場景事發(fā)推送或者短信谋作。

相應(yīng)流可以在RPC發(fā)起之后不斷接受新的響應(yīng)消息芋肠,最典型的場景就是訂閱消息通知

雙向流可以在RPC發(fā)起之后同時手法消息,最典型的場景就是實時語音轉(zhuǎn)字幕

為了實現(xiàn)流式傳輸遵蚜,gRPC引入Length-Prefixed Message同一個gRPC請求的不同消息共用HTTP頭信息帖池,只能給每個消息單獨加一個五字節(jié)的前綴來表示壓縮和長度信息。gRPC還定義了自己的grpc-status和grpc-message

HTTP/1.1也是支持復(fù)用TCP連接的吭净,但這種復(fù)用有一個明顯的缺陷睡汹,所有請求必須排隊,先到先服務(wù)寂殉。

HTTP/2引入了stream的概念囚巴,解決了TCP鏈接復(fù)用的問題,可以在一條TCP連接上并行收發(fā)HTTP消息友扰,而無需等待彤叉。

即gRPC為了實現(xiàn)流式特性,使用了HTTP/2進(jìn)行通信村怪。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秽浇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子实愚,更是在濱河造成了極大的恐慌兼呵,老刑警劉巖兔辅,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異击喂,居然都是意外死亡维苔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門懂昂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來介时,“玉大人,你說我怎么就攤上這事凌彬》腥幔” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵铲敛,是天一觀的道長褐澎。 經(jīng)常有香客問我,道長伐蒋,這世上最難降的妖魔是什么工三? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮先鱼,結(jié)果婚禮上俭正,老公的妹妹穿的比我還像新娘。我一直安慰自己焙畔,他們只是感情好掸读,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宏多,像睡著了一般儿惫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绷落,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天姥闪,我揣著相機與錄音始苇,去河邊找鬼砌烁。 笑死,一個胖子當(dāng)著我的面吹牛催式,可吹牛的內(nèi)容都是我干的函喉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼荣月,長吁一口氣:“原來是場噩夢啊……” “哼管呵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哺窄,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捐下,失蹤者是張志新(化名)和其女友劉穎账锹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坷襟,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡奸柬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了婴程。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廓奕。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖档叔,靈堂內(nèi)的尸體忽然破棺而出桌粉,到底是詐尸還是另有隱情,我是刑警寧澤衙四,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布铃肯,位于F島的核電站,受9級特大地震影響传蹈,放射性物質(zhì)發(fā)生泄漏缘薛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一卡睦、第九天 我趴在偏房一處隱蔽的房頂上張望宴胧。 院中可真熱鬧,春花似錦表锻、人聲如沸恕齐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽显歧。三九已至,卻和暖如春确镊,著一層夾襖步出監(jiān)牢的瞬間士骤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工蕾域, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拷肌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓旨巷,卻偏偏與公主長得像巨缘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子采呐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

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

  • 原文出處:gRPC gRPC分享 概述 gRPC 一開始由 google 開發(fā)若锁,是一款語言中立、平臺中立斧吐、開源的遠(yuǎn)...
    小波同學(xué)閱讀 7,219評論 0 18
  • gRPC 是一個高性能又固、通用的開源RPC框架仲器,基于HTTP/2協(xié)議標(biāo)準(zhǔn)和Protobuf序列化協(xié)議開發(fā),支持眾多的...
    小波同學(xué)閱讀 19,494評論 6 19
  • 概覽: Netty 是什么仰冠?為什么要用 Netty娄周?Netty 應(yīng)用場景了解么?Netty 核心組件有哪些沪停?分別有...
    為妳奮閗閱讀 423評論 0 1
  • 在微服務(wù)架構(gòu)中煤辨,可能完成一個請求需要多個服務(wù)進(jìn)行協(xié)作,比如一個輸出商品詳情頁的HTTP接口木张,聚合服務(wù)需要查詢多個通...
    千杉沐雪閱讀 1,617評論 0 0
  • 寫在前面 首先聲明這篇文章只是介紹gRPC在Go語言中的使用入門級的文章众辨,不包含多少深入的內(nèi)容,讀者對象是g...
    foundwei閱讀 2,632評論 0 5