谈到分布式架构,就不得不谈到分布式架构的基石RPC。

什么是RPC

RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。


RPC服务框架有哪些

知名度较高的有Thrift(FB的)、dubbo(阿里的)


RPC的一般需要经历4个步骤:


1、建立通信

首先要解决通讯的问题:即A机器想要调用B机器,首先得建立起通信连接,主要是通过在客户端和服务器之间建立TCP连接。


2、服务寻址

要解决寻址的问题,A服务器上如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称是什么。


3、网络传输

1)序列化

当A服务器上的应用发起一个RPC调用时,调用方法和参数数据都需要先进行序列化。

2)反序列化

当B服务器接收到A服务器的请求之后,又需要对接收到的参数等信息进行反序列化操作。


4、服务调用

B服务器进行本地调用(通过代理Proxy)之后得到了返回值,此时还需要再把返回值发送回A服务器,同样也需要经过序列化操作,然后再经过网络传输将二进制数据发送回A服务器。

通常,一次完整的PRC调用需要经历如上4个步骤。


更加详细的RPC介绍,点击参考:微服务系列:RPC框架的实现原理,及RPC架构组件详解

MQ(消息队列)

消息队列(MQ)是一种能实现生产者到消费者单向通信的通信模型,一般来说是指实现这个模型的中间件。


MQ消息中间件比较:

高并发架构系列:Kafka、RocketMQ、RabbitMQ的优劣势比较


典型的特点:

1、解耦

2、可靠投递

3、广播

4、最终一致性

5、流量削峰

6、消息投递保证

7、异步通信(支持同步)

8、提高系统吞吐、健壮性

典型的使用场景:秒杀业务中利用MQ来实现流量削峰,以及应用解耦使用。

RPC和MQ的区别和关联

1.在架构上,RPC和MQ的差异点是,Message有一个中间结点Message Queue,可以把消息存储。

2.同步调用:对于要立即等待返回处理结果的场景,RPC是首选。

3.MQ 的使用,一方面是基于性能的考虑,比如服务端不能快速的响应客户端(或客户端也不要求实时响应),需要在队列里缓存。

另外一方面,它更侧重数据的传输,因此方式更加多样化,除了点对点外,还有订阅发布等功能。

4.而且随着业务增长,有的处理端处理量会成为瓶颈,会进行同步调用改造为异步调用,这个时候可以考虑使用MQ。


详细的MQ消息队列的选型比较,点击参考:

阿里P8架构师谈:主流的消息队列MQ比较,详解MQ的4类应用场景

你可能也喜欢:

  1. 如何从0到1设计一个类Dubbo的RPC框架
  2. 阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别
  3. 消息中间件系列(九):详解RocketMQ的架构设计、关键特性、与应用场景
  4. 消息中间件系列(五):MQ消息队列的12点核心原理总结
  5. 消息中间件系列(六):什么是流量削峰?如何解决秒杀业务的削峰场景
  6. 深度剖析RPC框架的核心设计

详解RPC远程调用和消息队列MQ的区别相关推荐

  1. java队列_RPC远程调用和消息队列MQ的区别

    RPC和MQ同样都是用于分布式系统的两个很重要的技术,都有服务提供者.消费者的概念,可在一定程度上对系统进行解耦.但两者之间还是有区别的,本篇简单介绍~ 一.RPC RPC(Remote Proced ...

  2. 消息队列的使用场景_消息队列MQ的特点、选型及应用场景

    一.什么是消息队列 消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列. 消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可 ...

  3. 消息中间件系列(四):消息队列MQ的特点、选型、及应用场景详解

    前面集中谈了分布式缓存Redis系列: 高并发架构系列:分布式锁的由来.特点.及Redis分布式锁的实现详解 高并发架构系列:Redis并发竞争key的解决方案详解 高并发架构系列:Redis缓存和M ...

  4. linux 进程间通信 dbus-glib【实例】详解二(上) 消息和消息总线(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  5. 从 0 到 1:全面理解 RPC 远程调用!

    作者 | Python编程时光 责编 | 胡巍巍 什么是RPC呢?百度百科给出的解释是这样的:"RPC(Remote Procedure Call Protocol)--远程过程调用协议,它 ...

  6. python rpc调用_从0到1:全面理解 RPC 远程调用

    上一篇关于 WSGI 的硬核长文,不知道有多少同学,能够从头看到尾的,不管你们有没有看得很过瘾,反正我是写得很爽,总有一种将一样知识吃透了的错觉. 今天我又给自己挖坑了,打算将 rpc 远程调用的知识 ...

  7. linux 进程间通信 dbus-glib【实例】详解二(下) 消息和消息总线(ListActivatableNames和服务器的自动启动)(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  8. xshell1分钟就会自动断_详解xshell远程连接自动断开的问题解决办法

    关于用xshell远程连接系统自动断开问题的解决办法: 1.服务器端的配置 我们都知道,作为服务器,默认一般都是被动的等待客户端的连接到来.但对基于ssh协议的xshell的运用,总是出现自动断开的情 ...

  9. 某个软件调用目标异常_线上RPC远程调用频繁超时问题排查,大功臣Arthas

    来源于公众号Java艺术 , 作者wujiuye 两耳不闻窗外事,一心只读圣贤书.又是一个美好的周末,一觉睡到自然醒,写写文章看看书!这周原计划是写Dubbo注册中心的,但这周先说故事. 上次服务雪崩 ...

最新文章

  1. 从0开始搭建坚不可摧的Web系统主流架构
  2. 图的度 知识图谱的一度关系 几度关系
  3. 如何扩展Dojo tree成chekbox tree
  4. 情人节的第一道小点心
  5. C# —— 深入理解委托类型
  6. PHP通过PDO连接Microsoft Access数据库
  7. 必读的10篇关于GAN的论文
  8. cf round480D Perfect Groups
  9. 必须掌握的Python技巧(三)
  10. rust蓝卡怎么开_Rust娘个人资料简介,角色作品介绍
  11. 前端必须懂的计算机网络知识—(XSS、CSRF和HTTPS)
  12. Android 高级控件ListView用法
  13. scala 辅助构造函数_Scala辅助构造函数的深入介绍
  14. Windows勒索病毒补丁下载
  15. GetTickCount
  16. 神州计算机u盘启动,神州电脑如何使用U盘装系统
  17. 消除WSL中ls Windows文件夹时背光配色的方法
  18. 官方文档——AlwaysOn AG的先决条件、限制和建议
  19. 如何清除掉“无法删除”的顽固文件
  20. ubuntu 18.04中的shutter无法编辑截图

热门文章

  1. 说说 JavaScript 计时器的工作原理
  2. mysql 8.0 一条insert语句的具体执行流程分析(一)
  3. C++类中protected访问权限问题
  4. Linux 查看进程的命令
  5. 嵌入式工程师薪资调查
  6. 急用物料怎么办???
  7. java面向过程编程怎么写_从面向过程到面向对象,我的编程之路
  8. centos 6.5 安装 lamp 后mysql不能启动_CentOS 6.5 系统 LAMP(Apache+MySQL+PHP)安装步骤
  9. eltable刷新整个表格方法_利用SSAS实现PBI报表增量刷新
  10. java cellvalue_Java Cell.getErrorCellValue方法代码示例