提醒:因为软件开发行业无明确禁止法规, 该企业仅提供软件开发外包定制服务,项目需取得国家许可,严禁非法用途。 违法举报

电商的和抢购对我们来说都不是一个陌生的东西

更新:2024-07-18 07:07 发布者IP:183.22.251.61 浏览:0次
发布企业
东莞市数云网络科技有限公司商铺
认证
资质核验:
已通过营业执照认证
入驻顺企:
4
主体名称:
东莞市数云网络科技有限公司
组织机构代码:
91441900MACKCG2W01
报价
请来电询价
关键词
电商的和抢购对我们来说都不是一个陌生的东西
所在地
东莞市
联系电话
18665158422
dapp开发
18665158422
商业模式架构导师
杨小花  请说明来自顺企网,优惠更多
请卖家联系我
yqm106106

产品详细介绍

电商的和抢购对我们来说都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 

一、大规模并发带来的挑战 

在过去的工作中,我曾经面对过5w每秒的高并发功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常状态。我们现在一起来讨论下,优化的思路和方法哈。 

1. 请求接口的合理设计

一个或者抢购页面,通常分为2个部分,一个是静态的HTML等内容,另一个就是参与的Web后台请求接口。

通常静态HTML等内容,是通过CDN的部署,一般压力不大,核心瓶颈实际上在后台请求接口上。这个后端接口,必须能够支持高并发请求,同时,非常重要的一点,必须尽可能“快”,在短的时间里返回用户的请求结果。为了实现尽可能快这一点,接口的后端存储使用内存级别的操作会更好一点。仍然直接面向MySQL之类的存储是不合适的,如果有这种复杂业务的需求,都建议采用异步写入。

 

当然,也有一些和抢购采用“滞后反馈”,就是说当下不知道结果,一段时间后才可以从页面中看到用户是否成功。但是,这种属于“偷懒”行为,同时给用户的体验也不好,容易被用户认为是“暗箱操作”。

2. 高并发的挑战:一定要“快”

