IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> gRPC概述 -> 正文阅读

[网络协议]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推送给客户端。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:52:13  更:2021-12-24 18:52:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:36:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码