gRPC API官方文档 gRPC官方文档 protocol buffers官方文档 github上gRPC的Demo
gRPC事例 gRPC避坑实战
环境准备
- 安装grpcio
pip install grpcio
用于执行gRPC的各种底层协议和请求响应方法
- 安装grpcio-tools
pip install grpcio-tools
基于proto生成python源代码的工具
什么是gRPC gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统
- 用protocol buffers IDL定义一个服务,指定能够被远程调用的方法及其参数和返回值类型
- 使用protocol buffers 编译器插件,将服务定义的.proto文件,编译成客户端和服务端的代码
- 服务端实现服务接口,运行一个gRPC服务器处理客户端的调用。gRPC底层框架会解码传入的参数请求,执行服务方法,编码服务应答。
- 客户端拥有一个存根实现了与服务端同样的方法,客户端在本地存根调用这些方法,用合适的protocol buffers消息类型封装这些参数。gRPC发送请求给服务端并返回protocol buffers响应。
protocol buffers
protocol buffers是Google 开源的一套成熟的结构数据序列化机制。 用protocol buffers IDL(接口定义语言)定义服务方法 用protocol buffers消息类型定义方法参数和返回值类型
服务端
线程池:类concurrent.futures.ThreadPoolExecutor
gRPC定义的服务方法类型
单项RPC:客户端发送一个请求给服务端,从服务端获取一个应答 服务端流式RPC:客户端发送一个请求给服务端,可获取一个数据流来读取一系列消息,直到没有更多消息 客户端流式RPC:客户端提供一个数据流写入并发送一系列消息给服务端。一旦客户端完成写入,就等待服务端读取消息并返回响应。 双向流式RPC:两端都可以通过数据流读写一系列消息,两个数据流是独立的。
|