gRPC Python 学习笔记二:gRPC流式通信

__弯弓__ __弯弓__ 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

gRPC 提供了4种通信模式,除了5种单向通信方式外,还可以使用双向流式进行通信。

注:关于什么场景适用于gRPC,需要对服务器与客户端之间的通信模式,数据类型,操作方式进行综合分析之后确定。毕竟属于RPC 进程间通信范畴,通过protobuf 提升了序列化的效率与便捷性。 gRPC的适用范围基本覆盖了REST,但不意味着适用一切场景,如果是 pub-subscribe, producer-worker场景,RabbitMQ, Kafka 更合适,如果是强调通信的灵活性,使用ZeroMQ。 

了解这4种模式,加深理解,才能在项目中合适地应用gRPC。 
1. 单向RPC
gRPC的术语为unary RPC,这种方式与函数调用类似, client 发送1条请求,server回1条响应。

rpc SayHello(HelloRequest) returns (HelloResponse);

2. 服务器流式处理 RPC
客户端向服务器发送1条请求,服务器以回应多条响应消息,客户机从返回的流中读取数据,直至没有更多消息。 这时要在响应类型前加1个 stream关键字修饰。

rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse);

3. 客户端流式处理 RPC,
由客户端写入一系列消息并将其发送到服务。 客户端完成消息写入后,它将等待服务器读取消息并返回其响应. 这种模式,要在request的类型前加 stream 修饰。

rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);

4. 双向流式处理 RPC
其中双方使用读写流发送一系列消息。这两个流独立运行,因此客户端和服务器可以按照它们喜欢的任何顺序进行读取和写入:例如,服务器可以等待接收所有客户端消息,然后再写入响应,或者它可以交替读取消息然后写入消息,或者读取和写入的某种其他组合。将保留每个流中消息的顺序。此模式下, request 与 response类型均需要用stream修饰。

rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);

实现过程及代码,请 点击阅读

...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部