手撕RPC——前言

手撕RPC——前言

  • 一、RPC是什么?
  • 二、为什么会出现RPC
  • 三、RPC的原理
    • 3.1 RPC是如何做到透明化远程服务调用?
    • 3.2 如何实现传输消息的编解码?

一、RPC是什么?

RPC(Remote Procedure Call,远程过程调用)是一种用于在不同的计算机之间进行通信的技术,允许一个程序调用另一个程序中的函数或方法,就像调用本地函数一样,而无需程序员显式地编写通信代码。

二、为什么会出现RPC

在企业开发中,随着业务复杂度的提高,单体应用服务不再能满足需求,于是都会采用分布式框架,随之而来的问题就是单体应用服务被拆分成多个独立部署的服务,他们之间如何通信呢?这里就要用到RPC了,通过使用RPC,客户端可以远程调用位于其他服务器上的方法函数,就像调用本地方法一样。
RPC框架解决在分布式架构中,各个服务之间的网络通信问题的框架。

三、RPC的原理

我们首先从RPC的调用流程入手,然后对各个流程涉及到的一些重要技术再做深入探讨,有些没讲到的技术会在后续文章中结合项目进行讲解。

在这里插入图片描述

具体流程如下

  1. Client以本地调用方式调用服务
  2. Client Stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体
  3. Client Stub找到服务地址,并将消息发送到服务端
  4. Server Stub收到消息后进行解码
  5. Server Stub根据解码结果调用本地的服务
  6. 本地服务执行并将结果返回给Server Stub
  7. Server Stub将返回结果打包成消息并发送至消费方
  8. Client Stub接收到消息,并进行解码
  9. 服务消费方得到最终结果

3.1 RPC是如何做到透明化远程服务调用?

通过动态代理模式,在执行该方法的前后对数据进行封装和解码等,让用于感觉就像是直接调用该方法一样,殊不知,我们对方法前后都经过了复杂的处理。

3.2 如何实现传输消息的编解码?

通俗来说,在客户端和服务端通信的过程中,客户端向服务端发送方法调用请求,服务端接收到请求后,在本地调用方法,调用结束后,再向客户端发送响应消息。

所以我们就要自己来封装消息对象的数据结构,以便于双方通信的进行,而我们在进行rpc调用时,不可能是直接在网络中传输消息对象的,网络中的数据都是以字节流方式来传输的,所以我们就需要对这些对象进行编解码,这就要用到数据序列化和反序列化技术了。

序列化:把对象转换为字节序列的过程称为对象的序列化,也就是编码的过程。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化,也就是解码的过程。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RealityCheck™电机监测和预测性维护模型

RealityCheck™电机 一个附加的软件工具箱,可实现条件监测和预测性维护功能,而无需依赖额外的传感器。相反,它使用来自电机控制过程的电子信息作为振动和其他传感器的代理。凭借其先进的信号处理和机器学习(ML)模型,RealityCheck …

示例:推荐一个应用Adorner做的表单对话框

一、目的:开发过程中经常会修改和查看一个Model的数据,一般情况下会自定义一个控件或Window去显示Model数据,但这种数据如果比较多会增加很多开发工作,本文介绍一种通用的方式,应用表达Form控件去简化处理,…

ARM裸机:基础了解

ARM的几种版本号 ARM内核版本号 ARMv7 ARM SoC版本号 Cortex-A8 芯片型号 S5PV210 ARM型号的发展历程 m microcontroller微控制器 就是单片机 a application应用级处理器 就是手机、平板、电脑的CPU r realtime实时处理器 响应速度快,主要用在工业、航天等领域 soc 、cpu、…

Elasticsearch:智能 RAG,获取周围分块(二)

在之前的文章 “Elasticsearch:智能 RAG,获取周围分块(一) ” 里,它介绍了如何实现智能 RAG,获取周围分块。在那个文章里有一个 notebook。为了方便在本地部署的开发者能够顺利的运行那里的 notebook。在本…

如何在 Mac 上清空硬盘后恢复丢失的数据?

如果您不小心从 Mac 硬盘上删除了重要文件,您可能会感到非常沮丧。但您仍然可以找回丢失的信息。将 Mac 想象成一个大盒子,里面装着所有东西。丢弃某样东西就像撕掉盒子上的标签:房间现在可以放新东西了,但旧东西仍然在那里&#…

文华财经T8自动化交易程序策略模型指标公式源码

