黑马点评-消息队列相关

Q:好的我现在明白不是返回数据格式的问题,但我还是很模糊,你给我再讲一下后端返回给前端数据的一般过程,和用消息队列后的返回过程

A:tomcat线程先释放 (本来controller调service service调mapper查询数据库,一整套流程走完返回VO实体类给前端,有了消息队列后,controller接收到请求,查redis,判断下单成功直接给前端返回数据,然后释放tmocat线程,后台启动一个静默线程执行订单insert数据库等操作,,,并在 一段时间后再次给前端返回数据)

我给你画最清晰、最朴素、最真实的前后端交互流程

你马上彻底不模糊!我只讲最本质的区别

先记住一句超级本质的话

后端给前端返回结果 = 一句话:我做完了没?做完了就给你结果。

消息队列 = 我没做完,但我先告诉你 “我收到了,会慢慢做”。

一、先讲:后端返回给前端数据的正常、一般过程(90% 的业务)

你平时写接口都是这样:

流程:

  1. 前端发请求 → 到后端 Tomcat
  2. Tomcat 线程开始处理
  3. 执行代码:查数据库修改数据库保存数据
  4. 所有事情全部做完
  5. 返回 JSON 给前端
  6. Tomcat 线程释放

样子:

plaintext

请求来了 → 干活 → 干完 → 返回 → 结束

特点:

  • 必须等所有逻辑执行完
  • 前端必须一直等着
  • 数据库慢 → 整个接口就慢
  • 高并发 → 线程耗尽 → 系统卡死

二、再讲:使用消息队列后的返回过程(秒杀优化)

流程:

  1. 前端发请求 → 到后端 Tomcat
  2. Tomcat 线程开始处理
  3. 只做超快的事(Redis 判断)
  4. 把 “要做的慢任务” 扔进消息队列
  5. 立刻返回 JSON 给前端:抢购成功!
  6. Tomcat 线程直接释放!!!

后台(另一个独立线程)慢慢执行:

  • 从队列拿任务
  • 查数据库
  • 扣库存
  • 创建订单

样子:

plaintext

请求来了 → 快速判断 → 扔队列 → 返回 → 线程结束
(后台线程:慢慢数据库操作)

特点:

  • 不等数据库!
  • 接口速度极快
  • Tomcat 线程瞬间释放,可以处理更多请求
  • 数据库压力极小
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
这太难受了 先说一下工作内容吧,我个人理解这个项目就是给一个给一个军工这方面的学校做的学生管理系统,也就是数据可视化,听名字应该也知道公司业务还是以前端业务为主,像是`e-chart` 这一类,其实这些我也能接受,毕竟现在ai这么厉害,有ai的辅助,前端不是什么问题,但是这个项目合作的甲方又是涉及保密协议的东西,只能在内网上做开发,什么ai都只能在手机上查,效率就太低了,项目主要是在栾大师上进行开发,有个中台,都是一些事件绑定,一点后端的没有,全是js的内容,我还想着这个周末我自己加急补一下js这一块的内容,飞书也加了,合同也签了,办公地点我也能接受,但确实那些js我是真的看不懂,项目负责人觉得不合适,当时是总经理面试,后面俩天后技术面没有到就给我发了入职邀请,当时也没有想到项目是一点后端都没有,而且也不教我怎么写这些东西,就是git都用不了,后端改了一点数据还要跑到另一个机房去查,上班环境也很草率了,没招,回家的时候还下雨,骑着电动车雨越下越大,洗个澡搁着刷题呢就被刷了,是我早退的原因吗,是我另一个实习生姐姐告诉我可以走了我就走了啊,我也确实8:40到公司报到了啊,只是后面加公司什么的,填合同什么的,跟梦一样这一天,过得真快,上午还在幻想手握小厂实习去冲击中厂,秋招美美月薪过万,晚上快9点跟我说被劝退了,美梦,笑死我了,有啥招,能不能来点正反馈,只能说不合适咯,可惜
在写日记的哈里很有担...:楼主大几啊,我也被辞退了,但是我是干完了项目,老板再开了我,真的很黑心
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务