RabbitMQ的面试题

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

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

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

1)场景:
双11购物节,用户下订单之后,订单系统需要通知库存系统,传统的做法是订单系统调用库存系统的接口
2)缺点:
当库存系统出现故障时,订单就会失败
3)图片描述耦合,同步:
在这里插入图片描述
4)图解解耦,异步:
在这里插入图片描述

三:为什么选型RabbitMQ

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

四:RabbitMQ的核心原理

1)RabbitMQ的交换机绑定方式(会在下一篇文章中重点介绍这几种交换机的应用):
①:Topic Exchange
②:Direct Exchange
③:Fanout Exchange
④:Header Exchange(基本上不用了)

2)通过分析Topic Exchange 来说明RabbitMQ的运行原理
①:Topic Exchange定义:路由键匹配,生产者发送消息到Topic交换机时,它会根据路由键通配符匹配去寻找绑定到此交换器上匹配成功的队列,然后投递消息。
②:图解:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章