我们通常衡量一个Web系统的吞吐率的指标是QPS(Query PerSecond,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Apache的Web服务器,配置MaxClients为500个(表示Apache的大连接数目)。

那么,我们的Web系统的理论峰值QPS为(理想化的计算方式):

20*500/0.1 = 100000 (10万QPS)

咦?我们的系统似乎很强大,1秒钟可以处理完10万的请求,5w/s的似乎是“纸老虎”哈。实际情况,当然没有这么理想。在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被大大增加。

就Web服务器而言,Apache打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,然后就直接导致平均响应时间增加。因此上述的MaxClient数目,要根据CPU、内存等硬件因素综合考虑,不是越多越好。可以通过Apache自带的abench来测试一下,取一个合适的值。然后,我们选择内存操作级别的存储的Redis,在高并发的状态下,存储的响应时间至关重要。网络带宽虽然也是一个因素,不过,这种请求数据包一般比较小,一般很少成为请求的瓶颈。负载均衡成为系统瓶颈的情况比较少,在这里不做讨论哈。

那么问题来了,假设我们的系统,在5w/s的高并发状态下,平均响应时间从100ms变为250ms(实际情况,甚至更多):

20*500/0.25 = 40000 (4万QPS)

于是,我们的系统剩下了4w的QPS,面对5w每秒的请求,中间相差了1w。

然后,这才是真正的恶梦开始。举个例子,高速路口,1秒钟来5部车,每秒通过5部车,高速路口运作正常。突然,这个路口1秒钟只能通过4部车,车流量仍然依旧,结果必定出现大塞车。(5条车道忽然变成4条车道的感觉)

同理,某一个秒内,20*500个可用连接进程都在满负荷工作中,却仍然有1万个新来请求,没有连接进程可用,系统陷入到异常状态也是预期之内。

其实在正常的非高并发的业务场景中,也有类似的情况出现,某个业务请求接口出现问题,响应时间极慢,将整个Web请求响应时间拉得很长,逐渐将Web服务器的可用连接数占满,其他正常的业务请求,无连接进程可用。

更可怕的问题是,是用户的行为特点,系统越是不可用,用户的点击越频繁,恶性循环终导致“雪崩”(其中一台Web机器挂了,导致流量分散到其他正常工作的机器上,再导致正常的机器也挂,然后恶性循环),将整个Web系统拖垮。

3. 重启与过载保护

如果系统发生“雪崩”,贸然重启服务,是无法解决问题的。常见的现象是,启动起来后,立刻挂掉。这个时候,好在入口层将流量拒绝,然后再将重启。如果是redis/memcache这种服务也挂了,重启的时候需要注意“预热”,并且很可能需要比较长的时间。

和抢购的场景,流量往往是超乎我们系统的准备和想象的。这个时候,过载保护是必要的。如果检测到系统满负载状态,拒绝请求也是一种保护措施。在前端设置过滤是简单的方式,但是,这种做法是被用户“千夫所指”的行为。更合适一点的是,将过载保护设置在CGI入口层,快速将客户的直接请求返回。

二、作弊的手段:进攻与防守

和抢购收到了“海量”的请求,实际上里面的水分是很大的。不少用户,为了“抢“到商品,会使用“刷票工具”等类型的辅助工具,帮助他们发送尽可能多的请求到服务器。还有一部分用户,制作强大的自动请求脚本。这种做法的理由也很简单,就是在参与和抢购的请求中,自己的请求数目占比越多,成功的概率越高。

这些都是属于“作弊的手段”,不过,有“进攻”就有“防守”,这是一场没有硝烟的战斗哈。

1. 同一个账号,一次性发出多个请求

部分用户通过浏览器的插件或者其他工具,在开始的时间里,以自己的账号,一次发送上百甚至更多的请求。实际上,这样的用户破坏了和抢购的公平性。

这种请求在某些没有做数据安全处理的系统里,也可能造成另外一种破坏,导致某些判断条件被绕过。例如一个简单的领取逻辑,先判断用户是否有参与记录,如果没有则领取成功,后写入到参与记录中。这是个非常简单的逻辑,但是,在高并发的场景下,存在深深的漏洞。多个并发请求通过负载均衡服务器,分配到内网的多台Web服务器,它们首先向存储发送查询请求,然后,在某个请求成功写入参与记录的时间差内,其他的请求获查询到的结果都是“没有参与记录”。这里,就存在逻辑判断被绕过的风险。


所属分类:中国商务服务网 / APP开发
电商的和抢购对我们来说都不是一个陌生的东西的文档下载: PDF DOC TXT
关于东莞市数云网络科技有限公司商铺首页 | 更多产品 | 联系方式 | 黄页介绍
成立日期2019年06月19日
法定代表人18665158422
注册资本18665158422
主营产品数字藏品系统开发,元宇宙系统开发,嗨购模式,广告电商系统,泰山众筹模式,分享购cps系统、定制开发、请联系18002820787模式快速开发.APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发公司以小程序开发、微商城开发、网站建设、APP开发为核心业务,专注于界面设计、技术研发、品牌营销,为客户提供一站式互联网解决方案,提供优质的系统支持服务,努力为客户创造大的价值,助力中小企业进行互联网+转型与升级。 专注于公众号商城开发,苹果+安卓app,H5网页开发,小程序开发,专页定制开发商业模式系统软件, 1.主营分销系统开发: 二级分销系统,分红模式系统(团队分红系统,股东分红系统,级差返利系统,区域分红系统),微商云仓系统,微商代理授权系统,复购模式系统,拼不中返利拼团系统,商家O2O系统,一条线排队返现系统,公排系统,直销系统,积分商城系统,签到+免费领面膜系统,扫码分销系统。 热门模式系统开发:即拼商城系统、光明新零售系统、拼团拼购系统、完美天使美牙系统,言蕾回春面具面膜系统,创客新零售系统。
经营范围花葵直播模式快速开发.APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发公司以小程序开发、微商城开发、网站建设、APP开发为核心业务,专注于界面设计、技术研发、品牌营销,为客户提供一站式互联网解决方案,提供优质的系统支持服务,努力为客户创造大的价值,助力中小企业进行互联网+转型与升级。 专注于公众号商城开发,苹果+安卓app,H5网页,小程序开发,专页定制开发商业模式系统软件, 1.主营分销系统开发: 二级分销系统,分红模式系统(团队分红系统,股东分红系统,级差返利系统,区域分红系统),微商云仓系统,微商代理授权系统,复购模式系统,拼不中返利拼团系统,商家O2O系统,一条线排队返现系统,公排系统,直销系统,积分商城系统,签到+免费领面膜系统,扫码分销系统。 2. 热门模式系统开发:即拼商城系统、光明新零售系统、拼团拼购系统、完美天使美牙系统,言蕾回春面具面膜系统,创客新零售系统。 系统开发请联系:(电微)
公司简介如何上线NFT电商平台:1.首先要有一套NFT电商系统,它可以为你的每一个商品铸成唯一的NFT序列号(你可以把它理解为唯一的“身份证”);2.假设现在你手上有一个古董/名画,你可以用这个NFT电商系统给他生成一个专属NFT,然后就可以发布到平台交易了;3.用户在平台(手机端)看到这个NFT古董/名画,有两个选择,一是直接购买,可以提货,平台寄送,放家里收藏;二是买了之后直接在这个平台上挂售出去,如 ...
公司新闻
顺企网 | 公司 | 黄页 | 产品 | 采购 | 资讯 | 免费注册 轻松建站
免责声明:本站信息由企业自行发布,本站完全免费,交易请核实资质,谨防诈骗,如有侵权请联系我们   法律声明  联系顺企网
© 11467.com 顺企网 版权所有
ICP备案: 粤B2-20160116 / 粤ICP备12079258号 / 粤公网安备 44030702000007号 / 互联网药品信息许可证:(粤)—经营性—2023—0112