消息中间件——MQ

Posted 娱乐圈996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息中间件——MQ相关的知识,希望对你有一定的参考价值。

1、为什么使用消息队列?

  • 解耦

        举个栗子:最初设计的需求是系统A推送同一条消息到系统B、系统C 。但是现在改动需求,系统C不再接收系统A推送的消息,新增加的系统D接收。最终的操作需要修改系统A中代码,去除系统C,添加系统D。如果后期需求还会改动,则会一致修改系统A中的代码逻辑。


    使用MQ:系统A只需要将消息发送到MQ中,其他系统如果需要只需要从MQ订阅消息即可,不影响后期增减系统。

消息中间件——MQ(一)


  • 异步

        举个栗子:用户注册时,会将用户信息写入数据库,写入成功后发送短信和邮件

消息中间件——MQ(一)

        使用MQ:当用户信息写入成功后,将信息放入MQ中,就可以返回注册成功。后面的流程发送短信、邮件可以同时进行。

消息中间件——MQ(一)

  • 削峰

        举个栗子:当系统在某一段时间,访问量达到高峰5k时,如果这些访问同时操作数据库,可能会使数据库崩溃,系统不能使用。

消息中间件——MQ(一)

        使用MQ:可以将高峰时的访问量,放入MQ中,系统A每次操作时可以从MQ中一次拉取2K进行处理。将高峰时的大量请求,分批次处理,保证系统的正常运行,增加系统的抗压能力。

消息中间件——MQ(一)


2、消息队列的缺点

  • 系统可用性降低

        当 MQ 挂掉时,整套系统都会崩溃。

  • 系统复杂度提高

        当系统中增加了一个MQ时,需要考虑怎么保证消息没有重复被消费?怎么保证消息没有丢失?怎么保证消息传递的顺序性

  • 系统一致性问题

        当A系统处理完返回成功后,但是B、C系统中,有一个处理失败,就不能证数据的一致性。

        

3、常用消息队列比较


    中小型公司,技术实力较为一般,技术挑战不是特别高,用 RabbitMQ 是不错的选择;

    大型公司,基础架构研发实力较强,用 RocketMQ 是很好的选择。

    大数据领域的实时计算、日志采集等场景,用 Kafka 是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄。


以上是关于消息中间件——MQ的主要内容,如果未能解决你的问题,请参考以下文章

阿里云消息中间件(MQ)探秘

消息中间件MQ详解及四大MQ比较

消息中间件MQ详解及四大MQ比较

消息中间件MQ详解及四大MQ比较

消息中间件之MQ详解及四大MQ比较

消息中间件之MQ详解及四大MQ比较