消息中间件——MQ
Posted 娱乐圈996
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息中间件——MQ相关的知识,希望对你有一定的参考价值。
1、为什么使用消息队列?
解耦
举个栗子:最初设计的需求是系统A推送同一条消息到系统B、系统C 。但是现在改动需求,系统C不再接收系统A推送的消息,新增加的系统D接收。最终的操作需要修改系统A中代码,去除系统C,添加系统D。如果后期需求还会改动,则会一致修改系统A中的代码逻辑。
使用MQ:系统A只需要将消息发送到MQ中,其他系统如果需要只需要从MQ订阅消息即可,不影响后期增减系统。
异步
举个栗子:用户注册时,会将用户信息写入数据库,写入成功后发送短信和邮件
使用MQ:当用户信息写入成功后,将信息放入MQ中,就可以返回注册成功。后面的流程发送短信、邮件可以同时进行。
削峰
举个栗子:当系统在某一段时间,访问量达到高峰5k时,如果这些访问同时操作数据库,可能会使数据库崩溃,系统不能使用。
使用MQ:可以将高峰时的访问量,放入MQ中,系统A每次操作时可以从MQ中一次拉取2K进行处理。将高峰时的大量请求,分批次处理,保证系统的正常运行,增加系统的抗压能力。
2、消息队列的缺点
系统可用性降低
当 MQ 挂掉时,整套系统都会崩溃。
系统复杂度提高
当系统中增加了一个MQ时,需要考虑怎么保证消息没有重复被消费?怎么保证消息没有丢失?怎么保证消息传递的顺序性?
系统一致性问题
当A系统处理完返回成功后,但是B、C系统中,有一个处理失败,就不能证数据的一致性。
3、常用消息队列比较
中小型公司,技术实力较为一般,技术挑战不是特别高,用 RabbitMQ 是不错的选择;
大型公司,基础架构研发实力较强,用 RocketMQ 是很好的选择。
大数据领域的实时计算、日志采集等场景,用 Kafka 是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄。
以上是关于消息中间件——MQ的主要内容,如果未能解决你的问题,请参考以下文章