异步架构
使用消息队列实现异步架构
同步架构是说,当应用程序调用服务的时候,当前程序需要阻塞等待服务 完成,返回服务结果后才能继续向下执行。
消息队列异步架构的主要角色包括消息生产者、消息队列和消息消费者。消息生产者通常就 是主应用程序,生产者将调用请求封装成消息发送给消息队列。此外还需要开发一个专门的 消息消费者程序,用来从消息队列中获取、消费消息,由消息消费者完成业务逻辑处理。
消息队列的职责就是缓冲消息,等待消费者消费。根据消息消费方式又分为点对点模式和发 布订阅模式两种。
在点对点模式中,多个消息生产者向消息队列发送消息,多个消息消费者消费消息,每个消 息只会被一个消息消费者消费。
在发布订阅模式中,开发者可以在消息队列中设置主题,消息生产者的消息按照主题进行发 送,多个消息消费者可以订阅同一个主题,每个消费者都可以收到这个主题的消息拷贝,然 后按照自己的业务逻辑分别进行处理计算。
发布订阅模式下,一个主题可以被重复订阅,所以如果需要扩展功能,可以在对当前的生产 者和消费者都没有影响的前提下,增加新的消费者订阅同一个主题即可。
消息队列异步架构的好处
改善写操作请求的响应时间
使用消息队列,生产者应用程序只需要将消息发送到消息队列之后,就可以继续向下执行 了,无需等待耗时的消息消费处理
更容易进行伸缩
削峰填谷
利用消息队列,我们可以将需要处理的消息放入消息队列,而消费者可以控制消费 速度,因此能够降低系统访问高峰时压力,而在访问低谷的时候还可以继续消费消息队列中 未处理的消息,保持系统的资源利用率。
隔离失败
使用消息队列,生产者发送消息到消息队列后就继续自己后面的计算,消费者如果在处理消 息的过程中失败,不会传递给生产者,应用程序具有更高的可用性。
降低耦合
耦合会使软件僵硬、笨拙、难以维护,而使用消息队列的异步架构可以降低调用 者和被调用者的耦合。调用者发送消息到消息队列,不需要依赖被调用者的代码和处理结 果,增加新的功能,也只需要增加新的消费者就可以了。