本文属于【夯实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 框架主要用来解决两个问题:

  1. 解决分布式系统中,服务之间的调用问题。
  2. 远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。

我们来看看 RPC 是怎么解释的:Remote Procedure Call,是指的远程过程调用,是一种进程间通信方式,它是一种技术思想,而不是一个规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。所以细节对程序员来说是不用管的。

我们来看下 RPC 框架内部都做了啥,引用一下网上的图:


从这幅图中可以看出,整个 RPC 的调用过程涉及到一个过程和几个概念,我们来总结下:

  1. Client:调用端,以本地调用方式调用服务,就相当于上面的 Server A。
  2. client stub:接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化);client stub找到服务地址,并将消息发送到服务端。
  3. server stub:收到消息后进行解码,反序列化;server stub根据解码结果调用本地的服务;本地服务执行并将结果返回给server stub。server stub将返回结果打包成消息并发送至消费方。
  4. client stub接收到消息,并进行解码,反序列化,服务消费方得到最终结果。

这个过程,我们可以用一个流程图来表示,会更加直观:


所以可以看到,RPC 的两个核心模块是:通讯和序列化。RPC 的框架有很多,比如:Dubbo、gRPC、Thrift、HSF等等,我主要来总结一下 Dubbo 的使用。

OK,这篇文章大家对 RPC 的框架有了一个大概的了解了,下一篇开始进入 Dubbo 的学习。


扫描下方二维码关注我的公众号,回复 “Dubbo” 即可获取 Dubbo 的视频学习教程。
注:视频供大家学习使用,严禁用于商业用途。

【夯实Dubbo】什么是RPC框架?相关推荐

  1. Dubbo仅仅是一个RPC框架?

    到目前为止,我们了解到了Dubbo的核心功能,提供服务注册和服务发现以及基于Dubbo协议的远程通信,我想,大家以后不会仅仅只认为Dubbo是一个RPC框架吧. Dubbo从另一个方面来看也可以认为是 ...

  2. java 分布式rpc框架_分布式RPC框架Apache Dubbo(一)

    4 Dubbo快速入门 Dubbo作为一个RPC框架,其最核心的功能就是要实现跨网络的远程调用.本小节就是要创建两个应用,一个作为服务的提供方,一个作为服务的消费方.通过Dubbo来实现服务消费方远程 ...

  3. dubbo-快速入门-分布式RPC框架Apache Dubbo

    文章目录 分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 1.1 单体架构 1.2 垂直架构 1.3 SOA架构 1.4 微服务架构 2. Apache Dubbo概述 2.1 D ...

  4. 分布式RPC框架Apache Dubbo

    分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 软件架构的发展经历了由单体架构.垂直架构.SOA架构到微服务架构的演进过程,下面我们分别了解一下这几个架构. 1.1 单体架构 1. ...

  5. RPC框架(一)RPC简介

    一.概述 二.RPC 2.1.RPC定义 2.2.RPC主要组成部分 三.影响RPC框架性能的因素 四.工业界的 RPC 框架一览 4.1.国内 4.2.国外 五.如何选择RPC框架 一.概述 随着公 ...

  6. 一个轻量级分布式RPC框架--NettyRpc

    1.背景 最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章<轻量级分布式 RPC 框架>,作者用Zookeeper.Netty和Spring写了一个轻量级的分布式RPC ...

  7. 流行的rpc框架性能测试对比

    本文转载自鸟窝的博客 流行的rpc框架benchmark 2018新春版 目录 [−] 本文测试的RPC框架 测试场景 模拟业务处理时间 测试数据 测试client 测试指标 测试环境 测试结果 处理 ...

  8. Java分布式 RPC 框架性能大比拼,Dubbo真的最差吗?

    点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取学习资料 Dubbo 是阿里巴巴公司开源的 ...

  9. Java分布式 RPC 框架性能大比拼,Dubbo最差?

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RP ...

最新文章

  1. kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享
  2. GameMaker Studio从头开始学习设计和开发3款游戏
  3. 成功解决ValueError: (‘Unknown transform primitive years. ‘, ‘Call ft.primitives.list_primitives() to get
  4. 【CyberSecurityLearning 62】文件包含
  5. 打开电话Android系统调用
  6. 物联网正在蚕食嵌入式系统市场
  7. 再谈borland与MS对BUG的不同态度~
  8. 学生用计算机重启,如何使学校的电脑在重启后不自动还原系统?
  9. 【Nginx系列】- Nginx源码复杂安装
  10. android学习笔记-udacity/Sunshine-Version-2出错
  11. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
  12. android 指南针 原理,手机指南针原理是什么?安卓/苹果手机指南针app工作原理介绍...
  13. java二重积分_《University Calculus》-chaper13-多重积分-二重积分的计算
  14. Git基本操作和GtHub 特殊技巧
  15. 在JSP中,点击网页某个按钮或者超链接执行某些需要确认的命令时,弹出确认框如下效果: 如果点击确定,则执行要操作的命令。如果点击取消则不执行。 实现步骤: 1:在jsp,或者html
  16. Spring Boot 整合 RabbitMQ 实现
  17. 全屋定制“下乡”之路,一线从业者的思考:这真是赚钱的生意吗?
  18. Android无障碍设计简介
  19. 00 后知道十几年前的手机这么好玩儿吗
  20. 打印华氏温度与摄氏温度对照表

热门文章

  1. 【计算专业】正态分布隐藏的秘密 为什么14亿人凑不齐25人的男足国家队
  2. numpy中mean()函数理解
  3. 【数论】斯特林公式 ——Stirling公式(取N阶乘近似值)
  4. Scala中协变(+)、逆变(-)、上界(:)、下界(:)简单介绍
  5. socket端口范围
  6. spss、R语言、Python数据分析系列(6):R语言adf单位根检验
  7. 黑马程序员-----Java基础-----IO流-3
  8. 大火的AIGC是什么?能用到工作中哪些地方?
  9. (十四)JUC - 读写锁
  10. 一小时,学习掌握瀑布流页面布局