目录
fanout分发订阅模式
交换机发送消息给绑定的队列
direct路由模式
Topic主体模式
Topic的路由是模糊匹配的
Work工作队列模式
主要有两种模式
轮询分发模式:一个消费者消费一条,按均分配
公平分发模式:根据消费者的消费能力进行公平分发,处理快的处理的多;能者多劳,按劳分配
1.轮询模式
2.公平模式
代码方式声明绑定交换机、队列
MQ的使用场景
1.解耦、削峰、异步
单体架构业务都堆积在一个项目中,采用分布式架构,将系统进行拆分,拆分就是解耦。拆分过程中模块间沟通和协同采用消息队列,用来RabbitMQ,核心是多线程异步的,可以让网站性能成倍提成,因为异步能让处理数据能力更高效。
削峰:
串行的话耗时是所有业务执行时间之和,异步各个业务独立不会阻塞。
异步 --- 不会阻塞
异步-线程池
存在问题
耦合度高
需要自己写线程池自己维护成本太高
出现了消息可能会丢失,需要你自己做消息补偿
如何保证消息的可靠性你自己写
如果服务器承载不了,你需要自己去写高可用
异步-消息队列
好处:
完全解耦,用 MQ建立桥接
有独立的线程池和运行模型
出现了消息可能会丢失,MQ有持久化功能
如何保证消息的可靠性,死信队列和消息转移等
如果服务器承载不了,你需要自己去写高可用,HA镜像模型高可用
按照以上约定,用户的响应时间相当于是订单信息写入数据库的时间,也就是50毫秒。注册邮件,发送短信写入消息队列后,直接返回,因此写入消息队列的速度很快,基本可以忽略,因此用户的响应时间可能是50毫秒。因此架构改变后,系统的吞吐量提高到每秒20QPS。比串行提高了3倍,比并行提高了两倍
2.高内聚低耦合
3.流量削峰
其他