[每周一更]-(第21期):什么是RPC?

news2025/1/12 3:44:03

在这里插入图片描述

RPC,也就是远程过程调用,是分布式系统中不同节点调用的方式(进程间通信),属于 C/S 模式。RPC 由客户端发起,调用服务端的方法进行通信,然后服务端把结果返回给客户端。

RPC的核心有两个:通信协议和序列化。在 HTTP 2 之前,一般采用自定义 TCP 协议的方式进行通信,HTTP 2 出来后,也有采用该协议的,比如流行的gRPC。

序列化和反序列化是一种把传输内容编码和解码的方式,常见的编解码方式有 JSON、Protobuf 等。

在大多数 RPC的架构设计中,都有Client、Client Stub、Server、Server Stub这四个组件,Client 和 Server 之间通过 Socket 进行通信。RPC 架构如下图所示:

在这里插入图片描述

下面我为你总结下 RPC 调用的流程:

  • 客户端(Client)调用客户端存根(Client Stub),同时把参数传给客户端存根;
  • 客户端存根将参数打包编码,并通过系统调用发送到服务端;
  • 客户端本地系统发送信息到服务器;
  • 服务器系统将信息发送到服务端存根(Server Stub);
  • 服务端存根解析信息,也就是解码;
  • 服务端存根调用真正的服务端程序(Sever);
  • 服务端(Server)处理后,通过同样的方式,把结果再返回给客户端(Client)。

RPC 调用常用于大型项目,也就是我们现在常说的微服务,而且还会包含服务注册、治理、监控等功能,是一套完整的体系。

RPC 框架基本都是直接基于 TCP 协议自研数据结构和编解码方式

RPC 的全称是 Remote Procedure Call,即远程过程调用。简单解读字面上的意思,远程 肯定是指要跨机器而非本机,所以需要用到网络编程才能实现,但是不是只要通过网络通信 访问到另一台机器的应用程序,就可以称之为 RPC
调用了?显然并不够.

我理解的 RPC 是帮助我们屏蔽网络编程细节,实现调用远程方法就跟调用本地(同一个项 目中的方法)一样的体验,我们不需要因为这个方法是远程调用就需要编写很多与业务无关 的代码。

这就好比建在小河上的桥一样连接着河的两岸,如果没有小桥,我们需要通过划船、绕道等 其他方式才能到达对面,但是有了小桥之后,我们就能像在路面上一样行走到达对面,并且 跟在路面上行走的体验没有区别。所以我认为,RPC
的作用就是体现在这样两个方面:

屏蔽远程调用跟本地调用的区别,让我们感觉就是调用项目内的方法; 隐藏底层网络通信的复杂性,让我们更专注于业务逻辑。
在这里插入图片描述

RPC 在架构中的位置

围绕 RPC 我们讲了这么多,那 RPC 在架构中究竟处于什么位置呢? 如刚才所讲,RPC 是解决应用间通信的一种方式,而无论是在一个大型的分布式应用系统 还是中小型系统中,应用架构最终都会从“单体”演进成“微服务化”,整个应用系统会被
拆分为多个不同功能的应用,并将它们部署在不同的服务器中,而应用之间会通过 RPC 进 行通信,可以说 RPC 对应的是整个分布式应用系统,就像是“经络”一样的存在。
在这里插入图片描述

RPC 和 REST 对比

在这里插入图片描述在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

商品推荐系统实战:基于AFM推荐算法的推荐系统实现 代码+数据

例知识点 推荐系统任务描述:通过用户的历史行为(比如浏览记录、购买记录等等)准确的预测出用户未来的行为;好的推荐系统不仅如此,而且能够拓展用户的视野,帮助他们发现可能感兴趣的却不容易发现的item;同时将埋没在长尾中的好商品推荐给可能感兴趣的用户。AFM推荐算法概…

Spring Boot官方推荐的Docker镜像编译方式-分层jar包

目录参考一、普通Dockerfile的缺点二、Docker分层三、Spring Boot分层四、实践核心理论新建demo工程pom.xml测试代码编写Dockerfile我们在项目根目录执行打包命令发布docker镜像修改代码重新发布docker参考 Spring Boot官方推荐的Docker镜像编译方式-分层jar包 Spring Boot la…

Windows11安装Maven

Windows11安装Maven官网下载压缩包:https://maven.apache.org/download.cgi 解压到任意盘 配置环境变量 3.1 右击我的电脑,选择属性 3.2 选择高级系统设置 3.3 选择环境变量 3.4 在系统变量中单击新建 3.5 新建 MAVEN_HOME 变量,然后…

四十四、​Fluent 收敛标准-质量和能量守恒

