世界速讀:GRPC核心概念、架構(gòu)和生命周期
2023-06-07 11:41:24來(lái)源:博客園
(資料圖片僅供參考)
GRPC核心概念、架構(gòu)和生命周期
標(biāo)簽(空格分隔): go,grpc
官網(wǎng)地址:https://grpc.io/docs/what-is-grpc/core-concepts/
概述
與許多 RPC 系統(tǒng)一樣,gRPC 基于定義服務(wù)的思想,指定可以使用其參數(shù)和返回類(lèi)型遠(yuǎn)程調(diào)用的方法。默認(rèn)情況下,gRPC 使用協(xié)議緩沖區(qū)作為接口定義語(yǔ)言 (IDL) 來(lái)描述服務(wù)接口和有效負(fù)載消息的結(jié)構(gòu)。如果需要,可以使用其他替代方案
gRPC 允許您定義四種服務(wù)方法
- 一元 RPC其中客戶(hù)端向服務(wù)器發(fā)送單個(gè)請(qǐng)求并返回單個(gè)響應(yīng),就像普通函數(shù)調(diào)用一樣
rpc SayHello(HelloRequest) returns (HelloResponse);
- 服務(wù)器流式處理 RPC其中客戶(hù)端向服務(wù)器發(fā)送請(qǐng)求并獲取流以讀回消息序列??蛻?hù)端從返回的流中讀取,直到?jīng)]有更多消息。gRPC 保證單個(gè) RPC 調(diào)用中的消息排序
rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse);
- 客戶(hù)端流式處理 RPC其中客戶(hù)端寫(xiě)入一系列消息并將其發(fā)送到服務(wù)器,再次使用提供的流。客戶(hù)端完成消息寫(xiě)入后,它將等待服務(wù)器讀取消息并返回其響應(yīng)。同樣,gRPC 保證單個(gè) RPC 調(diào)用中的消息排序
rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);
- 雙向流式處理 RPC其中雙方使用讀寫(xiě)流發(fā)送一系列消息。這兩個(gè)流獨(dú)立運(yùn)行,因此客戶(hù)端和服務(wù)器可以按照它們喜歡的任何順序進(jìn)行讀取和寫(xiě)入:例如,服務(wù)器可以等待接收所有客戶(hù)端消息,然后再寫(xiě)入響應(yīng),或者它可以交替讀取消息然后寫(xiě)入消息,或者讀取和寫(xiě)入的某種其他組合。保留每個(gè)流中消息的順序
rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);
使用接口
從 .proto 文件中的服務(wù)定義開(kāi)始,gRPC 提供了生成客戶(hù)端和服務(wù)器端代碼的協(xié)議緩沖區(qū)編譯器插件。gRPC 用戶(hù)通常在客戶(hù)端調(diào)用這些 API,并在服務(wù)器端實(shí)現(xiàn)相應(yīng)的 API - 在服務(wù)器端,服務(wù)器實(shí)現(xiàn)服務(wù)聲明的方法,并運(yùn)行 gRPC 服務(wù)器來(lái)處理客戶(hù)端調(diào)用。gRPC 基礎(chǔ)結(jié)構(gòu)解碼傳入請(qǐng)求、執(zhí)行服務(wù)方法并對(duì)服務(wù)響應(yīng)進(jìn)行編碼 - 在客戶(hù)端,客戶(hù)端有一個(gè)稱(chēng)為存根的本地對(duì)象(對(duì)于某些語(yǔ)言,首選術(shù)語(yǔ)是客戶(hù)端),它實(shí)現(xiàn)與服務(wù)相同的方法。然后,客戶(hù)端可以在本地對(duì)象上調(diào)用這些方法,這些方法將調(diào)用的參數(shù)包裝在適當(dāng)?shù)膮f(xié)議緩沖區(qū)消息類(lèi)型中,將請(qǐng)求發(fā)送到服務(wù)器,并返回服務(wù)器的協(xié)議緩沖區(qū)響應(yīng)
RPC 生命周期
在本部分中,你將詳細(xì)了解當(dāng) gRPC 客戶(hù)端調(diào)用 gRPC 服務(wù)器方法時(shí)會(huì)發(fā)生什么情況。有關(guān)完整的實(shí)現(xiàn)詳細(xì)信息,請(qǐng)參閱特定于語(yǔ)言的頁(yè)面
Unary RPC【一元RPC】
首先考慮最簡(jiǎn)單的 RPC 類(lèi)型,其中客戶(hù)端發(fā)送單個(gè)請(qǐng)求并返回單個(gè)響應(yīng)
- 客戶(hù)端調(diào)用存根方法后,將通知服務(wù)器已使用此調(diào)用的客戶(hù)端元數(shù)據(jù)、方法名稱(chēng)和指定的截止時(shí)間(如果適用)調(diào)用了 RPC
- 然后,服務(wù)器可以立即發(fā)回自己的初始元數(shù)據(jù)(必須在任何響應(yīng)之前發(fā)送),也可以等待客戶(hù)端的請(qǐng)求消息。首先發(fā)生,是特定于應(yīng)用程序的
- 一旦服務(wù)器獲得客戶(hù)端的請(qǐng)求消息,它就會(huì)執(zhí)行創(chuàng)建和填充響應(yīng)所需的任何工作。然后,響應(yīng)(如果成功)連同狀態(tài)詳細(xì)信息(狀態(tài)代碼和可選狀態(tài)消息)和可選的尾隨元數(shù)據(jù)一起返回給客戶(hù)端
- 如果響應(yīng)狀態(tài)為“正常”,則客戶(hù)端將獲得響應(yīng),從而在客戶(hù)端完成調(diào)用
Server streaming RPC【服務(wù)器流RPC】
服務(wù)器流式處理 RPC 類(lèi)似于一元 RPC,不同之處在于服務(wù)器返回消息流以響應(yīng)客戶(hù)端的請(qǐng)求。發(fā)送所有消息后,服務(wù)器的狀態(tài)詳細(xì)信息(狀態(tài)代碼和可選狀態(tài)消息)和可選的尾隨元數(shù)據(jù)將發(fā)送到客戶(hù)端。這樣就完成了服務(wù)器端的處理??蛻?hù)端在擁有服務(wù)器的所有消息后完成
Client streaming RPC【客戶(hù)端流RPC】
客戶(hù)端流式處理 RPC 類(lèi)似于一元 RPC,不同之處在于客戶(hù)端向服務(wù)器發(fā)送消息流而不是單個(gè)消息。服務(wù)器使用單個(gè)消息(以及其狀態(tài)詳細(xì)信息和可選的尾隨元數(shù)據(jù))進(jìn)行響應(yīng),通常但不一定要在收到所有客戶(hù)端的消息之后
Bidirectional streaming RPC【雙向流RPC】
在雙向流式處理 RPC 中,調(diào)用由調(diào)用該方法的客戶(hù)端和接收客戶(hù)端元數(shù)據(jù)、方法名稱(chēng)和截止時(shí)間的服務(wù)器發(fā)起。服務(wù)器可以選擇發(fā)回其初始元數(shù)據(jù)或等待客戶(hù)端開(kāi)始流式傳輸消息 客戶(hù)端和服務(wù)器端流處理是特定于應(yīng)用程序的。由于這兩個(gè)流是獨(dú)立的,因此客戶(hù)端和服務(wù)器可以按任意順序讀取和寫(xiě)入消息。例如,服務(wù)器可以等到它收到客戶(hù)端的所有消息后再寫(xiě)入其消息,或者服務(wù)器和客戶(hù)端可以玩“乒乓球”——服務(wù)器收到請(qǐng)求,然后發(fā)回響應(yīng),然后客戶(hù)端根據(jù)響應(yīng)發(fā)送另一個(gè)請(qǐng)求,依此類(lèi)推
截止時(shí)間/超時(shí)
gRPC 允許客戶(hù)端指定在 RPC因DEADLINE_EXCEEDED錯(cuò)誤終止之前,他們?cè)敢獾却?RPC 完成的時(shí)間。在服務(wù)器端,服務(wù)器可以查詢(xún)特定 RPC 是否已超時(shí), 或者還剩下多少
時(shí)間來(lái)完成 RPC
RPC 終止
在 gRPC 中,客戶(hù)端和服務(wù)器都對(duì)調(diào)用是否成功做出獨(dú)立的本地確定,它們的結(jié)論可能不匹配。這意味著,例如,您可能有一個(gè)在服務(wù)器端成功完成的 RPC(“我已經(jīng)發(fā)送了我所有的響應(yīng)!”),但在客戶(hù)端失?。ā绊憫?yīng)在我的截止日期之后到達(dá)!”)。服務(wù)器也可以在客戶(hù)端發(fā)送所有請(qǐng)求之前決定完成
取消 RPC
客戶(hù)端或服務(wù)器可以隨時(shí)取消 RPC。取消會(huì)立即終止 RPC,以便不再執(zhí)行任何進(jìn)
一步的工作
相關(guān)新聞
- 世界速讀:GRPC核心概念、架構(gòu)和生命周期
- 金卡智能:6月6日融資買(mǎi)入819.15萬(wàn)元,融資融券余額1.75億元_觀速訊
- 環(huán)球速遞!熊孩子把媽媽嚇出表情包,網(wǎng)友:是爸爸教的
- 云天化及其控股子公司對(duì)外擔(dān)??傤~81.81億元 占2022年末凈資產(chǎn)的49.99%
- 6月7日生意社白炭黑基準(zhǔn)價(jià)為6025.00元/噸
- 兩個(gè)男人一致的婚戀觀:戀愛(ài),找差距大的,結(jié)婚,找門(mén)當(dāng)戶(hù)對(duì)的 今頭條
- 天天熱議:中超大連人VS山東泰山圖片分享,閻相闖PK王大雷,國(guó)足教練組觀戰(zhàn)
- 老頑童過(guò)六一兒童節(jié)活動(dòng)主持詞_老頑童是什么意思老頑童形容什么樣的人
- 天天熱議:紫色電視劇湄瀾傳情中的人物
- 全球熱消息:上坡輔助和自動(dòng)駐車(chē)的區(qū)別_上坡輔助是什么意思
- 資訊:平安資管首席風(fēng)險(xiǎn)管理執(zhí)行官王欣:積極引導(dǎo)保險(xiǎn)資金投向綠色金融等國(guó)家重點(diǎn)戰(zhàn)略支持領(lǐng)域
- 漳州電大官網(wǎng)登錄_漳州電大遠(yuǎn)程繼續(xù)教育官網(wǎng)
- 觀點(diǎn):廈門(mén)大學(xué)徐偉_徐迪 廈門(mén)大學(xué)教授
- 堂姐最新視頻完整版_堂姐-環(huán)球快看
- 前沿科技信息篇:暴風(fēng)影音如何翻轉(zhuǎn)視頻 暴風(fēng)影音如何連拍截圖|世界微速訊
- 航拍天津津南大面積沉降,國(guó)內(nèi)外少見(jiàn)!業(yè)主忙搬家,一層樓要100元人力扛運(yùn)費(fèi)
- 類(lèi)似十宗罪的小說(shuō)語(yǔ)錄_類(lèi)似十宗罪的小說(shuō)
- 觀速訊丨因虛列費(fèi)用等,人保財(cái)險(xiǎn)涪陵李渡支公司合計(jì)被罰39萬(wàn)元
- 債務(wù)上限法案難消美國(guó)經(jīng)濟(jì)風(fēng)險(xiǎn) 天天觀點(diǎn)
- 男士圍巾圍法的正確方法_男士圍巾圍法 世界即時(shí)看