快速弄懂RPC

news2024/11/23 13:48:21

快速弄懂RPC

  • 常见的远程通信方式
  • 远程调用
  • RPC协议
  • RPC的运用场景和优势

常见的远程通信方式

基于REST架构的HTTP协议以及基于RPC协议的RPC框架。

远程调用

是指跨进程功能调用

跨进程可以理解为一个计算机节点的多个进程或者多个计算机节点的多个进程

RPC协议

远程过程调用

他是一种通过网络从远程计算机程序上请求服务,而不需要去了解底层网络技术的一种协议。凡是该协议的框架,我们都可以称为RPC框架。

通俗的理解就是A计算机提供一个服务,B计算机可以通过调用本地服务一样去调用A计算机提供的一个服务。这就是RPC协议的一个功能。

要实现RPC,需要通过网络进行数据传输,并且对调用的过程进行封装

现在比较流行的RPC框架都会采用TCP协议作为底层传输协议。当然其他协议也是可以的,比如UDP

RPC协议强调的是过程调用,调用的过程对用户而言是透明的,用户不需要关心调用的细节。可以像调用本地服务一样去调用远程服务。

在这里插入图片描述
一个完整的RPC协议包含了四个核心组件,分别是Client、Server、Client Stub以及Server Stub。

第一个客户端Client表示服务的调用方,第二个服务端Server是真正服务提供者,第三个是客户端存根叫Client Stub存放服务端的地址信息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。第四个是服务端的存根叫Server Stub接收客户端发送过来的消息,将消息进行反序列化,并调用本地方法。

目前比较流行的开源RPC框架,有Google的gRPC, facebook的Thrift,阿里巴巴的Dubbo。

RPC的运用场景和优势

在开发电商系统的时候,随着业务越来越复杂,走分布式架构这个方向是绝大部分的互联网企业必然的一个选择。

分布式架构落地的里程碑应该是阿里的去IOE运动的成功,让互联网企业看到如何利用更少的软硬件成本来支撑海量的用户。分布式架构的核心就是利用多个普通的计算机节点组成一个庞大的复杂计算网络,提供一个高性能以及高并发的能力支撑。

在分布式架构中,原本单体应用被拆分成多个独立部署的服务,分布在计算机网络上。这些服务必然需要网络进行数据的通信和交付。而RPC框架就是解决在分布式架构中的各个业务服务彼此的网络通信的一个方案。

一般来说,RPC服务主要是针对大型的企业,也就是说当我们的业务复杂度以及用户量都比较高的时候,需要对服务进行解耦,从而达到部署性强、部署灵活的一个目的。

一般情况下,市面上的开源RPC框架除了提供基础的远程通信功能以外,还会在性能的消耗上、传输效率上、服务治理等方面做出很多的一些优化和设计。比如说阿里开源的RPC框架Dubbo就提供了非常丰富的服务治理的一些功能。

参考资料:【Java面试】白嫖福利,5分钟带你快速弄懂RPC!

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

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

相关文章

C++string类

📟作者主页:慢热的陕西人 🌴专栏链接:C 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容讲解了C中的string类以及类内的一些常用函数 Cstring类 文章…

k8s_3节点集群部署

背景 近期想在自己电脑上部署一套3节点K8s 作为自己平时的学习测试环境。 本来想看一下有没有比较便捷的部署方式如: rancherdesktop: https://docs.rancherdesktop.io/zh/next/getting-started/installation/ sealos: https://www.sealos.io/docs/getting-started…

【超算/先进计算学习】日报3

目录 今日已完成任务列表遇到的问题及解决方案任务完成详细笔记作业管理系统 slurm作业管理系统及常用用户命令节点状态查询/作业提交命令作业队列查询/作业取消命令任务练习 调试器 GDB实时调试core 文件调试 对自己的表现是否满意简述下次计划其他反馈 今日已完成任务列表 4-…

Spring的体系结构

Spring的体系结构 一、Spring简介1. Spring介绍1.1 为什么要学1.2 学什么1.3 怎么学 2. 初识Spring2.1 Spring家族2.2 Spring发展史 3. Spring体系结构3.1 Spring Framework系统架构图3.2 Spring Framework课程学习路线 4. Spring核心概念4.1 目前我们代码存在的问题4.2 核心概…

『Linux从入门到精通』第 ⑫ 期 -深入了解冯诺依曼体系结构与操作系统(Operator System)

文章目录 💐专栏导读💐文章导读🌷计算机之父——冯诺依曼🌷冯诺依曼体系结构🌺木桶效应 🌷操作系统(Operator System)🌺如何理解操作系统🌺系统调用和库函数概念 💐专栏导…

论文结构商讨

论文查重 pass软件 提出问题 1、由于选取的算法太多了,不知道是简单介绍,还是深入介绍 希望找到一个具体的模板 2、数据库要是用一个就在前面介绍,用不一样的就在每章里面分别介绍 4、数据集介绍放在那个具体位置? 如果可以画出…

蓝精灵事件来袭: 深受喜爱的蓝色角色来 Web3 啦!

