1、简介
消息中间件也称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。
消息传递:指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信
2、当下主流的消息中间件
RabbitMQ、Kafka、ActiveMQ、RocketMQ
3、作用
冗余(存储)、扩展性、可恢复性、顺序保证、缓冲、异步通信、多语言客户端、管理界面、插件机制
4、消息中间件的两种模式
1、P2P模式
1.三角色:
消息队列Queue、发送者Sender、接收者Receiver
2.P2P特点
- 每个消息只有一个消费者(Consumer),即一旦被消费,消息就不再在消息队列中
- 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行它不会影响到消息被发送到队列
- 接收者在成功接收消息之后需向队列应答成功
- 如果希望发送的每个消息都会被成功处理的话,那么需要P2P模式
2、Pub/Sub模式
- 三角色:
主题Topic、发布者Publisher、订阅者Subscriber
- 特点
- 每个消息可以有多个消费者
- 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息
- 为了消费消息,订阅者必须保持运行的状态
- 如果希望发送的消息可以不被做任何处理、或者只被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型
5、RabbitMQ的三种模式
单一模式、普通模式、镜像模式(将消息队列做成镜像队列,存放于多个节点,属于HA方案。基于普通集群模式上配置镜像模式,实现高可用)
6、RabbitMQ的集群节点
1、内存节点:所有数据存储在内存
2、磁盘节点保存状态到内存和磁盘
7、RabbitMQ简介
基于Erlong语言开发,基于AMQP协议实现。本身不支持反正;支持高并发、可扩展。支持AJAX、持久化,用于在分布式系统中存储转发消息
8、了解RabbitMQ
在RabbitMQ集群中,必须至少有一个磁盘节点,否则队列元数据无法写入集群中,当磁盘节点宕掉时,集群无法写入新的队列元数据信息。
9、集群重启顺序
启动顺序:磁盘节点--->内存结点
关闭顺序:内存节点--->磁盘节点
注意:最后关闭的一定时磁盘节点,否则会造成启动失败、数据丢失等异常情况。
网友评论