电商秒杀架构方案

电商秒杀架构方案

ID:41686121

大小:176.89 KB

页数:10页

时间:2019-08-30

电商秒杀架构方案_第1页
电商秒杀架构方案_第2页
电商秒杀架构方案_第3页
电商秒杀架构方案_第4页
电商秒杀架构方案_第5页
资源描述:

《电商秒杀架构方案》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一、大规模并发带来的挑战在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到界常状态。我们现在一起来讨论下,优化的思路和方法哈。1.请求接口的合理设计一个秒杀或者抢购页面,通常分为2个部分,一个是静态的HTML等内容,另一个就是参与秒杀的Web后台请求接口。通常静态HTML等内容,是通过CDN的部署,一般压力不大,核心瓶颈实际上在后台请求接口上。这个后端接口,必须能够支持高并发请求,同时,非常重要的一点,必须尽可能“快”,在最短的时间里返冋用户的请

2、求结果。为了实现尽可能快这一点,接口的示端存储使用内存级别的操作会更好一点。仍然肓接面向MySQL之类的存储是不合适的,如果有这种复杂业务的需求,都建议采用异步写入。I异飙理其他揍作当然,也有一些秒杀和抢购采用“滞示反馈”,就是说秒杀当下不知道结果,一段时间后才可以从页而屮看到用户是否秒杀成功。但是,这种属于“偷懒”行为,同时给用户的体验也不好,容易被用户认为是“暗箱操作”。2.高并发的挑战:一定要“快”我们通常衡量一个Web系统的吞叶率的指标是QPS(QueryPerSecond,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个

3、例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Apache的Web服务器,配置MaxClients为500个(表示Apache的最大连接数冃)。那么,我们的Web系统的理论峰值QPS为(理想化的计算方式):20*500/0.1=100000(10万QPS)咦?我们的系统似乎很强大,1秒钟可以处理完10万的请求,5w/s的秒杀似乎是“纸老虎”哈。实际情况,当然没冇这么理想。在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被人人增加。就Web服务器而言,Apache打开了越多的连接进程,CPU需要处理的

4、上下文切换也越多,额外增加了CPU的消耗,然后就玄接导致平均响丿应时间增加。因此上述的MaxClient数目,要根据CPU、内存等硬件因素综合考虑,绝对不是越多越好。可以通过Apache自带的abench来测试一下,取一个合适的值。然后,我们选择内存操作级别的存储的Redis,在高并发的状态卜存储的响应时间至关重耍。网络带宽虽然也是一个因素,不过,这种请求数据包一般比较小,一般很少成为请求的瓶颈。负载均衡成为系统瓶颈的情况比鮫少,在这里不做讨论哈。那么问题来了,假设我们的系统,在5w/s的高并发状态下,平均响应吋间从100ms变为250ms(实际情况

5、,甚至更多):20*500/0.25=40000(4万QPS)于是,我们的系统剩下了4w的QPS,面对5w每秒的请求,中间相差了1w。然后,这才是真正的恶梦开始。举个例子,高速路口,1秒钟来5部车,每秒通过5部车,高速路口运作正常。突然,这个路口1秒钟只能通过4部车,车流量仍然依I口,结果必定出现人塞车。(5条车道忽然变成4条车道的感觉)同理,某-个秒内,20*500个可用连接进程都在满负荷工作小,却仍然有1万个新來请求,没有连接进程可用,系统陷入到异常状态也是预期之内。一些ill求无可用连接进程其实在正常的非高并发的业务场景中,也有类似的情况出现,

6、某个业务请求接口出现问题,响应吋间极慢,将整个Web请求响应吋间拉得很长,逐渐将Web服务器的可用连接数占满,其他正常的业务请求,无连接进程可用。更可怕的问题是,是川户的行为特点,系统越是不叮用,用户的点击越频繁,恶性循坏最终导致“雪崩”(其屮一台Web机器挂了,导致流量分散到其他正常工作的机器上,再导致正常的机器也挂,然后恶性循坏),将整个Web系统拖垮。1.重启与过载保护如果系统发生“雪崩”,贸然重启服务,是无法解决问题的。最常见的现彖是,启动起来后,立刻挂掉。这个时候,最好在入口层将流量拒绝,然后再将重川。如果是redis/memcache这种

7、服务也挂了,重启的时候需要注意“预热”,并几很可能需耍比鮫长的时间。秒杀和抢购的场景,流虽:往往是超乎我们系统的准备和想彖的。这个吋候,过载保护是必要的。如果检测到系统满负载状态,拒绝请求也是•种保护措施。在前端设置过滤是最简单的方式,但是,这种做法是被用户“千夫所指”的行为。更合适一点的是,将过载保护设置在CGI入口层,快速将客户的直接请求返冋。二、作弊的手段:进攻与防守秒杀和抢购收到了“海量啲请求,实际上里面的水分是很大的。不少用户,为了“抢“到商品,会使用“刷票工具”等类型的辅助工具,帮助他们发送尽可能多的请求到服务器。还有-一部分高级用户,制

8、作强人的白动请求脚木。这种做法的理由也很简单,就是在参与秒杀和抢购的请求中,自己的请求数目占比越多,成功的概

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。