gRPC学习笔记(一):gRPC是什么,有什么优缺点,为什么要使用它
概述
RPC(远程过程调用: Remote Procedure Call)是一种通过网络从其它进程或者其他主机上的进程请求服务的方式。RPC是分布式系统的基础。
gRPC是主要由Google公司开发的一个高性能、通用的开源RPC框架。gRPC基于HTTP2.0协议,基于protobuf序列化协议,语言中立、平台中立。
HTTP1.0与HTTP2.0的区别
HTTP1.0协议:
- 是文本协议,可读性好,但并不高效
- 一问一答的交互模式,request 之后,必须等到 response才能下一次请求,而且每次请求都要携带冗长重复的请求头信息
- 没有推送机制,只能通过长轮询之类的方式,浪费资源。除非用webSocket协议方式。
HTTP2.0协议:
- 二进制协议,可读性巨差,有更小的传输体积,解析也不容易出错。
- 多路复用,允许一个HTTP2.0连接发起多重请求和响应,可以实现多个流并行,却不用建立多个TCP连接。
- 首部压缩,HTTP2.0依旧是无状态协议,HTTP2.0使用首部表来跟踪存储之前发送的键值对,对于相同的数据,不再通过请求发送,修改时只需发送一次。
- 服务端推送,可以通过流从服务端直接推送给客户端,即使客户端没有请求这些数据。
序列化协议protobuf
gRPC服务是基于protocuf定义的。
优点:
- protobuf是二进制协议,性能好、效率高,节约网络带宽
- 生成目标代码,简单易用
- 序列化和反序列化直接对应其中的类或结构体
- 支持版本兼容
- 支持多种语言