搞懂分布式RPC开源框架-gRPC
rpc解决了什么问题,与消息队列应用场景比较
rpc(远程调用方法):请求回应
socket网络问题 ------> 消除端到端交互问题
业务场景:
rpc:同步地处理
消息队列:不紧迫的非必要的 异步解决问题 ,比如短信服务。
- grpc组成和service API
grpc 组成:http 2.0 + protobuffer
http1.0 提供长连接 请求回应的模式
http1.1 pipeline 可以发送多个请求得到多个回应
http2.0 stream 传输的 可以想回应的时候,回应。随时随地,采用分帧
分布式系统采用不同的语言,要跨语言(c++x)、解压缩要快、数据流小(json、xml x)、msgpack要压缩kv、protobuffer只压缩v;
对于整数极大的压缩
grpc service API
1 、unary api 一元普通模式:
一个请求,一个回应
2、client stream api客户端流模式
多个请求,一个回应,服务端会将多个请求汇总成一个流;
3、server stream api服务端流模式
serve端任务繁重,一个请求会有多个返回
4、bidirectional stream api 双端流
多个请求,多个返回值
C++: 同步阻塞的调用异步非阻塞的调用(callback)
- grpc关键特性:超时、重试、拦截器、命名解析、负载均衡、安全连接