掌握 gRPC 和 RPC 的关键区别

这篇具有很好参考价值的文章主要介绍了掌握 gRPC 和 RPC 的关键区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、远程过程调用协议简介

1、RPC 的本质

首先,我们探讨一下什么是 RPC。RPC,缩写为 Remote Procedure Call Protocol,直译来看就是远程过程调用协议

讲得通俗一些:

  • RPC 是一种通信机制
  • RPC 实现了客户端/服务器通信模型

官方的定义可能会这样解释:它是一种协议,可以使程序能在网络上请求远程计算机上的服务,而无须关心底层网络技术细节。

RPC 的构架可以分为三个层次

  • 用户与服务器(负责业务逻辑,并调用本地的存根程序)
  • 存根程序(Stub)(负责封装和解封装约定语法和语义)
  • RPC运行时(RPCRuntime)(管理网络通信的最底层)

下面的示意图说明了典型的开发情景:前端代码调用后端服务

掌握 gRPC 和 RPC 的关键区别,rpc,网络协议,学习方法,前端,后端

2、RPC 解决的核心问题

RPC 的设计解决了几个关键问题:

  • 协议一致性问题: 举例来说,如何确保前端和后端能够就“0为是,1为否”的约定达成共识。
  • 传输协议的弹性: 当面对网络错误、数据重传、丢失或性能瓶颈时,RPC 如何应对。
  • 服务的发现机制: 客户端应如何发现可用的服务器服务、访问哪个端口等。服务器可能会启动多个远程调用服务,监听在随机端口,客户端需要一种机制来探测这些服务。

3、RPC 的使用场景

两个经典的应用示例包括:

  • 即时通讯软件
  • 微服务架构

4、RPC 的工作流程*

从调用到结果接收,RPC 的过程概述如下:

  • 调用方(Client)发起本地调用式的远程请求;
  • 客户端存根(Client stub)接收请求,将调用的方法名、参数等序列化为可网络传输的消息;
  • 客户端存根发送序列化后的消息给服务端;
  • 服务端存根(Server stub)接受消息并反序列化,以获取调用的方法名和参数;
  • 服务端存根执行本地调用获取结果;
  • 服务端返回执行结果给它的存根;
  • 服务端存根序列化执行结果,发送回客户端;
  • 客户端存根反序列化结果,并返回给客户端调用方;
  • 调用方(Client)得到最终的RPC调用执行结果。

5、RPC 与 HTTP 的差异点

RPC 和 HTTP 对比不完全是同等级别的比较,更恰当的是将 RPC 和 "HTTP + RestFul" 放在一起对比。

传输协议方面

RPC 不限于 HTTP,它还可以选择 TCP 进行传输,而 HTTP 只工作在自身的协议之上。

传输效率方面

RPC 包含了 HTTP2 的特性,使得它在传输效率上优于标准的 HTTP1。

性能消耗方面

得益于 HTTP2 的特性(如二进制传输、头部压缩等),RPC 在性能上的消耗相较于 HTTP1 会更低。

负载均衡方面

大多数 RPC 框架自带负载均衡策略,而传统的 HTTP 方案则通常需要通过 Nginx/HAProxy 等工具实现。

服务治理方面

RPC 框架 能实现自动通知和服务调整,而 HTTP 则往往需要手动通知和修改配置。

二、深入了解 gRPC

1、gRPC 概述

简单来说,gRPC 是一个开源的RPC框架,它建立在 HTTP2 的基础设施之上,因而自然具备了HTTP2 的一系列优势:

  • 二进制分帧的数据传输
  • 多路复用
  • 服务端推送
  • 头部压缩

2、gRPC 的通信流程

如下图所示,通过 gRPC 进行远程服务调用时,客户端(client)仅需 gRPC 存根,通过 Proto Request 请求 gRPC 服务器,服务器则通过 Proto Response(s) 返回结果。

掌握 gRPC 和 RPC 的关键区别,rpc,网络协议,学习方法,前端,后端

三、了解 JSON-RPC 接口

JSON-RPC 是一种简洁的使用JSON格式数据的RPC传输协议,它通过HTTP进行通信。Postman 是API开发中常用的工具,能够轻松实现 JSON-RPC 接口的测试与使用。

四、如何调试 gRPC

Apifox 提供基于 .proto 文件的 gRPC 接口调试功能,支持包含一元调用和流式调用。项目创建时,选择「gRPC项目」并导入 .proto 文件,即可开始调试,无需编写额外代码。

掌握 gRPC 和 RPC 的关键区别,rpc,网络协议,学习方法,前端,后端

导入 .proto 文件之前,需要确认是否有其他依赖的.proto文件,并添加相应的依赖路径。

掌握 gRPC 和 RPC 的关键区别,rpc,网络协议,学习方法,前端,后端

一元调用

通过将 gRPC URL 填入地址栏并点击「调用」按钮,即可实现一元调用。

