五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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 通信模式的評論 (共 條)

分享到微博請遵守國家法律
雷州市| 闸北区| 南乐县| 扬中市| 库车县| 宁国市| 宣汉县| 修文县| 驻马店市| 和平县| 嵩明县| 满洲里市| 墨江| 富宁县| 广南县| 德清县| 红河县| 平南县| 明水县| 鹿邑县| 准格尔旗| 兴文县| 宕昌县| 阿克苏市| 台南县| 苏尼特右旗| 南江县| 夏津县| 合山市| 莆田市| 温泉县| 金门县| 阜阳市| 江源县| 吴桥县| 冀州市| 新建县| 大同市| 西青区| 昭苏县| 绍兴县|