首页 > 其他分享 >RPC核心原理

RPC核心原理

时间:2024-07-31 16:38:56浏览次数:16  
标签:调用 二进制 核心 RPC 原理 序列化 数据 远程

什么是RPC

RPC就是远程过程调用

RPC的作用

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

RPC通信流程

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

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

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

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

步骤的流程图如下:

标签:调用,二进制,核心,RPC,原理,序列化,数据,远程
From: https://www.cnblogs.com/zawaludo/p/18334965

相关文章

  • 核心(Hutool-core)LocalDateTime工具-LocalDateTimeUtil
    介绍从Hutool的5.4.x开始,Hutool加入了针对JDK8+日期API的封装,此工具类的功能包括LocalDateTime和LocalDate的解析、格式化、转换等操作使用日期转换StringdateStr="2020-01-23T12:23:56";DateTimedt=DateUtil.parse(dateStr);//Date对象转换为LocalDateTimeLocalDat......
  • 核心(Hutool-core)计时器工具-TimeInterval
    介绍Hutool通过封装TimeInterval实现计时器功能,即可以计算方法或过程执行的时间。TimeInterval支持分组计时,方便对比时间。使用TimeIntervaltimer=DateUtil.timer();//---------------------------------//-------这是执行过程//---------------------------------time......
  • 核心(Hutool-core)日期时间对象-DateTime
    由来考虑工具类的局限性,在某些情况下使用并不简便,于是DateTime类诞生。DateTime对象充分吸取Joda-Time库的优点,并提供更多的便捷方法,这样我们在开发时不必再单独导入Joda-Time库便可以享受简单快速的日期时间处理过程。DateTime类继承于java.util.Date类,为Date类扩展了众多简便......
  • 手写MyBatis 重要基本原理框架
    1.手写MyBatis重要基本原理框架@目录1.手写MyBatis重要基本原理框架1.1第一步:IDEA中创建模块1.2第二步:资源工具类,方便获取指向配置文件的输入流1.3第三步:定义SqlSessionFactoryBuilder类1.4第四步:分析SqlSessionFactory类中有哪些属性1.5第五步:定义JDBCTransaction1.6......
  • 服务注册中心+配置中心-Nacos-微服务核心组件【分布式微服务笔记07】
    服务注册中心+配置中心-Nacos-微服务核心组件【分布式微服务笔记07】服务注册中心+配置中心-NacosNacos有两大功能:注册中心[替代Eureka]+配置中心[替代Config]架构理论基础:CAP理论(支持AP【高可用、分区容错性】和CP【分区容错性和数据一致性】,可以切换)Nacos结构......
  • SOMEIPSRV_RPC_11: 字段的设定器和有效载荷
    测试目的:验证字段的setter方法是否按照规范要求,通过请求/响应调用实现,其中请求消息的负载包含期望的字段值,响应消息的负载包含已设置到字段的值。描述本测试用例旨在验证DUT(DeviceUnderTest,被测试设备)在接收到字段setter方法的请求时,是否能够正确地在响应消息中返回设......
  • 核心(Hutool-core)日期时间工具-DateUtil
    转换Date、long、Calendar之间的相互转换//当前时间Datedate=DateUtil.date();//当前时间Datedate2=DateUtil.date(Calendar.getInstance());//当前时间Datedate3=DateUtil.date(System.currentTimeMillis());//当前时间字符串,格式:yyyy-MM-ddHH:mm:ssStringno......
  • 核心(Hutool-core)克隆工具cn.hutool.clone.CloneSupport
    一、直接继承extendsCloneSupport这个类就完事了/**狗狗类,用于继承CloneSupport类@authorLooly*/privatestaticclassDogextendsCloneSupport{privateStringname="wangwang";privateintage=3;}当然,使用CloneSupport的前提是你没有继承任何的类,谁让Java......
  • 核心(Hutool-core)类型转换Convert类
    Java常见类型转换转换为字符串:inta=1;//aStr为"1"StringaStr=Convert.toStr(a);long[]b={1,2,3,4,5};//bStr为:"[1,2,3,4,5]"StringbStr=Convert.toStr(b);转换为指定类型数组:String[]b={"1","2","3","4&q......
  • MQTT原理及案例
    MQTT协议是当今世界上最受欢迎的物联网协议,没有之一。MQTT协议为设备提供了稳定、可靠、简单易用的通信基础,截至目前通过MQTT协议连接的设备已经过亿,广泛应用于IoT、M2M等领域。本篇将从最基础的知识开始,向您讲解MQTT协议的原理与应用。目前MQTT主流版本有MQTT3.1.1......