节假日出行背后,藏着消息队列的用法
分类:云服务资讯
编辑:虚机世界
浏览量:102
2021-05-10 17:24:31 劳动节小长假快到了,你打开12306手机App,准备买车票出去玩:
首先,输入车票信息,起点站,终点站,出发时间,票数以及座席,发送订票请求。然后,单击“预订”按钮,12306 App界面开始转圈圈。与此同时全国大概3亿人民也在和你一起做相同的事情。3s后,应用告诉你订票失败。你修改车次,重新发送订票请求。应用重复第二步继续等待。又一个3s后,12306 App告诉你订票成功。
12306 App在处理以上逻辑时,会遇到以下挑战:比如今天这个车次只售出4000张票,而实际有30万人发送了订票信息,如果逐一请求处理,那么90%以上的人都将要耗时3s来等待,怎么办?答案是:消息队列!
业务系统在超高并发场景中,由于后端服务来不及同步处理过多、过快的请求,可能导致请求堵塞,严重时可能由于高负荷拖垮Web服务器。
实际的流量会随着时间不短变化,像12306 App这样的App流量大得难以想象,而一年中不同的时间段,其流量也不同。为了能支持最高峰流量,我们通常采取短平快的方式——直接扩容服务器,增加服务端的吞吐量。
优点是显而易见的,短时间内吞吐量增加了好几倍,甚至数十倍。缺点也明显,流量低峰期服务器相对较闲。
如何平衡平时的空闲与节假日的超高峰呢?我们想到了消息队列(比如Apache RocketMQ,Apache Kafka),也是目前业界比较常用的手段。利用消息队列扭转处理订票请求,告知用户30min内会告诉他/她订票结果。
新网消息队列RabbitMQ是一款支持持久化消息队列的消息中间件。通过创建集群的方式来实现RabbitMQ以及所依赖的服务的部署,完全兼容RabbitMQ开源生态以及多语言客户端,为用户提供快速创建、方便管理的消息中间件。
电商业务场景中经常会有秒杀或者团抢的活动,此时会产生大量的请求涌入系统,如果直接打到服务器上可能超出服务的最大承载能力,导致系统瘫痪。引入RabbitMQ,先将请求写在RabbitMQ中,后台服务器从RabbitMQ中读取请求处理,把巨大的压力从后端服务器转移到RabbitMQ上来保障业务正常运行。
目前消息队列已经成为 云原生时代企业上云的核心基础设施!快快点击进行了解吧:http://www.xin net .com/cs/rabbitmq.html
声明:免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发
送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。本站原创内容未经允许不得转载,或转载时
需注明出处:新网idc知识百科