grpc客戶端跟grpc服務器端在整個交互過程都經(jīng)歷了哪些階段

??在閱讀gRPC-go源碼前,我們先從整體上簡單了解一下gRPC-go框架中grpc客戶端跟grpc服務器端整個的交互過程丰刊,都經(jīng)歷了哪些過程隘谣;
??在后面的章節(jié)中,我們會對每個過程進行詳細的分析;
??在grpc-go框架中grpc客戶端跟grpc服務器端整個交互主要經(jīng)歷以下階段:
??grpc客戶端跟grpc服務器端整體交互過程寻歧,如下圖所示:

grpc客戶端跟grpc服務器端整個交互過程大概經(jīng)歷了哪些階段

1)rpc鏈接建立階段
?a)建立tcp鏈接階段
??i.用戶設置鏈接參數(shù)掌栅,如攔截器設置,鏈接地址設置等
??ii.解析器根據(jù)鏈接地址來獲取后端對應的grpc服務器地址列表
??iii.平衡器根據(jù)grpc服務器地址列表來建立tcp鏈接
?b)幀交互階段
??i.grpc服務器端需要自己能夠發(fā)送的幀大小码泛、窗口大小等信息發(fā)送給客戶端猾封,
??ii.客戶端接收到這些信息后,會更新本地的幀大小噪珊,窗口大小等信息
??iii.PRI校驗

  1. rpc請求階段
    ?a)客戶端將請求服務的名稱晌缘,方法名稱、超時時間等信息封裝到頭幀里痢站,發(fā)送給服務器端磷箕;
    ?b)這樣服務器端接收到頭幀后,就可以解析出客戶端請求的方法名稱了瑟押,如Greeter服務下的SayHello方法名稱了
    ?c)客戶端需要將SayHello方法的具體參數(shù)值搀捷,進行序列化,壓縮后多望,封裝成數(shù)據(jù)幀發(fā)送服務器端
    ?d)服務器端接收到數(shù)據(jù)幀后,進行解壓怀偷,反序列化操作后,就得到了請求方法的具體參數(shù)值了播玖,如&pb.HelloRequest{Name: name}
    ?e)服務器端此時已經(jīng)知道了客戶端請求的方法名稱,以及該方法名稱的具體參數(shù)值了蜀踏,
    ?f)服務器端開始具體執(zhí)行方法,如真正執(zhí)行SayHello方法了果覆;執(zhí)行完成后,
    ?g)服務器端創(chuàng)建頭幀局待,將執(zhí)行的狀態(tài)信息發(fā)送給客戶端斑响,如grpc-status, 狀態(tài)碼200
    ?h)客戶端開始接收服務器端的發(fā)送的頭幀
    ?i)服務器端將執(zhí)行結(jié)果钳榨,進行序列化、壓縮后薛耻,封裝成數(shù)據(jù)幀,發(fā)送給客戶端
    ?j)客戶端接收到服務器端反饋的數(shù)據(jù)幀后饼齿,進行解壓饲漾,反序列化后瘟滨,,就可以得到SayHello方法的具體執(zhí)行結(jié)果了能颁。

簡單總結(jié)一下杂瘸,
rpc鏈接,其實就是干了四件事:

  • 第一伙菊,確定grpc服務器端的地址列表败玉,有哪些;
  • 第二镜硕,如何向grpc服務器端發(fā)起鏈接运翼,是鏈接一個grpc服務器端,還是全部連接兴枯,還是選擇負載低的grpc服務器進行鏈接血淌,
  • 第三,調(diào)用golang原生的net包财剖,進行tcp鏈接悠夯;
  • 第四,進行http2幀的交互過程躺坟,如接下來傳輸?shù)膸拇笮∈嵌嗌俾俨梗翱诖笮∈嵌嗌俚?/li>

rpc請求,干了哪些事咪橙?

  • 第一夕膀,通過頭幀,將客戶端請求方法的服務名稱美侦,方法名稱等信息傳輸給服務器端产舞;如服務名稱為helloworld.Greeter,方法名稱為SayHello
  • 第二菠剩,通過數(shù)據(jù)幀易猫,客戶端將請求方法的參數(shù)值發(fā)送給服務器端,
  • 第三赠叼,到目前為止擦囊,服務器端就知道客戶端要執(zhí)行的哪個服務下的哪個方法了,并且也知道該方法的具體參數(shù)值了嘴办;就可以具體執(zhí)行了
  • 第四瞬场,服務器端,將具體的執(zhí)行結(jié)果涧郊,封裝成數(shù)據(jù)幀贯被,再反饋客戶端,這樣客戶端就獲得了最終的執(zhí)行結(jié)果,也就是實現(xiàn)了在本地調(diào)用了遠程服務中的某個方法彤灶,或者說不同內(nèi)存空間的方法調(diào)用

在這里我們只需要簡單了解一下grpc客戶端跟grpc服務器端交互的整體流程即可看幼。詳細流程,會在后面的章節(jié)中幌陕,慢慢介紹的诵姜。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搏熄,隨后出現(xiàn)的幾起案子棚唆,更是在濱河造成了極大的恐慌,老刑警劉巖心例,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宵凌,死亡現(xiàn)場離奇詭異瞎惫,居然都是意外死亡译株,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門欠橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黍檩,你說我怎么就攤上這事≡洌” “怎么了棵里?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵殿怜,是天一觀的道長。 經(jīng)常有香客問我骏掀,道長,這世上最難降的妖魔是什么笑陈? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任涵妥,我火速辦了婚禮,結(jié)果婚禮上蓬网,老公的妹妹穿的比我還像新娘娜氏。我一直安慰自己,他們只是感情好贸弥,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布绵疲。 她就那樣靜靜地躺著,像睡著了一般盔憨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上婿奔,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天萍摊,我揣著相機與錄音,去河邊找鬼冰木。 笑死笼恰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的逼龟。 我是一名探鬼主播猴仑,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肥哎,長吁一口氣:“原來是場噩夢啊……” “哼篡诽!你這毒婦竟也來了榴捡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤达椰,失蹤者是張志新(化名)和其女友劉穎项乒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝇裤,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡栓辜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年垛孔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片周荐。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡概作,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情先壕,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布集绰,位于F島的核電站埃叭,受9級特大地震影響潮模,放射性物質(zhì)發(fā)生泄漏浴讯。R本人自食惡果不足惜蔼啦,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奈籽。 院中可真熱鬧鸵赫,春花似錦、人聲如沸辩棒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卖局。三九已至,卻和暖如春砚偶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背染坯。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工单鹿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仲锄。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像镣奋,于是被迫代替她去往敵國和親怀愧。 傳聞我的和親對象是個殘疾皇子余赢,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

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