队列
队列就是一个先进先出的数据结构,可以保证队列内数据的顺序。
1、为什么要用消息队列
1. 解耦:当某个业务发生异常,客户端不会有感知, 而消息队列会保留客户端的请求信息,待业务正常后继续执行。
2. 异步:
系统先把数据放到队列中后,再待BCD系统解决,可以提速。发送到队列的时间远低于BCD顺序执行的时间。
适用场景:
用户发起请求后,不需要再依赖BCD系统的处理结果。
3.流量削峰:
大量的数据瞬间请求会导致服务器崩溃,使用消息队列的方式可以暂存请求,暂存数据,避免崩溃。
2、消息队列的产品
rabbitMQ: 开发语言小众,不适合二次开发
RocketMQ :阿里开发,使用java语言,推荐使用
kafka:
3、消息队列的优点和缺点
- 优点:
解耦, 异步,削峰 - 缺点:系统可用性低&#