蜜臀av无码一二三_欧美大屁股xxxx_AV中文无码乱人伦在线观看_国产高清毛卡片_色欲日日拍夜夜嗷嗷叫手机版

世界速讀: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)鍵詞:

上一篇:金卡智能:6月6日融資買(mǎi)入819.15萬(wàn)元,融資融券余額1.75億元_觀速訊
下一篇:最后一頁(yè)

相關(guān)新聞