RPC核心原理

news/2024/9/21 16:34:10/文章来源:https://www.cnblogs.com/zawaludo/p/18334965

什么是RPC

RPC就是远程过程调用

RPC的作用

  • 屏蔽远程调用本地调用的区别,让我们感觉就是调用本地项目内的方法。
  • 隐藏底层网络通信复杂性,让我们更专注于业务逻辑。

RPC通信流程

一个完整的RPC会涉及哪些步骤呢?

在调用方程序中,RPC框架根据调用的服务接口提前生成动态代理实现类,并将其注入到声明了该接口的相关业务逻辑中。该动态代理实现类拦截所有的方法调用,在提供的方法处理逻辑中完成一整套的远程调用,并把远程调用结果返回给调用方。

RPC框架在方法处理逻辑中完成的远程调用步骤为:

  1. 序列化,将方法调用传入的参数对象转换为可以用TCP等网络协议传输的二进制数据。
  2. 编码,规定一个用于解析二进制数据的协议,按照协议规定的格式组织二进制数据。大多数协议会将数据分为消息头消息体
  3. 网络传输,通过网络将编码后的数据发送到服务提供方。
  4. 解码,服务提供方接收到数据之后按照约定的协议格式解析二进制数据。
  5. 反序列化,将解码后的二进制数据反序列化为调用的接口信息和参数对象等。
  6. 调用实际服务,根据反序列化得到的信息,调用实际服务,产生结果数据。
  7. 将结果序列化、编码之后传输回服务调用方,服务调用方进行解码、反序列化得到结果数据。

步骤的流程图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/774664.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零代码GIS视效升级!一键添加环境效果,支持多种GIS影像协议

在当今的三维GIS领域,如何轻松实现视效升级?这款免费可视化工具——山海鲸可视化,可以给你提供零代码解决方案。山海鲸可视化从三维GIS需求出发,带来了一键添加环境效果的强大功能,显著提升视觉效果。无论是体积云、体积雾还是其他天气效果,只需简单操作,即可呈现逼真环…

springboot自学(5)自定义starter

测试文件可以删除掉了,配置文件改一下后缀修改pom业务代码开发添加自动配置类,并且加上spring.factories到此为止就初步完成了,install到本地的maven仓库然后在使用的项目里加上依赖就行了导入项目,并调用定时任务报表开发 先做个表格的打印方法表格右对齐的方式左对齐的方…

C#营业执照识别接口、营业执照ocr

营业执照识别接口,是基于光学字符识别技术的一种将图像中的字符转化为可编辑文本的技术。翔云营业执照识别接口,自主ocr核心技术,可快速精准识别营业执照上的全部字段信息,支持三证合一版营业执照和五证合一版营业执照。翔云营业执照识别接口提供免费测试体验服务,助力企业…

C#银行卡ocr识别接口的简单集成方式

银行卡识别接口是指:以文字识别技术为基础衍生的银行卡卡面信息识别接口,该接口可以快速、精准的将银行卡卡面上包含银行卡号、卡类型、银行名称等文字信息提取成功,以帮助需要支付的平台进行银行卡身份的快速核验。企业又该如何快速的对银行卡识别接口进行集成?可以选择翔…

umi——设置proxy代理后,请求status一直为500

参考:umi.js proxy设置https请求不验证证书-- 解决SELF_SIGNED_CERT_IN_CHAIN https://blog.csdn.net/u010974701/article/details/86940422我的情况 umi项目,设置proxy代理后,请求status一直为500 .umirc.ts:proxy: {/api: {target: https://xxx, // 服务端域名changeOrig…

STM32学习记录(七):ADC

STM32学习记录(七):ADC 模拟/数字转换器(Analog-to-digital converter:ADC)将模拟量转为数字量。STM32F103C8T6中的有2个12bit转换时间为1us的A/D转换器,内置了一个温度传感器,可以通过ADC读取。 ADC的系统框图ADC读取温度传感器 STM32内部有一个温度传感器,只有使用ADC1时…

国内备受好评PostgreSQL数据库性能如何?

为什么国内很多数据库采用PostgreSQL数据库作为基础,再次开发自己的产品呢?不仅仅是因为PostgreSQL数据库开源免费、PostgreSQL 数据库的性能也是相当出色的,具有以下几个方面的特点: 1. 处理大规模数据: - 能够有效地管理和处理海量的数据。例如,在大型电商网站中,面对…

Springboot集成Flyway详解

1、背景 随着项目的增多,各个项目的版本之间存在差异,因此在升级时,维护项目版本和最新版本之间增量的sql脚本成为一个严重的问题,非常耗时耗力,因此引入一个数据库变更管理工具迫在眉睫。目前比较常用的有flyway和liquibase,liquibase使用xml文件来定义和管理数据库脚本…

IO体系

IO,即in和out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。 Java 中是通过流处理IO 的,那么什么是流? 流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。 当程序…

Java JDK8新增时间类

生成的都是不可变对象,改动内容会存入新对象,原对象不变

C#使用Spire.Doc打印时候出现红字Evaluation Warning: The document was created with Spire.Doc for .NET.

问题 1.使用Spire.Doc 功能输出word 时,文件头部出现 解决方案 2.使用免费版的包 FreeSpire.Docdotnet add package FreeSpire.Doc

记一次 信息服务平台 “维权”

记录一次找寻网站售后客服的“小苦难”记录一次 爱合租 网站找寻客服的小艰辛太长不看: 最后借助于 风鸟 查询企业名, 从而联系上了相关人员 背景 涉及平台是一个软件服务"发车"平台, 简单来说就是为其用户提供各家软件会员合订的一个平台 我自己在上面当了一段时间的…