栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

gRPC概述

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gRPC概述

RPC

在学习gRPC时,我们需要先了解RPC(远程过程调用)

RPC 是一种技术思想而非一种规范或协议

RPC是指远程过程调用

比如:两台服务器A,B。一个应用部署在A服务器上,A服务器中想要调用B服务器上的应用提供的函数/方法,但是不在一个内存空间,所有不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

RPC框架:

实现RPC需要解决的问题

序列化与反序列化

将传递的参数值进行传送给远程的程序。本地的话,直接可以通过内存去调用,在RPC中如上图所示,客户端与服务端是不同的进程,甚至有时候二者所使用的都不是同一种语言。这时候就需要客户端把参数先转成一个字节流,传给服务端后,再把字节流转成自己能读取的格式。这个过程叫序列化和反序列化。同理,从服务端返回的值也需要序列化反序列化的过程。

网络传输:

远程调用往往发生在网络上,客户端的和服务端通过网络连接连接。二者上面发生的所有的数据都需要通过网络进行传输,需要一个网络传输层,将序列化后的调用结果传递,因此所使用的协议是不限的。大部分RPC框架使用的是TCP协议,但是UDP也可以,gRPC直接就使用了HTTP2.

寻址问题:

在RPC中,所有的函数都必须有自己的一个ID。这个ID在所有进程中都是唯一确定的,客户端在进行远程调用时都必须附上这个ID。还需要维护一个函数和id的对应表。当客户端需要进行远程调用时,它就查一下这个表,找出相应的Call ID,然后把它传给服务端,服务端也通过查表,来确定客户端需要调用的函数,然后执行相应函数的代码。

gRPC

gRPC一个 RPC 框架,与许多 RPC (Dubbo)系统一样;gRPC使用的http2.0规范

服务端负责实现定义好的接口并处理客户端的请求,客户端根据接口描述直接调用需要的服务。客户端和服务端可以分别使用gPRC支持的不同语言实现。

gRPC 客户端和服务器可以在各种环境中运行和相互通信。

主要特性:

  1. 强大的IDL

    使用ProtoBuf来定义服务,ProtoBuf能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。

  2. 多语言支持

    gRPC支持多种语言,并能够基于语言自动生成客户端和服务端功能库。

  3. HTTP2

    http2具有一些新特性:

    1. 采用二进制格式后实现方便且健壮
    2. 多路复用:多个request共享一个连接。
    3. header压缩:在HTTP1.x中header信息很多,会重复发送。HTTP2.0使用encoder减少了传输的header大小,且通信双方都缓存一份包含了header信息的表,此后的请求可以只发送差异数据,避免信息的重复传输,进一步减少需要传输的内容大小。
    4. 服务端推送:当一个客户端请求资源X,而服务器知道它很可能也需要资源Z的情况下,服务器可以在客户端发送请求前,主动将资源Z推送给客户端。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678632.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号