如何查找网站,网站怎么打开,境外域名,网站后台首页模板一、远程过程调用协议简介
1、RPC 的本质
首先#xff0c;我们探讨一下什么是 RPC。RPC#xff0c;缩写为 Remote Procedure Call Protocol#xff0c;直译来看就是远程过程调用协议。
讲得通俗一些#xff1a;
RPC 是一种通信机制RPC 实现了客户端/服务器通信模型
官…一、远程过程调用协议简介
1、RPC 的本质
首先我们探讨一下什么是 RPC。RPC缩写为 Remote Procedure Call Protocol直译来看就是远程过程调用协议。
讲得通俗一些
RPC 是一种通信机制RPC 实现了客户端/服务器通信模型
官方的定义可能会这样解释它是一种协议可以使程序能在网络上请求远程计算机上的服务而无须关心底层网络技术细节。
RPC 的构架可以分为三个层次
用户与服务器负责业务逻辑并调用本地的存根程序存根程序Stub负责封装和解封装约定语法和语义RPC运行时RPCRuntime管理网络通信的最底层
下面的示意图说明了典型的开发情景前端代码调用后端服务 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) 返回结果。 三、了解 JSON-RPC 接口
JSON-RPC 是一种简洁的使用JSON格式数据的RPC传输协议它通过HTTP进行通信。Postman 是API开发中常用的工具能够轻松实现 JSON-RPC 接口的测试与使用。
四、如何调试 gRPC
Apifox 提供基于 .proto 文件的 gRPC 接口调试功能支持包含一元调用和流式调用。项目创建时选择「gRPC项目」并导入 .proto 文件即可开始调试无需编写额外代码。 导入 .proto 文件之前需要确认是否有其他依赖的.proto文件并添加相应的依赖路径。 一元调用
通过将 gRPC URL 填入地址栏并点击「调用」按钮即可实现一元调用。 流式调用
流式调用包括服务端流、客户端流和双向流。调用成功后用户可以在消息标签区编写并发送消息。Apifox 展示了时间线视图按顺序分布显示调用状态、发送的消息和收到的消息。点击具体消息可以方便地查看详细信息。 知识扩展
REST API 简介 - RESTful Web 服务分布式系统框架对比gRPC vs Dubbo