1.安装包
pip3.6 install grpcio grpcio-tools protobuf
2.RPC简介
2.1 RPC是什么
- RPC(Remote Procedure Call)是远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
- 举例:在A服务器内,调用B服务器的ticket服务器中的get方法,那么在A服务器中,直接调用B.ticket.get()来直接调用\
2.2 gRPC是什么
- grpc是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。
- grpc提高在一种简单的方法来精确的定义服务为ios,Android和后台支撑服务自动生成可靠性很强的客户端功能库,客户端充分利用高级流和链接功能,从而有助于节省带宽,降低tcp链接次数,节省cpu使用和电池寿命
2.3 gRPC和restful对比
2.4 gRPC 的传输方式
- unary 单程
- stream 流形式
- 双向 客户端请求服务器端(流), 服务器端返回给客户端(流)
- 单休 服务器端接受客户端(流),服务器端返回客户端(非流)
- 单休 服务器端接受客户端(非流),服务器端send客户端(流)
2.5 gRPC code码
code |
名词 |
解释 |
0 |
ok |
成功 |
1 |
Canceled |
取消操作 |
2 |
Unknown |
未知错误 |
3 |
InvalidArgument |
客户端传入参数有误 |
4 |
DeadlineExceeded |
超时 |
5 |
NotFound |
找不到资源 |
6 |
AlredyExists |
资源已存在 |
7 |
PermissionDenied |
无相关权限 |
8 |
RsourceExhausted |
资源耗尽 |
9 |
FailedPrecondition |
操作拒绝 |
10 |
Aborted |
终止操作 |
11 |
OutOfRange |
超过有效范围 |
12 |
Unimplemented |
未执行或未支付的操作 |
13 |
Internal |
发生了一些意外(逻辑出现问题) |
14 |
Unavailable |
服务不可用 |
15 |
DataLoss |
数据丢失 不可恢复 |
16 |
Unauthenticated |
无有效的认证 |