面试-消息队列
1.为什么要使用消息队列
优点:
1.解耦
解耦是指让生产者和消费者之间解耦。比如,用户下单后,订单系统需要通知库存系统,假如库存系统无法访问,则订单减库存将失败,从而导致订单操作失败。订单系统与库存系统耦合,这个时候如果使用消息队列,可以返回给用户成功,先把消息持久化,等库存系统恢复后,就可以正常消费减去库存了。
2.异步
将消息写入消息队列,非必要的业务逻辑以异步的方式运行,不影响主流程业务。
3.削峰
系统流量突然增大时,控制消息数量阈值,而消费端按正常状态处理消息,保证系统正常运行。比如秒杀活动,一般会因为流量过大,从而导致流量暴增,应用挂掉。这个时候加上消息队列,服务器接收到用户的请求后,首先写入消息队列,如果消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面。
缺点:
可用性降低:引入消息队列之后,如果消息队列挂了,可能会影响到业务系统的可用性。
系统复杂性增加:加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。
具体参考:
https://blog.csdn.net/Trouvailless/article/details/126082156
保证消息的顺序执行:
https://blog.csdn.net/zengdongwen/article/details/100609348
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?