美文网首页消息中间件
消息队列的使用场景

消息队列的使用场景

作者: 随风_d6a2 | 来源:发表于2020-09-24 09:36 被阅读0次

    消息队列,本质上是一种分布式的阻塞队列。消息队列,也可以理解成一种缓存,对任务的缓存,所以,redis也可以作为一种消息队列嘛。当然,一般消息队列的产品还是有很多复杂的功能的;

    下面就简单的谈谈消息队列的应用场景:

    第一个就是异步,如果你想在本地实现一个异步的操作,你可能会构建一个线程池,但是,如果你打算在分布式环境实现这个任务,那么消息队列是首选。

    把业务拆分成异步的步骤,一般是用户不需要及时反馈得到结果的;生产者发送完消息进入消息中间件后,就立即返回用户请求了,这种场景一般是向用户发送信息等等;用户需要及时得到结果的,一般是同步的;

    把业务拆分成异步处理,是可以提升系统的性能的;

    第二个就是流量削峰,后端系统按照自身吞吐能力进行消费,不被大流量冲垮,系统不至于崩溃;

    如果你把业务设计成异步的,那么可以保证上游和下游都不会受到大流量的冲击而奔溃。这时候谈一下为什么大流量会导致系统宕机,一是内存,每一个请求都会消耗内存空间,特别大的流量就会

    导致内存爆满;而是大量请求等待处理,会导致客户端请求超时。所以,消息中间件也是系统高可用性的保障。

    这里说一下,以前工作的公司把同步的业务也用上了消息中间件,他是这样用的,客户端发送一个消息,然后开始阻塞,消费端消费这个消息,消费端处理完业务后,再向中间件发送消息,客户端接收到消息后,返回用户的请求;

    这样的设计,消息中间件只能保护下游没事,但不能保证上游的高可用性,因为上游的请求依然hold在那里,而且架构上中间加一个MQ,反而导致请求处理变慢。

    第三个就是系统解耦,

    传统的方法调用,当系统发生变化时,其他的系统也要发生相应的变化;

    消息中间件能够做到系统解耦,当新模块进来时,可以做到代码改动最小;发送者和生产者不必同时在线​如果消费者的机器出现故障不可用,消息可以暂时保存到中间件,等待消费者正常启动后继续处理业务,这样,相比较接口调用,是可以增加系统可用性的。

    这样,MQ提升了系统的高可用性和扩展性。

    第四个是消息中间顾名思义的作用,可以发送消息,可以实现两个系统之间的消息传送,例如分布式日志,业务系统和大数据平台之间的数据沟通等等;

    相关文章

      网友评论

        本文标题:消息队列的使用场景

        本文链接:https://www.haomeiwen.com/subject/nzjmyktx.html