美文网首页JMS分布式
高并发架构系列:详解RPC远程调用和消息队列MQ的区别

高并发架构系列:详解RPC远程调用和消息队列MQ的区别

作者: 匆匆岁月 | 来源:发表于2019-03-16 21:09 被阅读944次

    RPC

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

    RPC框架

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

    高并发架构系列:详解RPC远程调用和消息队列MQ的区别

    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中间件:

    RabbitMQ、ActiveMQ、Kafka等

    典型的特点:

    1、解耦

    2、可靠投递

    3、广播

    4、最终一致性

    5、流量削峰

    6、消息投递保证

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

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

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

    RPC和MQ的区别和关联

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

    高并发架构系列:详解RPC远程调用和消息队列MQ的区别

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

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

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

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

    相关文章

      网友评论

        本文标题:高并发架构系列:详解RPC远程调用和消息队列MQ的区别

        本文链接:https://www.haomeiwen.com/subject/mtremqtx.html