gRPC 通信模式

gRPC 初體驗 這個文章的例子其實和 RESTful 在通信模式上沒有什麼區別,也是一次請求然後一個響應的模式,如果真是這樣那 gRPC 就沒啥意思了,今天我們來看一下 gRPC 四種通信模式。

一、一元 RPC 模式

**1、大白話
**

有一天你很想一個妹子了,然後就微信找她聊天

你:忙不忙?

妹子:忙

基本上是 GameOver 了,妹子對你印象很一般,但可以試着死纏爛打哦。

**2、原理
**

一個請求消息對應一個響應消息,然後關閉連接,請求信息以 EOS 結尾,響應消息以 trailer 結尾。消息可以是一個或多個數據幀。

3、例子

**proto 定義
**

rpc getOrder(google.protobuf.StringValue) returns(Order);

OrderServiceImpl 實現

OrderServiceClient

二、服務器端流 RPC 模式

**1、大白話
**

你:好沒意思啊!

妹子:怎麼了?

妹子:發生了什麼事?

妹子:快點和我說,我急死了。。。

妹子:。。。。。。。

Game 必須繼續,妹子很喜歡你,你要相信憑你的長相和錢包有這樣的妹子你不好好把握那是個大傻子。

**2、原理
**

一個請求消息對應多個響應消息,響應消息用 trailer 做爲結尾。

3、例子

proto

rpc searchOrders(google.protobuf.StringValue) returns(stream Order);

OrderServiceImpl 實現

onNext() 發送消息,onCompleted() 結束響應。

OrderServiceClient

三、客戶端流 RPC 模式

**1、大白話
**

你:你都不知道疼人的,

你:被一個人牽動着情緒很煩,也可以很甜蜜

你:寶,我去輸液,輸的什麼液,想你的夜

妹子:滾

Game 可以結束了,舔狗式的愛不是愛,放手吧,兄弟!

2、原理

3、例子

proto

rpc updateOrders(stream Order) returns(google.protobuf.StringValue);

OrderServiceImpl 實現

一直在接收消息,但就是不想回你,最後才煩了,回你一句滾,Game Over 吧。

使用 CountDownLatch 阻塞線程等待回調

四、雙向流模式

待學習,肚子很餓了。。。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/gAfz1QPCNuyS_sJI4S3-CA