吃透GRPC协议

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

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

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值