吃透GRPC协议

吃透GRPC协议,第1张

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过程图如下:

 主要有三块,客户端+服务端+注册中心。三者关系的标准时序图如下:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/739125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存