为什么要使用消息队列?
使用消息队列有很多优势,主要体现在 异步处理,解耦,削峰填谷(平滑流量)等方面。这些优势有助于提升系统性能,可扩展性和灵活性。
解耦
在传统模式中,业务之间的耦合太过于严重,比如说,现在系统A直接调用系统B的代码,而现在有一个新系统C要接入,那么我们就需要修改系统A的业务代码。
所以说,通过消息队列将各个组件,各个服务之间的直接依赖关系解开,让它们之间通过消息队列来进行通信,来降低系统的耦合度。
优点:
松耦合:组件之间,服务之间的相互调用,通过消息队列作为中介,降低服务之间的相互依赖。
容错性:解耦可以使得系统的容错提高,比如说某个服务宕机了,那么消息队列可以把消息储存起来,直到消费者恢复,然后去异步的处理这些消息,而不丢失数据。
异步处理
生产者在将消息放入消息队列后,不需要去等待任务完成后或者消费者的反馈。生产者可以继续执行其他操作,而消费者则在空闲时异步的去处理消息。
优点:提高响应速度,减少阻塞。
削峰填谷
平滑突发的流量,使系统能够平滑的处理流量的波动,避免系统负载。消息队列能够将短时间内的高峰流量暂时储存起来,根据自身系统的消费能力平稳消费。
优点:缓解系统压力,控制系统负载。