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

captain5339 2022-11-14 23:49:49

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);

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

...全文
73 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-非IT技术 发布问题, 以便更快地解决您的疑问
相关推荐
发帖
Python全栈技术社区

1.0w+

社区成员

创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践
python学习 企业社区
社区管理员
  • Python全栈技术社区
  • Lumos_zbj
  • 北侠大卫
加入社区
帖子事件
编辑了帖子 (查看)
2022-11-15 13:52
编辑了帖子 (查看)
2022-11-15 13:49
编辑了帖子 (查看)
2022-11-15 13:42
创建了帖子
2022-11-14 23:49
社区公告

创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践

  • 这里有最新最全的 Python 学习内容及资源,每月多达4次技术公开课
  • 这里有众多 Python 学习者,陪伴你一起交流成长
  • 这里有专业 Python 社区专家、讲师,帮助你跨越学习瓶颈,解决实操难题
  • 这里有丰富的社区活动,可以开阔眼界,结识更多同伴

【最新活动】:

  1. 周四技术公开课讲师招募中,点击查看详情
  2. “Python 社区专家团” 招募中,点击查看详情