消息队列
一、 概念
消息+队列(MessageQueue,简称MQ)
本质是就是个队列,FIFO先入先出,只不过队列中存放的内容是message,从而叫消息队列。
主要用途:不同服务server、进程process、线程thread之间通信
二、 使用场景:
消息队列不止能用到高并发上;
三、模型
- 发布订阅模型
- 生产者-消费模型
- 请求响应模型
四、 如何保证消息可靠性?
保证消息可靠性的方法类型:
- 确认ACK, 如果没有ack就超时重传
- 定义序列号,消息序号是连续的,中间发现消息不连续就知道丢了消息。(生产者消费模型不适用)
- 备份(通过集群来实现备份)
- 持久化(RocketMQ支持持久化)
五、消息吞吐量?
- REQ - ACK模式,不能做到高吞吐量,优点:低时延,确保消息可达
- 可以通过多次send,一次ack模式,提高吞吐量
- 响应速度:批量消息传输(有点类似TCP的粘包),批量:提高吞吐量,但是会影响消息的响应速度
使用消息队列的场景
- 异步处理
消息队列这里可以使用发布订阅模式,使后续三个系统