gRPC原理、核心概念和性能分析[通俗易懂]

gRPC原理、核心概念和性能分析[通俗易懂]gRPC简介gRPC是Google开源的一个高性能、通用的RPC框架。它具有运行环境无关性和开发语言无关性。

欢迎大家来到IT世界,在知识的湖畔探索吧!

gRPC 简介

gRPC 是Google开源的一个高性能、通用的RPC框架。

gRPC 客户端和gRPC服务端共用一个接口方法。

gPRC客户端和服务端可以在各种环境中运行和相互调用。它具有运行环境无关性和开发语言无关性。这种与语言无关的RPC框架,更适合构建分布式应用,尤其是微服务系统。

gRPC原理、核心概念和性能分析[通俗易懂]

在客户端有一个称为stub的本地对象,它实现了与服务相同的方法。然后,客户端可以在stub 本地对象上调用这些方法,并将该调用的参数包装在适当的Protocol buffer消息类型中。然后客户端将请求消息发送到服务器,如果是同步调用,需要等待服务端的响应。

gRPC为什么性能表现如此优异?

Spring Cloud 中默认使用Feign 进行内部的服务调用,而Feign底层使用HTTP协议进行服务之间的调用。

对比gRPC和HTTP/JSON 客户端的传输效率,gRPC性能表现非常优异。主要有3个方面的原因:

(1)gPRC采用了Proto Buffer 作为序列化工具,这比采用JSON方式进行序列化性能提高了不少;

(2)gRPC采用了HTTP2协议,进行了头部信息压缩,对连接进行了复用,减少了TCP的连接次数;

(3)gPRC采用了Netty作为IO处理框架,提高了性能。

gPRC依赖Protocol Buffers

Protocol Buffers简称ProtoBuf,是一种高效、轻便、易用的结构化数据存储格式,它与平台无关、与语言无关、可扩展性强,广泛用于通信协议和数据存储等领域。

gRPC原理、核心概念和性能分析[通俗易懂]

(1)Protocol Buffer具有JSON、XML格式的所有优点,且易于扩展;

(2)Protocol Buffer解析速度非常快,与XML对比,解析速度快了 20-100倍,比JSON快3-5倍;

(3)序列化数据非常紧凑、简洁,与XML对比,采用Protocol Buffer序列化的数据大概是采用XML序列化数据size的10%-30%;

gRPC依赖HTTP2

HTTP2即超文本传输协议版本2,HTTP2通过对头部字段进行压缩,在客户端和服务端建立连接之后允许双向传输数据来提高传输效率、减少延迟。

(1)HTTP2是一个二进制协议;

(2)多路复用,提高了连接的利用率;

(3)头压缩;

(4)服务器推送,是HTTP2具有的一个强大的功能,这个功能称为缓存推送。

gRPC原理、核心概念和性能分析[通俗易懂]

gPRC基于Netty进行IO处理

Netty 是由JBOSS开源的一个异步事件驱动的Java网络应用框架,用于快速开发可维护的、高性能的服务器和客户端。

gRPC 的Java版本用Netty 作为NIO框架。

gRPC原理、核心概念和性能分析[通俗易懂]

gRPC 的服务端(Server)和客户端(Client)均使用Netty Channel 作为数据传输通道,使用Proto Buffer作为数据序列化和反序列化的工具,每个请求都封装成符合HTTP2规范的数据流。客户端连接上服务端的Channel 之后,仍然保持长连接,这样就做到了连接复用,而不需要每次请求都需要客户端重新连接上服务端,从而大大提高了数据交互的效率。

Spring Cloud 默认使用Feign 进行内部的服务调用,而Feign 底层使用HTTP 协议进行服务之间的调用。现在更高效的内部服务调用方案是gRPC。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/17833.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信