赞
踩
推荐网课:https://www.bilibili.com/video/BV1up4y1i7TN?from=search&seid=10453874956460120695
本文内容来自于个人学习笔记,网络收集整理。
RabbitMQ官方地址:http://www.rabbitmq.com/
优点:系统解耦,异步提速,削峰填谷
1.系统解耦:MQ相当于一个中介,让生产者和消费者通过它来进行交互。简单来说就是将两个本来互相影响的系统分离开,降低双方依赖程度,提高系统容错度;
2.异步提速:生产者将业务上不需要同步处理并且耗时长的操作交给消息队列,消息队列通知消费者异步处理。提高系统的响应时间,增加吞吐量;
3.削峰填谷:订单系统或者考试网站的注册系统,总会在短时间内迎来峰值,数据库支持的并发上限不高,这时候就需要消息队列来做限流,先将生产者的请求保存到队列中,再由消费者慢慢消化,这就是削峰,而过了高峰期后,消费者会保持相同的消耗速度来快速消耗掉挤压的消息,这就是填谷。提高系统稳定性。
缺点:系统可用性,系统复杂度,数据一致性
1.系统可用性:系统的可用性委托给了mq,要保证mq的高可用性,mq挂了系统就挂了
2.系统复杂度:同步转为了异步,那就要保证消息不被重复消费,消息不丢失,消息的有序
3.数据一致性:可能存在多个消费者消费同一条消息,可能一条消息被C1,C2消费成功了,但是C3消费失败,这个时候数据的一致性就无法得到保障,以及可能出现的消息幂等性的问题,消息丢失的问题等。
定时任务(定时订单),顺序消费(消息有一定的前后顺序),请求削峰, 异步通讯。
可以看到大部分应用场景,就是充分发挥MQ的几条优点。
什么情况下可以使用mq呢,首先是生产者不需要消费者的及时反馈,允许短暂的数据不一致性,使用了mq后确实有提升效果并且这些效果的价值超过加入MQ,管理MQ,维护MQ的成本。
RabbitMQ是基于AMQP协议的消息队列。
用erlangyu语言开发,二次开发成本高,RocketMQ用Java开发,容易实现定制,所以扩展性不如RocketMQ。
社区生态丰富,比RockMQ丰富很多。
吞吐量在万级左右,不如RocketMQ和Kafka的十万级。
消息延迟微秒级,其余都是毫秒级
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。