打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
分布式RPC与MQ消息队列的核心区别(4大核心区别详解)

RPC和MQ消息队列在分布式场景占据了非常重要的地位,具体两者有什么核心区别,各自的应用场景是怎样的呢?

今天分享RPC和MQ的4大核心区别,我先从MQ谈起@mikechen

01 MQ消息队列

消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列。

消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。

下图便是消息队列的基本模型,向消息队列中存放数据的叫做生产者,从消息队列中获取数据的叫做消费者。

典型的MQ中间件:

RabbitMQ、RocketMQ、Kafka等

消息队列MQ应用场景

1.异步处理

消息队列的主要特点是异步处理,主要目的是减少请求响应时间,实现非核心流程异步化,提高系统响应性能。

举一个用户注册的例子,用户注册成功后,系统需要发送注短信注册成功通知,以及赠送注册成功的积分。

1)同步

同步的总耗时:10ms+100ms+100ms=210ms

由于短信通知与增加积分为非核心流程,为了提升系统响应性能,从而我把它改造为异步。

2)异步

改造后就变成上图,之前需要等用户注册10ms+短信通知100ms+增加积分100ms才能返回,现在把短信通知和增加积分改为异步的形式,用户注册后写入消息10ms左右立即返回成功给客户端,无需等待耗时较久的同步(短信+积分)就可以返回,从而极大的提升了系统的吞吐量。

所以异步的典型场景就是将比较耗时而且不需要即时(同步)返回结果的操作,通过消息队列来实现异步化。

2.应用解耦

使用了消息队列后,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦。

每个成员不必受其他成员影响,可以更独立自主,只通过消息队列MQ来联系,典型的上下游解耦如下图所示:

3.流量削锋

流量削锋也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。

这种场景中系统的峰值流量往往集中于一小段时间内,所以为了防止系统在短时间内的峰值流量冲垮,往往采用消息队列来削弱峰值流量,相当于消息队列做了一次缓冲。

02 分布式RPC通信

RPC,即Remote Procedure Call,翻译过来就是远程过程调用,主要解决远程网络通信间的问题。

RPC通信框架

知名度较高的有gRPC(Google)、Thrift(Facebook )、Dubbo(阿里)。

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

1、建立通信

首先要解决通讯的问题:即A机器想要调用B机器,首先得建立起通信连接。

主要是通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输,连接可以是长连接,多个远程过程调用共享同一个连接。

2、服务寻址

要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称名称是什么。

3、网络传输

1)序列化

网络协议是基于二进制的,所有我们传输的参数数据都需要先进行序列化Serialize。

2)反序列化

对接收到的参数等信息进行反序列化操作,也就是序列化的逆操作。

4、服务调用

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

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

03 RPC和MQ的4大区别

1.架构区别

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

2.调用区别

对于要立即返回处理结果的同步场景,RPC首选。

3.功能区别

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

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

4.性能区别

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

以上是就是RPC和MQ消息队列的区别介绍,更多分布式架构系列、Dubbo等微服务系列等等,请查看以下文章:

阿里架构师进阶从0到1全部合集(建议收藏)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
金融行业消息队列选型及实践
消息队列全面了解(二)
【SEDA异步框架】【三】异步框架技术选型
7 款国产开源项目带你理解神秘的中间件|Gitee 项目推荐
大型网站架构系列:分布式消息队列(一)
MQ消息队列
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服