1、什么是GRPC协议?
首先,GRPC协议是一种通信协议;其次,本质上gRPC是一个高性能的、开源的、普遍通用的RPC框架。业界有很多开源的优秀 RPC 框架,例如 Dubbo、Thrift、gRPC、Hprose 等。
RPC(Remote Procedure Call,远程程序调用)是指本地服务调用远程服务器上的程序或服务,是一种客户端服务器(C/S)通信模式。GRPC是由Google开发并且将其开源。 通过它,一个客户端消费者服务可以像调用本地方法一样,调用另一台主机上面的服务端方法。
GRPC相比于RPC协议,在实现上使用了HTTP2.0、协议缓冲区(protobuf)等更现代化的技术方案,从而最大程度上确保服务端和客户端的互操作性及性能上的提升。
2、为什么会出现GRPC协议
1)在微服务的设计中,我们通常采用HTTP REST传输数据,并在两个服务之间进行序列化和反序列化操作;另外传统的RESTful接口使用JSON、XML或者其他的一些格式作为数据载体,使得服务运行缓慢,内存占用较高、并且传输过程没有压缩;
2)由于HTTP在应用层中完成,整个通信的代价较高,远程过程调用中直接基于TCP进行远程调用,数据传输在传输层TCP层完成,更适合对效率要求比较高的场景,RPC主要依赖于客户端和服务端之间建立Socket链接进行,底层实现比REST更复杂;
3)相比常规的RPC,GRPC拥有更好性能;
3、GRPC实现原理
HTTP2.0的好处在于二进制分帧、多路复用、头部压缩、服务端push【HTTP2.0具体的原理我们后续通过其他博客再进行讲解】。同时GRPC序列化方式采用protobuf格式,protobuf比json和xml要好很多,缺点就是没有json便于阅读。 在相同的有效带宽中,同样的数据包,protobuf可以传输更多次。同时protobuf数据越小,序列化越快,以及protobuf是跨平台的,和语言无关。可以用proto工具生成各个语言的代码,非常方便。
- json是文本文件,文本文件是基于字符的。
- protobuf是二进制编码,基于值的。
4、GRPC协议应用场景
从开发的角度,在服务端和客户端使用GRPC最大的好处在于:你的服务端的代码和客户端的代码不需要担心它会影响你解析JSON或者其他类似的文本格式消息。GRPC虽然接收到的是二进制格式,但会并将其反序列化为对象。
一个标准的RPC过程图如下:
主要有三块,客户端+服务端+注册中心。三者关系的标准时序图如下:文章来源:https://www.toymoban.com/news/detail-425319.html
文章来源地址https://www.toymoban.com/news/detail-425319.html
到了这里,关于吃透GRPC协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!