为什么要引入中间件:
1.系统解耦:多个系统去请求一个系统A获取同样数据的时候,系统A将数据发送给中间件,由中间件进行转发.
2.异步调用:将用时较多的系统调用,交给中间件来办.
3.流量削峰:所有机器前面部署一层MQ,平时请求少的时候轻松接受消息,一旦到了瞬时高峰期,将消息积压在MQ里面,慢慢消费.
引入中间件的问题:
1.系统可用性降低:MQ中间件可能挂掉.
2.系统稳定性降低:消息丢失,消息重复
3.分布式一致性问题:系统A处理自己的本地数据库成功了,发送消息给MQ,系统B收到消息,但是自己操作自己的本地数据库失败了,这个时候回导致系统整体数据不一致.
为了防止MQ宕机引起消息的丢失,可以对消息进行持久化: