gRPC Python 学习笔记二:gRPC流式通信
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);
实现过程及代码,请 点击阅读
相关推荐
python-grpc-demo:Python + gRPC演示
**Python3 支持**:gRPC Python 库完全兼容 Python 3.x 版本,确保了在最新版本的 Python 中的稳定性和性能。9.
API开发:gRPC.zip
本文全面介绍了gRPC框架的基础知识、环境搭建、服务定义、多语言实践(Go、Java、Python)、认证与安全、流式通信、高级特性、错误处理、性能优化、服务发现与注册、跨语言通信以及与RESTful
Python使用gRPC传输协议教程
本教程将深入探讨如何在Python中使用gRPC传输协议,gRPC是由Google开发的一款高性能、开源的远程过程调用(RPC)框架,它利用ProtoBuf序列化协议进行数据交换,并支持多语言实现,包
GRPC简单应用(Java+Python)
二、Java实现GRPC1. 安装和配置:首先,你需要在Java项目中添加GRPC和protobuf的依赖。在Maven或Gradle的build文件中,加入相应的依赖项。2.
python_grpc demo
这两个库提供了 gRPC 在 Python 中的实现和工具。2. **生成 Python 代码**:运行 `protoc` 命令生成服务和消息类型的 Python 类。3.