起源于漫画并成为国际知名的卡通和电影明星的蓝色x小家伙正在进入 NFT 舞台。 作者:Coindesk——Toby Bochan 因漫画、卡通片和电影而闻名的热门动画系列“蓝精灵”正在展开新的冒险,由蓝精灵协会推出一系列新的非同质化通证(NFT)…

汽车ECU的内部构成与功能模块

摘要: ECU作为与外部通信的接口,为了通过微控制器运算实现符合实际状态的最佳控制,需要检测外部状态的输入手段及实际控制驱动的输出手段。 1. 常规功能模块 ① 电源:向ECU内的各模块提供稳定的电压(5V、3V等&#xf…

sequelize + Nodejs + MySQL 的简单用法

How to Use Sequelize ORM in NodeJS - Tutorial 1 Sequlize 简介 Sequelize 是最流行的可以与 Nodejs 一起使用的一种关系数据库 ORM (Object-relational mapping 对象关系映射),Mongoose 是 MongoDB 的 ORM. Sequelize 的作用,简单地说,就…

Netty编解码器,Netty自定义编解码器解决粘包拆包问题,Netty编解码器的执行过程详解

文章目录 一、编解码器概述1、编解码器概述2、编码器类关系图3、解码器类关系图 二、以编解码器为例理解入站出站1、Server端2、Client端3、编解码器3、执行查看结果4、注意事项 三、Netty其他内置编解码器1、ReplayingDecoder2、其他编码器3、内置编解码器处理粘包拆包问题 四…

[LeetCode复盘] LCCUP‘23春季赛 20230422

[LeetCode复盘] LCCUP23春季赛 20230422 一、总结二、 1. 补给马车1. 题目描述2. 思路分析3. 代码实现 三、2. 探险营地1. 题目描述2. 思路分析3. 代码实现 四、 3. 最强祝福力场1. 题目描述2. 思路分析3. 代码实现 五、 4. 传送卷轴1. 题目描述2. 思路分析3. 代码实现 六、 5…

REDIS03_AOF概述、工作流程、写回策略、正常异常流程、重写机制、配置文件详解

文章目录 ①. AOF - 概述作用②. AOF - 工作流程③. 缓冲区 - 写回策略④. 配置文件说明(6 VS 7)⑤. 正常、异常恢复⑥. AOF - 优劣势⑦. AOF - 重写机制⑧. AOF优化配置项详解⑨. RBD和AOF共存模式 ①. AOF - 概述作用 ①. 官网介绍 ②. 以日志的形式来记录每个写操作,将Red…

解决RabbitMQ的The channelMax limit is reached. Try later.

The channelMax limit is reached. Try later.顾名思义就是channel达到数量限制 查看源码得出 大概意思就是: 默认最大通道数;2047,因为它在服务器端是第2048个,每个连接用于协商和错误通信。 也可以在rabbitmq的管控台看出 总结…

单页面与路由

目录 (一)什么是SPA应用? (二)路由 (1)什么是路由? (2)路由的分类 (3)路由的安装和使用 (三)、路由的使…

微服务 - 搭建Consul集群服务,Consul配置中心

传统配置文件的弊端 静态化配置,例如env文件配置文件无法区分环境配置文件过于分散历史版本无法查看 配置中心如何解决的呢?配置中心的思路是把项目中的配置参数全部放在一个集中的地方来管理,并提供一套标准的接口,当各个服务需要获取配置…

d2l 使用attention的seq2seq

这一章节与前面写好的function关联太大,建议看书P291. 这章节主要讲述了添加attention的seq2seq,且只在decoder里面添加,所以全文都在讲这个decoter 目录 1.训练 2.预测 1.训练 #save class AttentionDecoder(d2l.Decoder):"""带有注…

HTTP与HTTPS相关介绍(详细)

HTTP与HTTPS相关介绍 HTTP与HTTPS简述HTTPS和HTTP的区别主要如下HTTPS的工作原理前言工作步骤总结 HTTPS的缺点SSL与TLSSSL:TLS:TLS和SSL的关系 对称加密与非对称加密对称加密非对称加密 HTTP与HTTPS简述 超文本传输协议(Hyper Text [Transf…

如何无侵入地引入第三方组件?

做java开发的小伙伴都知道,java的生态比较繁荣,有各种各样的第三方组件来满足我们日常的开发需求。很多常用的中间件(redis,kafka等)都提供java的开发接口,而且这些接口通常会被封装成比较好用的组件来满足我们使用这些中间件的场…

SpringBoot集成MyBatis-yml自动化配置原理详解

SpringBoot集成MyBatis-yml自动化配置原理详解 简介:spring boot整合mybatis开发web系统目前来说是市面上主流的框架,每个Java程序和springboot mybatis相处的时间可谓是比和自己女朋友相处的时间都多,但是springboot mybatis并没有得到你的真…

RabbitMQ--详情概述

一、消息队列(Rabbit Message Queue) 1、概念 消息队列是一种应用之间的通信方式,消息发送之后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只发布消息到MQ,消息使用者值从MQ中拿消息,两者不知道对方的存在。 简…