文华财经T8自动化交易程序策略模型指标公式源码: //定义变量 //资金管理与仓位控制 8CS:INITMONEY;//初始资金 8QY:MONEYTOT;//实际权益 8QY1:MIN(MA(8QY,5*R),MA(8QY,2*R)); FXBL:N1; DBKS:8QY1*N1;//计算单笔允许亏损额度 BZDKS:MAX(AA-BB,N*1T)*UNIT; SZDKS:MAX…

已解决ApplicationException异常的正确解决方法,亲测有效!!!

已解决ApplicationException异常的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 分析错误日志 检查业务逻辑 验证输入数据 确认服务器端资源的可用性 增加对特殊业务情况的处理…

能正常执行但是 cion 标红/没有字段提示

ctrl q 退出 clion 找到工程根目录,删除隐藏文件 .idea 再重新打开 clion 标红消失,同时再次输入函数/类属性,出现字段提示 clion 的智能提示方案存储在 .idea 文件中,如果工程能够正常编译执行,那么说明是智能提示…

InfoMasker :新型反窃听系统,保护语音隐私

随着智能手机、智能音箱等设备的普及,人们越来越担心自己的谈话内容被窃听。由于这些设备通常是黑盒的,攻击者可能利用、篡改或配置这些设备进行窃听。借助自动语音识别 (ASR) 系统,攻击者可以从窃听的录音中提取受害者的个人信息&#xff0c…

如何搭建饥荒服务器

《饥荒》是由Klei Entertainment开发的一款动作冒险类求生游戏,于2013年4月23日在PC上发行,2015年7月9日在iOS发布口袋版。游戏讲述的是关于一名科学家被恶魔传送到了一个神秘的世界,玩家将在这个异世界生存并逃出这个异世界的故事。《饥荒》…

华为数通——ACL

ACL基本介绍 ACL:访问控制列表,通过端口对数据流进行过滤,ACL判别依据是五元组:源IP地址,源端口,目的IP地址,目的端口、协议。(ACL工作于OSI模型第三层,是路由器和三层交换机接口的…

2.超声波测距模块

1.简介 2.超声波的时序图 3.基于51单片机实现的代码 #include "reg52.h" #include "intrins.h" sbit led1P3^7;//小于10,led1亮,led2灭 sbit led2P3^6;//否则,led1灭,led2亮 sbit trigP1^5; sbit echo…

基于51单片机抽奖系统

基于51单片机抽奖系统 (仿真+程序) 功能介绍 具体功能: 1.利用5片74HC495对单片机的IO进行串并转换,进而控制5个1位数码管; 2.采用一个独立按键用于抽奖系统的启停控制; 3.8位拨码开关是用…

地推利器Xinstall:全方位二维码统计,打造高效地推策略,轻松掌握市场脉搏!

在移动互联网时代,地推作为一种传统的推广方式,依然占据着重要的地位。然而,随着市场竞争的加剧,地推也面临着诸多挑战,如如何有效监测下载来源、解决填码和人工登记的繁琐、避免重复打包和iOS限制、以及如何准确考核推…

Linux基础二

目录 一,tail查看文件尾部指令 二,date显示日期指令 三,cal查看日历指令 四,find搜索指令 五,grep 查找指令 六,> 和>> 重定向输出指令 七, | 管道指令 八,&&逻辑控…

让你的Python代码更简洁:一篇文章带你了解Python列表推导式

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 列表推导式 📒📝 语法📝 条件筛选📝 多重循环📝 列表推导式的优点📝 使用场景📝 示例代码🎯 示例1🎯 示例2⚓️ 相关链接 ⚓️📖 介绍 📖 在Python编程中,列表推导式是一种强大且高效的语法,它允许你用…

江协科技51单片机学习- p14 调试LCD1602显示屏

前言: 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用: 51单片机入门教程-2…

YouTube API接口:一键获取Playlist视频合集信息

核心功能介绍 在视频内容日益繁荣的今天,YouTube作为全球领先的视频分享平台,为内容创作者、品牌商家以及数据分析师提供了丰富的视频资源。其中,Playlist视频合集作为YouTube上的一种特色内容形式,深受用户喜爱。为了更好地满足…

cpolar:通过脚本自动更新主机名称和端口号进行内网穿透【免费版】

cpolar 的免费版经常会重新分配 HostName 和 Port,总是手动修改太过麻烦,分享一下自动更新配置文件并进行内网穿透的方法。 文章目录 配置 ssh config编写脚本获取 csrf_token打开登陆界面SafariChrome 设置别名 假设你已经配置好了服务器端的 cpolar。 …

计算机视觉解决什么问题?

本节课为「计算机视觉 CV 核心知识」第一节课正式课; 「AI秘籍」系列课程: 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识 Hi,大家好。我是茶桁。 老同学对我应该都很熟悉了&#xff…