掌握 gRPC 和 RPC 的关键区别,rpc,网络协议,学习方法,前端,后端

流式调用

流式调用包括服务端流、客户端流和双向流。调用成功后,用户可以在消息标签区编写并发送消息。Apifox 展示了时间线视图,按顺序分布显示调用状态、发送的消息和收到的消息。点击具体消息可以方便地查看详细信息。

掌握 gRPC 和 RPC 的关键区别,rpc,网络协议,学习方法,前端,后端

知识扩展:文章来源地址https://www.toymoban.com/news/detail-784401.html

  • REST API 简介 - RESTful Web 服务
  • 分布式系统框架对比:gRPC vs Dubbo

到了这里,关于掌握 gRPC 和 RPC 的关键区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【gRPC】第1篇 全面讲解RPC原理(必收藏)

    目录 1、什么是 RPC  2、为什么要用 RPC  3、常用的 RPC 框架 4、RPC 的调用流程 RPC(Remote Procedure Call Protocol)远程过程调用协议 ,目标就是让远程服务调用更加简单、透明。 RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节,服务调用

    2023年04月09日
    浏览(33)
  • 【C++】开源:grpc远程过程调用(RPC)配置与使用

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍grpc远程过程调用(RPC)配置与使用。 无专精则不能成,无涉猎则不能通。。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 项目Github地址: https://github.com/grpc/grpc 官网

    2024年02月15日
    浏览(50)
  • 深入剖析gRPC:Google开源的高性能RPC框架

    在本篇文章中,我们将深入剖析gRPC,Google开源的高性能RPC框架。gRPC是一种基于HTTP/2的高性能、可扩展的RPC框架,它使用Protocol Buffers作为接口定义语言,可以在多种编程语言之间实现无缝通信。 gRPC的核心设计理念是:通过使用HTTP/2作为传输协议,实现高效、可扩展的RPC通信

    2024年02月19日
    浏览(55)
  • go-zero/grpc的rpc服务间传递额外数据

    go-zero/grpc的rpc服务间传递额外数据 2024/02/18 客户端: 初始化 md 也可如下方式: 追加新的如下: 也可使用 md 的 Set 和 Append 方法追加: 服务端: 注意 key 都会被转为小写,即使客户端为大写: 而且 key 只能由 数字、字母和三个特殊字符“-_.”组成,大写字母会自动被转为小写

    2024年02月19日
    浏览(63)
  • RPC和HTTP协议

            RPC 全称(Remote Procedure Call),它是一种针对跨进程或者跨网络节点的应用之间的远程过程调用协议。         它的核心目标是,让开发人员在进行远程方法调用的时候,就像调用本地方法一样,不需要额外为了完成这个交互做过的编码。         为了达到

    2024年02月11日
    浏览(41)
  • REST和RPC的区别

    REST 不是一种协议,它是一种架构。大部分REST的实现中使用了RPC的机制,大致由三部分组成: method:动词(GET、POST、PUT、DELETE之类的) Host:URI(统一资源标识),服务器ip,端口 Path:名词(路径,服务器里面的某个东西)路径的结尾是资源的形态(如html、text、image、pdf等

    2024年02月16日
    浏览(28)
  • RESTful和RPC的区别

    RESTful RESTful是一种基于HTTP协议,通过URL、HTTP方法和参数等方式来访问和操作资源的设计风格和架构方法。它是一种轻量级的、高效的、无状态的Web服务架构,可以用于设计和开发各种类型的Web应用程序和分布式系统。 RESTful的核心思想是资源的定义和管理,将系统中的资源抽

    2024年02月12日
    浏览(21)
  • RPC和HTTP区别是什么?

      🏆今日学习目标: 🍀RPC和HTTP区别是什么? ✅ 创作者 :林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页  🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪发光的社区 目录         1 什么是RPC协议 1.1 简介 2 什么是HTTP协议 2.1 简介 2.2

    2024年02月16日
    浏览(40)
  • RPC和HTTP调用的区别

    RPC(Remote Procedure Call)和HTTP调用都是用于实现远程通信的方法,但它们有一些重要的区别: 通信协议 : RPC:RPC通常使用自定义的二进制协议或者序列化协议(如Protobuf、Thrift)来进行通信。这些协议更加高效,因为它们可以将数据以二进制形式传输,减少了序列化和反序列化

    2024年02月07日
    浏览(44)
  • 自定义Dubbo RPC通信协议

    Dubbo 协议层的核心SPI接口是 org.apache.dubbo.rpc.Protocol ,通过扩展该接口和围绕的相关接口,就可以让 Dubbo 使用我们自定义的协议来通信。默认的协议是 dubbo,本文提供一个 Grpc 协议的实现。 Google 提供了 Java 的 Grpc 实现,所以我们站在巨人的肩膀上即可,就不用重复造轮子了。

    2024年01月19日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包