【夯实Dubbo】什么是RPC框架?
本文属于【夯实Dubbo】系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习 Dubbo 技术,希望能给读者带来一些干货。系列目录如下(可能随着写作的进行,会做一些调整):
【夯实Dubbo】什么是 RPC 框架?
【夯实Dubbo】Dubbo 的核心特性
【夯实Dubbo】Dubbo 架构和 zookeeper 注册中心的搭建和配置
【夯实Dubbo】Dubbo 和 Spring Boot 整合完成服务注册
【夯实Dubbo】Dubbo 的配置总结
【夯实Dubbo】Dubbo 的负载均衡设置
【夯实Dubbo】Dubbo 的服务熔断和降级处理
【夯实Dubbo】Dubbo 的核心原理
这篇文章主要来分享一下什么是 RPC 框架,关于 RPC 的解释,网上也有很多资料,为了保证教程的完整性,我在这里也简单分享一下,同时自己也顺便巩固巩固。在介绍 RPC 之前,先来看看我们传统是怎么调用的。
比如现在我要调用一个方法,是获取到订单信息,那么在传统项目中,一般是直接调用的,如下:
现在,基于高性能和高可靠等因素的考虑,你决定将系统改造为分布式应用,将很多可以共享的功能都单独拎出来,比如上面说到的订单信息,你单独把它放到一个服务里头,让别的服务去调用它。所以就变成了下面这样:
这下问题来了,服务A里头并没有 OrderServiceImpl 这个类,那它要怎样调用服务B的 OrderServiceImpl 的 get 方法呢?这就可以用到 RPC 框架了,所以我们知道,RPC 框架主要用来解决两个问题:
- 解决分布式系统中,服务之间的调用问题。
- 远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。
我们来看看 RPC 是怎么解释的:Remote Procedure Call,是指的远程过程调用,是一种进程间通信方式,它是一种技术思想,而不是一个规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。所以细节对程序员来说是不用管的。
我们来看下 RPC 框架内部都做了啥,引用一下网上的图:
从这幅图中可以看出,整个 RPC 的调用过程涉及到一个过程和几个概念,我们来总结下:
- Client:调用端,以本地调用方式调用服务,就相当于上面的 Server A。
- client stub:接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化);client stub找到服务地址,并将消息发送到服务端。
- server stub:收到消息后进行解码,反序列化;server stub根据解码结果调用本地的服务;本地服务执行并将结果返回给server stub。server stub将返回结果打包成消息并发送至消费方。
- client stub接收到消息,并进行解码,反序列化,服务消费方得到最终结果。
这个过程,我们可以用一个流程图来表示,会更加直观:
所以可以看到,RPC 的两个核心模块是:通讯和序列化。RPC 的框架有很多,比如:Dubbo、gRPC、Thrift、HSF等等,我主要来总结一下 Dubbo 的使用。
OK,这篇文章大家对 RPC 的框架有了一个大概的了解了,下一篇开始进入 Dubbo 的学习。
扫描下方二维码关注我的公众号,回复 “Dubbo” 即可获取 Dubbo 的视频学习教程。
注:视频供大家学习使用,严禁用于商业用途。
【夯实Dubbo】什么是RPC框架?相关推荐
- Dubbo仅仅是一个RPC框架?
到目前为止,我们了解到了Dubbo的核心功能,提供服务注册和服务发现以及基于Dubbo协议的远程通信,我想,大家以后不会仅仅只认为Dubbo是一个RPC框架吧. Dubbo从另一个方面来看也可以认为是 ...
- java 分布式rpc框架_分布式RPC框架Apache Dubbo(一)
4 Dubbo快速入门 Dubbo作为一个RPC框架,其最核心的功能就是要实现跨网络的远程调用.本小节就是要创建两个应用,一个作为服务的提供方,一个作为服务的消费方.通过Dubbo来实现服务消费方远程 ...
- dubbo-快速入门-分布式RPC框架Apache Dubbo
文章目录 分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 1.1 单体架构 1.2 垂直架构 1.3 SOA架构 1.4 微服务架构 2. Apache Dubbo概述 2.1 D ...
- 分布式RPC框架Apache Dubbo
分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 软件架构的发展经历了由单体架构.垂直架构.SOA架构到微服务架构的演进过程,下面我们分别了解一下这几个架构. 1.1 单体架构 1. ...
- RPC框架(一)RPC简介
一.概述 二.RPC 2.1.RPC定义 2.2.RPC主要组成部分 三.影响RPC框架性能的因素 四.工业界的 RPC 框架一览 4.1.国内 4.2.国外 五.如何选择RPC框架 一.概述 随着公 ...
- 一个轻量级分布式RPC框架--NettyRpc
1.背景 最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章<轻量级分布式 RPC 框架>,作者用Zookeeper.Netty和Spring写了一个轻量级的分布式RPC ...
- 流行的rpc框架性能测试对比
本文转载自鸟窝的博客 流行的rpc框架benchmark 2018新春版 目录 [−] 本文测试的RPC框架 测试场景 模拟业务处理时间 测试数据 测试client 测试指标 测试环境 测试结果 处理 ...
- Java分布式 RPC 框架性能大比拼,Dubbo真的最差吗?
点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取学习资料 Dubbo 是阿里巴巴公司开源的 ...
- Java分布式 RPC 框架性能大比拼,Dubbo最差?
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RP ...
最新文章
- kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享
- GameMaker Studio从头开始学习设计和开发3款游戏
- 成功解决ValueError: (‘Unknown transform primitive years. ‘, ‘Call ft.primitives.list_primitives() to get
- 【CyberSecurityLearning 62】文件包含
- 打开电话Android系统调用
- 物联网正在蚕食嵌入式系统市场
- 再谈borland与MS对BUG的不同态度~
- 学生用计算机重启,如何使学校的电脑在重启后不自动还原系统?
- 【Nginx系列】- Nginx源码复杂安装
- android学习笔记-udacity/Sunshine-Version-2出错
- 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
- android 指南针 原理,手机指南针原理是什么?安卓/苹果手机指南针app工作原理介绍...
- java二重积分_《University Calculus》-chaper13-多重积分-二重积分的计算
- Git基本操作和GtHub 特殊技巧
- 在JSP中,点击网页某个按钮或者超链接执行某些需要确认的命令时,弹出确认框如下效果: 如果点击确定,则执行要操作的命令。如果点击取消则不执行。 实现步骤: 1:在jsp,或者html
- Spring Boot 整合 RabbitMQ 实现
- 全屋定制“下乡”之路,一线从业者的思考:这真是赚钱的生意吗?
- Android无障碍设计简介
- 00 后知道十几年前的手机这么好玩儿吗
- 打印华氏温度与摄氏温度对照表
热门文章
- 【计算专业】正态分布隐藏的秘密 为什么14亿人凑不齐25人的男足国家队
- numpy中mean()函数理解
- 【数论】斯特林公式 ——Stirling公式(取N阶乘近似值)
- Scala中协变(+)、逆变(-)、上界(:)、下界(:)简单介绍
- socket端口范围
- spss、R语言、Python数据分析系列(6):R语言adf单位根检验
- 黑马程序员-----Java基础-----IO流-3
- 大火的AIGC是什么?能用到工作中哪些地方?
- (十四)JUC - 读写锁
- 一小时,学习掌握瀑布流页面布局