grpc四种通信模式及其应用场景选型

grpc四种通信模式及其应用场景选型,第1张

文章目录 grpc四种通信模式及其应用场景选型1、Simple RPC2、 Server-side streaming RPC3、Client-side streaming RPC4、 Bidirectional streaming RPC总结 grpc应用场景

grpc四种通信模式及其应用场景选型

gRPC有四种通信方式,分别是:简单 RPC(Unary RPC)、服务端流式 RPC (Server streaming RPC)、客户端流式 RPC (Client streaming RPC)、双向流式 RPC(Bi-directional streaming RPC)。它们主要有以下特点:

服务类型特点
简单 RPC一般的rpc调用,传入一个请求对象,返回一个返回对象
服务端流式 RPC传入一个请求对象,服务端可以返回多个结果对象
客户端流式 RPC客户端传入多个请求对象,服务端返回一个结果对象
双向流式 RPC结合客户端流式RPC和服务端流式RPC,可以传入多个请求对象,返回多个结果对象
1、Simple RPC

proto语法 :
简单rpc 这就是一般的rpc调用,一个请求对象对应一个返回对象
proto语法:

rpc simpleHello(Person) returns (Result) {}

客户端发起一次请求,服务端响应一个数据,即标准RPC通信。
这种模式,一个每一次都是发起一个独立的tcp连接,走一次三次握手和四次挥手!

2、 Server-side streaming RPC

服务端流式rpc 一个请求对象,服务端可以传回多个结果对象
proto语法 :

rpc serverStreamHello(Person) returns (stream Result) {}

服务端流 RPC 下,客户端发出一个请求,但不会立即得到一个响应,而是在服务端与客户端之间建立一个单向的流,服务端可以随时向流中写入多个响应消息,最后主动关闭流,而客户端需要监听这个流,不断获取响应直到流关闭

应用场景举例:
典型的例子是客户端向服务端发送一个股票代码,服务端就把该股票的实时数据源源不断的返回给客户端。

3、Client-side streaming RPC

客户端流式rpc 客户端传入多个请求对象,服务端返回一个响应结果
proto语法 :

rpc clientStreamHello(stream Person) returns (Result) {}

应用场景:
物联网终端向服务器报送数据。

4、 Bidirectional streaming RPC

双向流式rpc 结合客户端流式rpc和服务端流式rpc,可以传入多个对象,返回多个响应对象
proto语法 :

rpc biStreamHello(stream Person) returns (stream Result) {}

应用场景:聊天应用。

总结

流式 RPC 定义与 简单 RPC 的区别只是在请求或返回参数前增加了 stream 关键词,如下:

service HelloService {
  // 客户端流式 RPC
  rpc SayHello1 (stream  HelloRequest) returns (HelloResponse);
  // 服务端流式 RPC
  rpc SayHello2 (HelloRequest) returns (stream HelloResponse);
  // 双向流式 RPC
  rpc SayHello3 (stream  HelloRequest) returns (stream HelloResponse);}
grpc应用场景

gRPC设计为低延迟和高吞吐量通信。gRPC非常适用于效率至关重要的轻型微服务。点对点实时通信 - gRPC对双向流媒体提供出色的支持。gRPC服务可以实时推送消息而无需轮询。多语言混合开发环境 - gRPC工具支持所有流行的开发语言,使gRPC成为多语言开发环境的理想选择。

网络受限环境 - 使用Protobuf(一种轻量级消息格式)序列化gRPC消息。gRPC消息始终小于等效的JSON消息。

至于选择那种模式,完全看业务情况吧!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/995661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存