一、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的核心概念

生产者、交换机、队列、消费者