最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

最簡單的 gRPC 教程—2 通信模式

2021-04-14 00:32 作者:roseduanV  | 我要投稿

gRPC 包含四種基礎(chǔ)的通信模式:

  • 一元模式(Unary RPC)

  • 服務(wù)器端流 RPC(Server Sreaming RPC)

  • 客戶端流 RPC(Client Streaming RPC)

  • 雙向流 RPC(Bidirectional Streaming RPC)

一元模式

一元模式是最簡單、也最容易理解的通信方式,客戶端發(fā)送單一的請求,并從服務(wù)端獲取到響應(yīng)。上一篇文章中的獲取和添加商品的邏輯,其實就是很典型的一元 RPC 模式。

在這里,我們構(gòu)建一個簡單的訂單服務(wù),可以添加、獲取、搜索、處理訂單,借此來演示 gRPC 的幾種通信模式。

首先定義一個 proto 文件(我命名為 OrderInfo.proto):

然后使用命令 protoc --go_out=plugins=grpc:../order OrderInfo.proto 生成所需要的客戶端存根文件(參考前一篇文章)。

然后新建一個 server/main.go 文件,寫一下兩個業(yè)務(wù)方法的邏輯:

然后繼續(xù)在 main.go 中添加一個服務(wù)器:

接下來繼續(xù)寫客戶端的邏輯,調(diào)用服務(wù)端的兩個方法,獲取到響應(yīng)。和上一篇文章類似,新建一個 client/main.go 文件:

服務(wù)端流 RPC 模式

一元模式只有單一的請求和響應(yīng),但是服務(wù)器端流 RPC 模式下,服務(wù)器在收到客戶端的請求后,可能會發(fā)送多個響應(yīng)的序列,這被稱為“流”。

在訂單服務(wù)中,如果客戶端根據(jù)關(guān)鍵字搜索訂單,那么服務(wù)器會把所有滿足條件的記錄返回給客戶端,通過這個例子來演示一下這種模式:

首先在 proto 文件中新增一個 rpc 方法:

注意這里的返回值加上 stream 表示返回的是訂單流,然后再使用 protoc 命令重新生成 OrderInfo.pb.go 文件。

然后在 server/main.go 文件中添加搜索訂單的邏輯:

客戶端的寫法也和之前的有一些區(qū)別了:

客戶端流 RPC 模式

在這種模式下,客戶端會發(fā)送多個請求給服務(wù)端,服務(wù)端會發(fā)送一條響應(yīng)到客戶端。在訂單服務(wù)中,我們會更新一批訂單,客戶端則通過流的的方式傳輸過來。

還是在 proto 文件中定義一個新的方法:

注意這里在 rpc 的方法入?yún)⒅卸嗔?stream 關(guān)鍵字,表示是客戶端流,然后再使用 protoc 生成文件。

還是老樣子,在 server/main.go 中添加更新訂單的邏輯:

然后繼續(xù)在客戶端 client/main.go 中添加:

雙向流 RPC 模式

雙向流 RPC 模式其實就是客戶端和服務(wù)端流 RPC 的組合,客戶端以消息流的方式發(fā)送數(shù)據(jù),服務(wù)端也已消息流的方式響應(yīng)數(shù)據(jù)。

在訂單服務(wù)中,我們可能需要處理訂單,客戶端發(fā)送連續(xù)的訂單信息,服務(wù)端對訂單進(jìn)行發(fā)貨處理。首先我們在 proto 文件中定義一個新的方法:

然后在 server/main.go 中實現(xiàn)該方法的邏輯:

這里的處理邏輯比起前面的幾個稍微復(fù)雜了一點,需要多看下,自己動手敲一下。

然后就是客戶端的邏輯:

這就是 gRPC 的四種通信模式的 demo 演示,覺得對你有幫助的話,記得點個贊??哦!

demo 的完整代碼在我的 GitHub 上面:github.com/roseduan/grp


最簡單的 gRPC 教程—2 通信模式的評論 (共 條)

分享到微博請遵守國家法律
泰安市| 金华市| 南乐县| 隆林| 延庆县| 邓州市| 平邑县| 静乐县| 牟定县| 武冈市| 章丘市| 尚志市| 临夏县| 惠东县| 开封县| 曲麻莱县| 康定县| 崇明县| 五河县| 息烽县| 台州市| 青神县| 喀喇沁旗| 崇信县| 九龙县| 沁源县| 腾冲县| 洪洞县| 通河县| 和龙市| 珲春市| 南宫市| 政和县| 双桥区| 彰化县| 金坛市| 烟台市| 绥宁县| 新邵县| 黑水县| 柳林县|