RabbitMQ
入门
什么是MQ
消息+队列,FIFO先入先出原则。跨进程的通信机制(逻辑解耦+物理解耦)
MQ优势
流量消峰:访问人数过多时,系统无法承载,使用消息队列来充当中间件来缓和访问。(对访问的人员进行排队进行消峰)防止宕机(稍微耗费时间)
应用解耦:各个服务之间交互时,如果有一个服务出现异常,那么整个系统都会出现故障。使用消息队列可以缓存出现故障时的用户数据。
异步处理:当服务调用是异步的,使用mq,a可以在消息队列中发消息传给b,可以得到具体执行时间。
MQ分类
ActiveMQ:单机吞吐量高,时效性毫秒级,主从架构高可用性 | 维护越来越少,高吞吐量场景越来越少。
Kafka:为大数据而生的消息中间件,高吞吐量,日志采集,分布式 | 社区更新较慢
RocketMQ:单机吞吐量高,阿里开源产品 | 支持的客户端语言不多
RabbitMQ:最主流的消息中间件,erlang语言的高并发特性,支持多种语言 | 学习成本较高
RabbitMQ
接收,存储,转发
生产者
交换机 队列(绑定关系)
消费者
核心部分
- 简单模式
- 工作模式
- 发布订阅
- 路由模式
- 主题模式
- 发布确认模式
高级部分
- 死信队列
- 延迟队列
- 发布确认高级(发布确认,回退消息,备份交换机)
- 幂等性
- 优先级队列
- 惰性队列
集群部分
- 正确搭建mq集群
- 为防止数据不丢失提供镜像队列
- Haproxy+keepalive实现高可用负载均衡
- 联邦交换机+联邦队列实现同步数据组建
- 同步数据插件Shovl