电商网站50W-100W高并发,秒杀功能是怎么实现的?

Leah发布于:2022-07-28阅读:0

在淘宝、天猫、京东等国内大型电商平台节日制作的领导下,国内电商平台纷纷跟进。双11、双12、618等电商专属节日也吸引了大量用户参与。节前生意惨淡,游客少,但节日当天流量增长非常快,这无疑是对大多数程序猿学生和运维人员的巨大考验。

电商网站50W-100W高并发,秒杀功能是怎么实现的?

虽然秒杀系统的流量很高,但实际有效流量相对较小;利用系统的层次结构,提前检查,拦截无效流量,减少大量无效流量涌入数据库,确保业务系统的正常运行;

第一步:使用浏览器缓存和CDN加速静态页面抵抗第一层流量

在第二次杀戮之前,用户不断更新产品详细信息页面,导致大量的页面请求。因此,我们需要将第二次杀戮产品详细信息页面与普通产品详细信息页面分开;对于第二次杀戮产品详细信息页面,尽量静态处理静态元素。除了第二次杀戮按钮需要服务器进行动态判断外,其他静态数据还可以缓存在浏览器和浏览器中CDN在这种情况下,只有流量会在秒杀前刷新页面,访问后端服务器和数据库;

第二步:使用redis缓存拦截部分流量(只读Redis)

利用CDN我们使用拦截一级流量和二级流量redis,我们需要提前写入秒杀的商品数据Redis,并通过程序进行秒杀相应逻辑的设定(只允许通过对应秒杀数量的请求);

第三步:使用Redis扣除缓存库存(读写)Redis)

下单成功后,进入下层服务,开始验证订单信息,扣除库存;我们使用它,以避免直接访问数据库Redis库存扣除(提前写入库存数量redis);服务器在扣除库存时通过请求redis因为redis是单线程模型,可以保证多个命令的原子性;

第四步:使用redis实现简单的消息队列异步下单入库

库存扣除后,需要订单存储,如果商品数量少,可以直接操作数据库,但如果数据量大,数据库锁冲突会带来很大的性能瓶颈,可以考虑使用消息队列,当秒杀服务将订单信息写入消息队列时,可以认为订单完成,避免直接操作数据库;使用异步订单模块redis读取订单并写入数据库即可完成;

简单的设计能有效抵御秒杀大流量的冲击。不知道程序猿有没有更好的建议。

微云网络直接与香港、美国、韩国、日本、台湾、新加坡、荷兰、法国、英国、德国、埃及、南非、巴西、印度、越南等国家和地区提供服务。如有必要,请联系微云网络客服!

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:shawn.lee@vecloud.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

本站原创内容未经允许不得转载,或转载时需注明出处:https://news.kd010.com/fwqjs/12078.html

TAG标签:

上一篇:linux的TCP连接数量最大不能超过65535个吗,那服务器是如何应对百万千万的并发的
下一篇:什么是DNS缓存中毒?如何防止DNS缓存中毒攻击

相关文章

返回顶部