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

什么是RPC

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

RPC服务框架有哪些

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

file

RPC的通常须要经历4个步骤:

一、创建通讯

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

二、服务寻址

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

三、网络传输

1)序列化框架

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

2)反序列化性能

当B服务器接收到A服务器的请求以后,又须要对接收到的参数等信息进行反序列化操做。代理

四、服务调用

B服务器进行本地调用(经过代理Proxy)以后获得了返回值,此时还须要再把返回值发送回A服务器,一样也须要通过序列化操做,而后再通过网络传输将二进制数据发送回A服务器。cdn

一般,一次完整的PRC调用须要经历如上4个步骤。中间件

MQ(消息队列)

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

file

典型的特色:

一、解耦

二、可靠投递

三、广播

四、最终一致性

五、流量削峰

六、消息投递保证

七、异步通讯(支持同步)

八、提升系统吞吐、健壮性

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

RPC和MQ的区别和关联

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

file

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

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

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

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

本文由博客一文多发平台 OpenWrite 发布!

相关文章
相关标签/搜索