1. Fluent质量和能量守恒 Fluent收敛性的判断有时候很让人头疼,我们在三十二、Fluent收敛判断标准及方法中概括的讲述过几种收敛标准。 通常我们判断是否收敛最直接的就是看残差曲线,但是很多时候,残差曲线(尤其连续性曲线&#x…

web前端期末大作业 html+css古诗词主题网页设计

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | 等网站的设计与制作 | HTML期末大学生网页设计作业,…

Linux从入门到入土③(GCC、静态与动态链接库、Git、Make、Makefile)

文章目录编译工具GCCGCC基本语法GCC编译流程预处理阶段编译阶段汇编阶段链接阶段GCC常用参数总结多文件编译静态与动态链接库Linux库的创建与使用静态库与动态库的区别静态库的制作与使用动态库的制作与使用解决动态库无法加载问题库的工作原理动态链接器解决方案静态库和动态库…

[附源码]java毕业设计日常饮食健康推荐平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【快速掌握Docker】Docker高级运用汇总--Dockerfile、Docker Compose与Docker Swarm使用

一、Dockerfile的构建 1、指定镜像 采用FROM指令: FROM 指定镜像名称2、设置标签信息 对镜像进行备注说明: LABEL manager"admin" \ label1"docker build1" \ lable2"docker build2"3、运行命令 容器运行后&#xf…

跟艾文学编程《Python基础》(6)numpy数值计算

作者: 艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂。 邮箱: 1121025745qq.com 博客:https://wenjie.blog.csdn.net/ 内容:跟艾文学编程《Pyt…

java学习之包

包的引入 举例:小明和小强都想给自己定义的类命名为Dog(在同一个文件夹下不能有同名的类),包可以解决这个问题 包的作用 1.区分相同名字的类:可以把Dog类放在不同的包 2.当类很多的时候,可以很好的管理…

人工智能在医疗保健服务演变中的作用越来越大

人工智能正被应用于医疗保健服务中,使用的更多技术,从物联网和大数据到聊天机器人。然而,人工智能将破坏医疗保健的主要案例,是计算机辅助诊断。研究综述。 医疗保健提供者和支付方都在进行数字化转型。研究显示,现在…

sp-踩坑小记

想把$BSGS修改为从gUserdefined继承,只能删掉原来的$BSGS,然后在gUserdefined新建一个$BSGS----坑① 如果这个BSGS里面有200个属性,那么还得手动再敲一遍(无法批量导入属性)--坑② 新建的时候,在虚拟机的…

计算机毕业设计ssm+vue基本微信小程序的拼车自助服务小程序

项目介绍 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱拼车自助服务小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行拼车自助服务小程序的设计与开发的数据…

关于4diac的发布/订阅和客户端/服务端功能块的思考

关于4diac的发布/订阅和客户端/服务端功能块的思考 1、PUBLISH和SUBSCRIBE功能块通信 发布/订阅功能块是多对多通信,采用组播的方式,此时的IP地址应为D类IP地址224~239,使用其他的ip地址,则SUBSCRIBE功能块接收不到 2、CLIEN…

【Java八股文总结】之JVM

文章目录JVM一、JVM内存区域1、运行时数据区域1、程序计数器2、java虚拟机栈Q:栈可能出现的两种错误3、本地方法栈4、堆Q:堆中会出现的错误Q:堆中对象的分配过程5、方法区Q:堆和栈的区别?2、为什么要将永久代&#xff…

STM32CubeIDE下载安装

一,下载安装。 官方下载地址: STM32CubeIDE - STM32的集成开发环境 - STMicroelectronics 下载需要注册账号,或者登记信息。 安装过程很简单,默认next就行,不过注意安装文件目录不要有中文,不然会报错&a…

java计算机毕业设计ssm美妆产品进销存管理系统

项目介绍 随着经济的发展和信息技术的普及,国内许多企业都面临了重大的挑战。企业的管理流程、战略规划如果不能进行调整,极有可能面临淘汰的风险。特别是美妆企业,面对大量的美妆产品和进销售管理,如果不使用信息系统进行有效的管理和利用,那就会阻碍企业的发展,使企业在市场…

学生dreamweaver网页设计作业成品___辅导网站( 4页 登录注册 轮播图)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | | HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 CSS:样式 在操作方面上运用了html5和css3, 采…

高性能 MySQL - 第六章 查询性能优化

最近阅读MySQL高性能,略有收获,好记忆不如烂笔头,记录一下。本期笔记主要是围绕高性能MySQL第六章查询性能优化。 整体结构 重点、亮点内容摘抄 第六章 查询性能优化 查询优化、索引优化、库表结构优化需要齐头并进,一个不落。在…

nodejs express 的基本使用

测试需要快速过一遍express的基本使用方法 直接安装express使用 express和koa的区别](https://zhuanlan.zhihu.com/p/372128788)egg.js企业级开发框架 npm install exress --save可以使用express-generator生成项目框架 $ npx express-generatorwarning: the default view …