赞
踩
消息队列是应用程序之间的通信方法;无需即时返回的且耗时的操作进行异步处理从而提高系统的吞吐量;可以实现程序之间的解耦合。
1、任务异步处理
将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。链式程序,提高了应用程序的响应时间;
场景说明: 用户注册后,发送邮件和短信 ,传统做法有两种:
串行发送: 将注册信息写入数据库成功后,发送注册邮件,再发送注册短信,以上三个任务完成后,返回给客户端;
并行发送:将注册信息写入数据库成功后,发送邮件的同时,再发送注册短信;以上三个任务完成后,返回给客户端;与串行的差别是,并行的方式可以提高处理的时间;
加入消息中间件后,客户端的相应时间相当于信息写入数据库的时间,注册邮件,发送短信到消息队列后,直接返回,且写入消息队列的速度很快,基本可以忽略,因此架构改变后,系统的吞吐量QPS大大提高
课程教育项目中:实现完后页面静态化,需要将生成的静态文件保存到服务器上,这时可以加个消息中间件, 静态化完成后将下载文件的消息传入消息队列中,直接返回,且写入消息队列的速度很快,基本可以忽略,因此架构改变后,系统的吞吐量QPS大大提高;
2.削峰填谷,
并发量高的时候可采取这个操作,增强cpu空闲操作.数据库处理的时间是ms级,而消息中间件是微米级的;
应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉,为了解决这个问题,一般在应用前端加入消息队列;
1.可以控制活动的人数;
用户请求,服务器接收后,首先写入消息队列,加入消息队列的长度超过最大数量,则直接抛弃用户请求或跳转到错误页面;
2.可以缓解短时间内高流量压垮应用
秒杀业务根据消息队列中的请求信息,再做后续处理;
3、应用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。