消息队列(MQ)
一、作用
1、解耦(订单支付成功,减库存,加积分...)
2、异步处理,提高吞吐量
3、流量削峰
4、延迟处理(限时订单)
5、持久化
......
二、Rabbit
1、工作模式
①、简单模式 :一个生产者对应一个消费者
②、工作模式:一个生产者对应多个消费者
③、订阅模式:通过broker服务器发送信息到交换机,交换机在进行分发
④、路由模式:例如信息的分发,公司有多个职位,领导跟员工的权限肯定不一样,这时就可以使用路由模式
⑤、主题模式:相对路由的精准匹配,主题模式有点像模糊查询
⑥、RPC模式:客户端请求服务端,服务端处理完数据再返回给客户端
2、使用rabbit产生的问题
1、如何保证消息的可靠性?
①、生产者丢失消息
1.Transaction模式
2.confirm机制
②、消费者丢失信息
ACK确认机制
③、如何避免重复消费?
幂等性
2、消息堆积问题的解决方案?
①、队列上绑定多个消费者,提高消费速度
②、使用惰性队列,可以在mq中保存更多消息
三、Rocket
四、Kafka
五、总结