消息队列MQ的运用场景

提到MQ,就必须要说下现在主流的MQ,大概有四个,Active MQ,Rabbit MQ,RocketMQ和kafkaMQ。先说下各自的特点

ActiveMQ : 单机吞吐量级别为万级别的(以下都是单机),延时在ms级别,基于主从架构实现高可用,消息可靠性为低丢失;

RabbitMQ : 吞吐量与activemq一样为万级别的,但是这种消息队列延时特别低,为微秒级别的,而且消息基本不丢失,可用于高并发,现在这种MQ用的比较普遍,个人开发和小公司都是可以的。

RocketMQ : 吞吐量为10万级别的,可以支持大量的topic,消息可靠性可以通过参数配置优化做到丢失率为0,延时在ms级别,基于分布式架构。

KafkaMQ :吞吐量也是10万级别的,但是在topic上面,一旦过多就会导致吞吐量大幅度降低,高可用性基于主从架构,经过配置参数优化也可以做到0丢失。目前主要用大公司用于实时计算和日记采集。

消息队列我所了解到的是三种应用场景(优势),解耦,异步,削峰。

解耦:降低系统代码之间耦合性,比如说BC系统需要用到A系统里面的数据,A系统写了程序接口将数据发送给BC系统,但是当C系统突然不需要了,改为D系统需要,那么A系统就必须重写接口,当系统越来越大,A系统的负责人有可能就会累死。。。而且A系统与其他系统高度耦合,如果其他系统突然出现故障,A系统还需要重发,保证数据的高可用性。

所以使用MQ后,A系统只需要将数据发送到MQ中,谁需要调用就直接从消息队列中拿就行。

异步 : 当对一条数据进行操作时,A系统接受请求在自己本地写入数据库内,时间大概30ms,同时BCD三个系统还需要记录该条数据写入数据库,每个系统大概300ms,那么用户在请求操作后,需要等待将近1000ms,一般做的系统都会在200ms内,会造成用户体验不是很好。使用MQ,将数据写入其中,时间将会大大减少,提高了用户体验,然后再慢慢消费,等结束后返回个ack标志。

削峰:假设我们自己写的系统处理数据的并发量为1000条/s,但是在中午11点-下午2点是网站的访问高峰期,同时操作,每秒的请求并发数量激增到2万,我们的系统基本就可以崩溃了,可以想想我们在大学里每次选课,系统都会崩掉的场景。可是高峰期一过,并发量就有会大幅度降低,这时候我们采用MQ,将请求写入到MQ中,等高峰期过去之后,A系统再从MQ中将积累的消息解决掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值