我是一个秒杀请求,正在逃离这颗星球...

中文名:A-731电商星球

外文名:A-731 Mall

分类:行星

公转周期:一年

常驻用户:中间件工作者、各种请求。

星球总历史:二十万年。

星球危机

我是一个秒杀请求,每天的工作就是将秒杀请求的数据运送给后端工作者。

这天我在 Nginx 转发服务器上遇见了请求小空 ,我跟小空说有重要消息不方便在现在告诉他,下班再约,然后就都匆匆赶路了,因为我俩都要快速将请求数据运送到订单星球去。

我和小空晚上十点下班后来到一家酒吧,点了两杯 mojito,找了一个角落坐下。

小空:你最近看起来心事重重。

我:你有没有发现最近我们星球的订单数急剧增加,每天有一千万订单数据产生,也不是一天、两天的事了。

小空:难怪我每天加班到晚上十点来运送请求数据。

我:我有个舅舅在航天局上班,告诉我说我们星球承载不了那么多请求和订单数据,不久就会出现行星大爆炸

小空:那怎么办?

我:我们可以去 100 光年外的 T-714 星球,但是只能通过秒杀通道坐时空穿梭机去那颗星球。而且名额有限制,不知道我有没有机会登上穿梭机。

我:明天通道会开启两次,上午十点和下午两点。你明天和我一起去吧!

小空:好的。

星球大爆炸

涉及的知识点:

这里的行星大爆炸指的是什么?

因订单数据量很大,数据库撑不住了。数据库可能宕机。

因每天有大量请求发送到服务器,服务器也扛不住了。服务器可能宕机。

秒杀通道每天开启两次代表了什么?

流量错峰 ,将流量分摊到两个秒杀场次。

当然流量错峰 的手段还有输入验证、加入购物车等分摊流量的操作。

秒杀通道

地点:A-731 星球机场

时间:09 : 45

通道

“请前往 T-714 星球的请求旅客到 Y1 站台排队等待进入特殊通道, 15 分钟后开始进入穿梭机大厅”。大厅的广播连续播放了三遍。

我走向了特殊通道,看到通道旁立着一个牌子:秒杀通道,只给秒杀请求使用。

涉及知识点:

秒杀场景为什么单独弄了条通道?

秒杀业务为了不影响系统的其他业务单独部署了一套秒杀系统。

总结为服务单一职责 + 独立部署

实时大屏

一抬头看到通道上方有一个大屏,在不断播放 T-714 星球的照片,以及机票的订单信息。

mark

有两个穿制服的工作者正在大屏旁巡逻。一个制服上印着 Nginx,一个制服上印着 CDN。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6P1fVR1b-1603325598167)()]

涉及知识点:

Nginx 制服:

穿 Nginx 制服的工作者在维护 Nginx 的静态和动态资源。

商品详情页是一个静态页面,将这些静态页面存储到 Nginx 服务器上,访问静态资源时,请求先到 Nginx,然后 Nginx 服务器通过请求的 URL 链接来匹配是否是访问的静态资源。

大屏的商品详情页并不是通过发送请求从后台服务器拿到的。其实实现了动静分离

一张图解释 Nginx 动静分离

Nginx 流程图

静态资源比如 HTML 文件极少变化,就可以专门放到一台服务器上,直接访问,不需要与后台服务器交互(比如 Tomcat)。

动态资源比如需要从后台拿到有多少人购买了商品,发送下单请求来存储数据,这些都称作动态资源,不能狭隘的理解为看得见的资源,广义上可以包括获取逻辑处理的结果,执行存储数据等操作。

CDN 制服

什么是 CDN:CDN 大白话解释就是用户就近获取资源,减少网络传输时间,提高访问速度。

Nginx 上放 HTML文件,而 CDN 上则放 HTML 引入的图片文件、脚本文件。

穿 CDN 制服的工作者在维护 CDN 的资源。

一张流程图解释 CDN 工作原理

CDN 流程图

验证通道

时间:10:00

“验证通道已开启,请携带密码进入!” 又是播放了三遍广播。

输入密码

涉及的知识点:

为什么需要密码?

为了防止大量模拟的秒杀请求进入业务处理流程,所以先加一道验证,丢弃这些假请求。

怎么做到的?前端网页先发送请求拿到密码,点击抢购时,请求体中携带加密密码,后端校验密码是否匹配。可以通过 MD5 加密。

总结为秒杀请求加密

穿梭机大厅

穿梭机大厅

经过验证通道的筛选后,有一半的假请求被挡在门外,像我这种拿到了正确密码的顺利进入了穿梭机大厅。

来到大厅,发现大厅的正中央摆放着一个显示器,上面显示的红色数字 100 赫然映入眼中。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfwpx.html