RabbitMQ的面试题

一:什么是削峰限流(控制流量)

1)场景:
秒杀活动一般会因为流量过大,导致应用挂掉,为了解决这个问题,一般会在应用后端加入消息队列。
2)作用:
①:可以控制活动人数,超过一定阈值的订单直接丢弃(这就是为什么没有秒杀成功哦)(业务系统设置阈值,超过阈值限流)
②:可以缓解短时间的高流量压垮应用(应用程序按照自己的最大能力获取订单)
3)图片描述:
RabbitMQ的面试题

二:什么是应用解耦(系统与系统之间通过第三方实现通信,无直接引用关系,从而引出消息队列)

1)场景:
双11购物节,用户下订单之后,订单系统需要通知库存系统,传统的做法是订单系统调用库存系统的接口
2)缺点:
当库存系统出现故障时,订单就会失败
3)图片描述:
RabbitMQ的面试题

三:什么是异步(通过消息队列实现异步)

1)图解异步:
RabbitMQ的面试题

四:为什么选型RabbitMQ

1)ZeroMQ:扩展性能好,开发比较灵活,采用C语言实现,不能持久化,用的较少
2)ActiveMQ:历史悠久的开源项目,在很多项目中使用,但是对队列数比较多的情况支持不好,容易出现丢失消息,超过4000的并发,且无法发现问题所在(使用简单,就是放消息和取消息)
3)redis:基于内存的K-V数据库,提供了消息订阅服务,可以当做MQ使用,目前应用案例较少,且不方便扩展
4)RocketMQ:阿里巴巴的消息中间件,在其多个产品下使用,可查询的资料相当少,不全面,10万次/每秒
5)RabbitMQ:结合erlang语言本身的并发优势,性能较好,管理端页面功能丰富,消息延迟微秒级,支持多种语言且支持AMQP客户端