什么是队列?
答:队列具有先进先出的特性;之前在集合框架中有学到。
- redis 基本使用就是做缓存。但是,redis 又被称为 分布式缓存
消息队列
1.首先什么是高并发系统消息队列
答:MessageQueue 简称 MQ
消息 ==== 》 数据
队列 ==== 》 通道
2.为什么使用?使用的场景?
- 分布式场景
1.1 异步场景
1.2 应用解耦
1.3 流量削峰 - 日志场景
2.1 优化日志 - 即时通讯
3.1 聊天室
2.1 异步场景
2.1.1 同步情况下
如果每个都处理1s 那响应到客户端则会达到 3s
结论:耗时
2.1.2 异步情况
结论 :虽然能减少客户端的响应的时间,但是 降低了 订单服务的并发量。
2.1.3 使用消息队列的方法
这样总共就花1s
2.2 解耦
之前是这样
不需要 订单系统与库存系统之间过分的依赖。一旦 库存系统迭机,整个订单服务都将瘫痪。
采用下面这个就实现了解耦
2.3 流量削峰
2.3.1 流量削峰 用的最多的地方就是在秒杀系统中。
常规服务如下图
缺点 同上也是容易造成迭机
在消息队列中进行控制。超过1k 就返回,秒杀失败。
4.1 消息队列都有哪些?
1、 redis
2. active MQ
3. RocketMQ
4. Kafka
5. zeroMQ
6. 阿里 mns
7. Rabbit Mq