消息中间件简介

介绍

作用

  消息中间件主要用于异步,削峰,解耦这几大典型场景。

异步

  对于没有强制顺序的任务,可以并行接受消息队列,并行对不同的业务逻辑进行异步处理,比如优惠卷,积分业务。

削峰

  对于高并发业务,可以将请求放入消息队列中,消费方按照比较稳定的消费速度,对请求进行处理,从而起到削峰作用。

解耦

  将不同的业务模块,分离出来,每个单独部署,单独维护,互相之间采用消息队列进行通信,从而起到解耦作用。

问题

系统复杂性

  使用消息队列,会增加系统维护成本,不仅要维护原来的系统,还要对消息队列进行维护。
  与此同时,还需要考虑对消息的正常处理,异常处理(重复消费,消息丢失,消息的顺序消费)。

数据一致性

  这是分布式系统中的一个问题,在使用了消息中间件的系统中,消息发送方无法保证消费方是否正确的消费了消息,如果是异常的消费消息,就有可能造成,发送方与接收方的数据不一致。
  这里就需要分布式事务来保证数据的一致性,将消费方,发送方的业务逻辑放在一个事务里面提交,一起成功,一起失败,保证数据的一致性。

可用性

  MQ自己的可靠性,同样需要开发者进行维护。