一、MQ入门
1.1 消息中间件的协议
1. AMQP协议
分布式事务;
消息的持久化;
高性能、高可靠的处理优势;
2. MQTT协议
物联网的重要组成部分。
低延迟、低带宽、不支持事务
3. OpenMessage协议
RocketMQ采用的协议。国内的阿里、雅虎等公司一起创作。
支持事务,持久化
4. Kafka协议
基于TCP/IP协议,采用二进制进行传输。
结构简单,不支持事务,支持持久化
1.2 消息分发机制
ActiveMQ | RabbitMQ | Kafka | RocketMQ | |
---|---|---|---|---|
发布订阅 | √ | √ | √ | √ |
轮询分发 | √ | √ | √ | |
公平分发 | √ | √ | ||
重发 | √ | √ | √ | |
消息拉取 | √ | √ | √ |
轮询分发、公平分发它们都是保证消息只能够读取一次。
轮询分发:每个消费者消费的消息总数量是一致的;
公平分发:能者多劳,消费者性能好,处理的请求就会比较多;必须手动应答,不支持自动应答
1.3 消息的高可用
集群模式1:Master-Slave:主从共享数据
生产者将消息发送到主节点,所有的都节点连接这个消息队列共享这块的数据区域。主节点写入,一旦主节点挂掉,从节点继续服务。
集群模式2:Master-Slave:主从同步数据
与Redis的主从同步差不多
集群模式3:多主集群同步部署模式
与2差不多,写入是可以任意节点进行写入。
集群模式4:多主集群转发部署模式
元数据共享,当查找数据的时候,就会判断消息的元数据是否存在,存在则返回,否则就去问其他的消费者。
集群模式5:Master-Slave与Broker-Cluster组合方案
集群模式的总结
- 消息共享
- 消息同步
- 元数据共享
1.4 消息的高可靠
- 消息的传输:协议保证
- 消息的存储:持久化
1.5 MQ的使用场景
流量消峰、应用解耦、异步处理
在说这个部分的时候,跟自己的业务结合一起去阐述三个场景。
二、RabbitMQ
2.1 RabbitMQ安装
首先可以进入RabbitMQ官网上查看 RabbitMQ Erlang版本要求
Linux安装视频:https://www.bilibili.com/video/BV1dX4y1V73G?p=9
Windows安装文章:https://www.cnblogs.com/saryli/p/9729591.html
Docker安装视频:https://www.bilibili.com/video/BV1dX4y1V73G?p=10
端口15672:通过 http://serverip:15672 访问 RabbitMQ 的 Web 管理界面,默认用户名密码都是 guest
端口5672,5671( used by AMQP 0-9-1 and 1.0 clients without and with TLS )由AMQP0-9-1和1.0客户机使用,不带和带TLS
端口25672:用于节点间和CLI工具通信(Erlang分发服务器端口),并且是从动态范围分配(默认情况下限制为一个端口,计算为AMQP端口+20000)
2.2 RabbitMQ的核心概念
生产者、交换机、队列、消费者