如何解决高并发问题(处理高并发)

探讨高并发——以击杀情景为例子

前言高并发指的是同一时时刻刻有大批量的用户请求抵达服务器,服务器必须对请求开展解决,并立即回到回应信息内容。根据比较有限的服务器資源,尽量迅速地解决尽量多的互联网请求,是一个非常值得深入分析与讨论的话题讨论。

目前,信息服务內容愈来愈丰富多彩,用户愈来愈多,服务器工作压力也越来越越来越大。在总流量并不大的情形下,针对中小型网络而言,布署简易的动态性网页页面,根据数据库查询开展信息内容存储,就可以达到很多应用领域。但伴随着用户单位时间浏览量越来越大,高并发愈来愈高,传统式服务器的简易构架早已无法解决大流量的冲击性,服务项目会被冲毁,导致服务器宕机。

要想雅致地解决高并发难题,必须做好全方位的考虑到,包含但不限于:互联网请求、服务器特性、IO短板、网络带宽等。搞好对应的设计方案,才可以在資源不足的条件下,提升服务器的承载力。高并百思特网发系统软件普遍的应对措施包含缓存文件、过流保护和降权。应用缓存文件可以有效的减轻服务器的工作压力、扩大系统软件解决工作能力、加速请求响应时间,基本上是高并发服务器系统软件的标准配置;过流保护是根据降低请求頻率来缓解服务器工作压力;降权的意思是把不重要的服务项目临时关掉,节约服务器資源,进而确保关键服务项目的常规运作,降权主要考量的情况是区别关键服务项目与单核心服务项目,辨别什么产品可以降权,什么不可以降权。关键服务项目如写库、提交订单、付款等是不可以降权的,在高并发的情况下必须考虑到应对措施确保其可以用。

今日大家以日常生活常用的击杀情景为例子,融合实际新项目—搜狐焦点线上新房开盘系统软件,来表明高并发情景的应对措施。击杀情景有下面一些特性:很多用户与此同时开展抢购实际操作,系统软件总流量猛增,服务器瞬间压力非常大;请求总数远高于产品供应量,仅有极少数顾客可以取得成功抢购;工作流程不繁杂,关键作用是下订单信息。击杀情景的解决,一般要从下列一些层面来解决,如下所示:

过流保护:从手机客户端方面考虑到,限定单独顾客抢购頻率;服务器端方面,提升校验,鉴别请求是不是来自现实的手机客户端,并限定请求頻率,避免故意补单;运用方面,可以应用漏桶优化算法或令牌桶算法完成运用级过流保护。缓存文件:网络热点数据信息都从缓存文件得到,尽量减少数据库查询的浏览工作压力;多线程:顾客抢购取得成功后马上回到回应,以后根据线程池,多线程解决事后流程,如发信息、升级数据库查询等,进而减轻服务器最高值工作压力。分离:每台服务器毫无疑问没法解决抢购期内很多请求导致的工作压力,必须群集布署服务器,根据负载均衡一同解决手机客户端请求,分散化工作压力。此外,设计方案一个秒杀系统还要考虑到体系的扩展性,顾客数量级进一步扩大后,可以便捷地开展容积拓展。

房产在线新房开盘是一种典型性的高并发击杀情景,购房的人通常超过楼盘总数,几千人与此同时抢购并不是什么稀奇事,一些受欢迎新楼盘乃至发生数万人选房的前所未有隆重开幕。搜狐焦点线上新房开盘系统软件为这类情景给予了稳定的解决方法,可以从容应对数万人等级的高并发抢购情景,抗高并发工作能力在具体新房开盘中获得检测。该设备总体结构如图所示1所显示。

浅谈高并发——以秒杀场景为例

图1 线上新房开盘系统软件总体构架

下边实际介绍一下线上新房开盘系统软件的关键技术:

整体方案如下所示:从前面逐渐,在各等级控制模块开展过流保护解决,对单独用户的请求頻率作限定,开展多级别校验,立即丢掉?效请求;前端和后端协同开展请求数据信息校验,避免请求舞弊,减少服务器负荷。实际如下所示:

顾客登陆时,在nginx层通过会lua脚本的防刷解决,对登陆插口浏览頻率作限定,避免登陆插口请求頻率过高致使的数据库查询奔溃;与此同时,前面载入当前时间戳,与用户ID开展拼凑后开展Hash计算,转化成token,储存在Redis缓存文件及其Cookie中,并回到Cookie给手机客户端电脑浏览器;该token做为用户的真实身份校验凭据,每一次进行抢购请求时,后面都是会校验该token,分辨前后左右端是不是配对,若不配对则回绝手机客户端请求,并提醒用户再次登陆;从图2可以看得出,当用户从其他机器设备再次登陆时,会转化成全新的token遮盖旧token,原机器设备Cookie中储存的token则无效。那样确保了C端用户只有在每台机器设备上开展登陆,降低了用户根据几台机器设备与此同时参加击杀的很有可能。

浅谈高并发——以秒杀场景为例

图2 前面限定每台机器设备登陆的平面图

顾客抢购全过程中,从好几个等级控制模块对申购请求开展过流保护削峰解决,总体流程表如下图3所显示,包含以下好多个流程:

1.前面操纵用户点一下抢购按键的頻率,每一次点一下以后都发生一个蒙层或倒数计时,对抢购按键禁止使用一段时间,以后才容许C端用户再度点一下按键进行抢购请求;

浅谈高并发——以秒杀场景为例

图3 抢购流程表

2.服务器端对来自于手机客户端的请求做合理合法校验,分辨用户token是不是合理,分辨请求主要参数中的签字值是不是恰当(即图4中后面控制模块第二步),分辨主题活动是不是己经逐渐,从缓存文件获得客户资料,校验用户是不是具备抢购资质,对不合理的请求所有回绝并回到不成功結果;

3.获得用户頻率锁,若取得成功获得,则开展事后分辨,不然觉得用户浏览頻率超限额,使缓存文件中储存的用户token无效,给顾客回到不成功結果,并提示用户再次登陆;

4.获得相匹配楼盘的分布式锁,若获得不成功,则觉得该楼盘售出,回到不成功結果;若获得产品锁取得成功,则觉得此次抢购取得成功,回到取得成功結果;

5.顾客抢购取得成功后,请求数据信息会消息推送给Kafka线程池,并开展事后解决;

6.消費Kaf百思特网ka队列中的纪录,推送抢购取得成功的通告短消息给用户,将交易数据信息分布式锁到数据库查询,根据WebSocket即时传送交易量纪录给B端投频网页页面。

在这个环节中,用户頻率锁和产品锁全是根据Redis分布式系统非堵塞锁完成,只试着一次,不堵塞等候。前面所运用的内部資源文档,根据CDN获得,防止对业务流程服务器的立即浏览;服务器网络热点数据信息,如主题活动叙述、主题活动注意事项等数据信息,储存在过程当地缓存文件中,为此提升程序流程响应时间。

浅谈高并发——以秒杀场景为例

图4 前后左右端校验防做弊流程表

抢购取得成功以后应用Kafka线程池多线程开展事后解决,包含载入订单信息到数据库查询、推送抢购取得成功的提示短消息、消息推送即时信息给B端前台接待投频页等实际操作,既降低了顾客的等待的时间,也减少了服务器和数据库查询的均值工作压力。

简易归纳一下以上全过程中涉及到的防刷及防舞弊对策。前面会对顾客点一下抢购按键的次数作限定,一切正常状况下不易发生某顾客请求頻率过高的状况;顾客的登陆请求在nginx开展反向代理的时候会通过lua脚本的解决,针对请求过度经常的异常ip开展一段时间的禁封解决,回绝其请求;抢购全过程中,针对頻率过高的用户请求,会被觉得是舞弊,回到不成功結果,强制性其退出。与此同时,针对请求是不是来自真正手机客户端,开展前后左右端协同检测:校验逻辑性包含前面组件和后面控制模块。在其中,前面控制模块根据网页页面直出数据获取到用户的原始校验值,用户开展抢购实际操作时,对一些特点数据信息及其用户原始校验值开展备份计算,数据加密后的字符串数组做为签字传送给后面插口,以后前面依照某类方式对校验值作转换;后面控制模块接到请求后,最先对校验值依照与前面同样的办法开展转换,存进缓存文件,等候下一次的前面请求,随后对请求特点数据信息及其原来的校验值开展与前面同样标准的数据加密计算,分辨前面签字的值与后面测算的值是不是配对,配对则马上开展事后解决,不配对则回到不成功結果。这类协同校验的方法降低了应用专用工具舞弊的概率,在提升舞弊难度系数的与此同时维持了较好的用户感受。

从分离视角而言,新项目后面服务项目群集布署,手机客户端请求通过双层负载均衡,匀称地分散化到每个运用服务器,各服务器一同分摊计算力;IO方面,数据库查询开展读写分离,读请求和写请求分散化到不一样数据库查询,提升数据库查询承载力。一些服务项目开展独立布署,如接收验证码、发送信息、进行付款等,这样一来百思特网,工作压力平摊在不一样的微服务架构上,防止工作压力较为集中化造成的服务器奔溃。

总的来说,根据多等级控制模块的防刷过流保护削峰解决,及其后面服务项目负载均衡,合理减少了服务器和数据库查询的负荷工作压力,促使新项目可以在資源不足的情形下,在短期内承担很多的高并发请求,巨大地提高了服务器的货运量。与此同时根据对用户浏览频次的后端校验,可以更快鉴别舞弊请求,确保了主题活动平稳、公平公正地开展。

未来展望现阶段的技术规范在诸多新房开盘实践活动中早已证实了其可行性分析与稳定性。假如参加击杀的顾客经营规模进一步提升,则必须对技术规范进一步升級。服务器计算水平的拓展可以靠提升次数来处理,但单纯性提升设备是无法彻底解决困难的,服务器IO工作能力也必须考虑到。数据库查询方面,可以开展数据信息分块,依据顾客的外键约束哈希值将客户资料储存在不一样的数据库查询;缓存文件方面,单机redis充足支撑点十万级QPS,假如不足得话,可以将数据信息分散化储存到好多个不一样的redis案例上,根据redis手机客户端分块或服务器端群集的方法,提高服务器IO工作能力。此外,开展网页页面静态数据化,将较少修改的网页页面缓存文件起來,防止多余的测算和IO,缓解服务器和数据库查询工作压力。那样的技术规范足够解决一般性的击杀抢购情景。倘若参加抢购的顾客分布均匀在国内或全球全国各地,还要考虑到不一样间距的网络延时产生的公平公正难题,考虑到开展多主机房布署。总而言之,在开展秒杀系统设计方案时一定要综合性采取业务流程的具体情况,实际情况深入分析,挑选最适用的技术规范。

相关推荐

如何解决高并发问题(处理高并发)

如何解决高并发问题(处理高并发)浅谈高并发——以秒杀场景为例导读高并发指的是同一时刻有大量的用户请求到达服务器,服务器需要对请求进行处理,并及时返回响应信息。通过有限的服务器资源,尽可能快速地处理尽可能多的网络请求,是一个值得深入研究与探讨的话题。现如今,互联网服务内容越

高通CEO: 芯片短缺问题明年基本解决

北京时间9月8日晚间消息,据报道,高通公司CEO里斯蒂亚诺·安蒙(CristianoAmon)今日表示,如果欧盟的汽车芯片生产激励计划能够吸引到合适的代工厂商,高通也愿意与它们在欧洲展开合作。  安蒙在慕尼黑举行的IAA车。

如何解决早恋问题(16岁孩子早恋如何处理)

如何解决早恋问题(16岁孩子早恋如何处理)如何30天帮孩子戒除网瘾,建立手机界限,改善叛逆厌学,提升成绩逆袭中考高考,大家好,我是赖颂强,这节课来分享一个案例 :李爸爸的儿子今年16岁,正好是初高中衔接的一年,也是少年情感变化的一年。李爸爸发现原本不拘小节好学的儿子开始变样了。开始

如何预防心肌梗塞(如何防止心梗机械并发症)

如何预防心肌梗塞(如何防止心梗机械并发症)大家好,我是急诊老史。今天来说急性心梗作为急诊科第一杀手应如何预防。1,吃饭七八分饱即可,饮食要清淡,要控制肥肉、动物内脏等高甘油三酯、高胆固醇的食物;2,排便的时候不要过于用力。平时适当的多吃富含膳食纤维的新鲜蔬果和粗粮,以保证排便的通畅

暴雪为部分高负载、高排队的服务器开启免费转服服务 解决负载过高问题

《魔兽世界》9.0暗影之地上线后,吸引不少玩家,为了缓解服务器压力,暴雪也是给出了办法。官方公告中表示,为部分高负载、高排队的服务器开启了免费转服服务,如果你的服务器符合条件,可以在人物选择界面左下角商城的服务选项中找到免费角色转服选项。

如何解决(遇到问题解决问题心态)

如何解决(遇到问题解决问题心态)调整心态:遇到问题不要怕,沉住气,办法总比问题多。明确问题:了解问题,确定问题。确认目标:明确自己想要达到的效果。资源预算:制定出解决问题所需要的的人力/物力/财力。问题具体化:对细节进行拆分,找出问题的具体环节。解决方案:探讨办法,提出解

如何解决问题(如何学会分析问题)

如何解决问题(如何学会分析问题)贝妈共读《靠谱》有一个面试问题是这样的,小明的妈妈买了两斤苹果、一个西瓜、一斤猕猴桃,总共花了20元钱,请问小明的妈妈今年多少岁?这道题没有标准答案,却有一个优秀的回答可供参考:20元钱可以买到这么多的水果,我估计这应该是10年前,也就是2

如何克服恐高(恐高症测试图)

如何克服恐高(恐高症测试图)当你准备穿越绳桥或者走在山壁上俯视陡坡时,会不会觉得心跳加速?如果你有这种状况,那么你很有可能患有一种恐惧症:恐高症。我们将告诉你克服恐高症的方法,帮助你享受户外的乐趣!请注意:本篇电竞下注平台内的建议不代表任何恐惧症专家的建议。若是你的恐高症会让

《僵尸世界大战》外服延迟高怎么解决?

僵尸世界大战是Saber Interactive制作发行的一款四人合作游戏,合作战役的剧情和任务围绕世界上的独特生存者展开,地点包括纽约、莫斯科、耶路撒冷和东京。玩家可以有策略地利用陷阱、障碍物和周边环境来生存下去,并且使用多种武器输出强大攻击来对抗一波又一波蜂拥而至的僵尸。

"双十一"当日 网络支付清算业务并发量创新高

"双十一"当日 网络支付清算业务并发量创新高

手机时间变慢17分钟 小米高管科普如何解决

昨天就有不少用户反映他们的手机时间不准了,甚至有的变慢了17分钟,非常诡异。对于手机变慢的问题,今天北京移动回应了此事,表示有个别基站出现了一定状况,目前相关情况已经解决完毕。手机时间变慢17分钟小米高管。

外网曝《求生之路2》将于年底更新并发布新战役

《求生之路2》发售至今已经有11年了,但是续作的推出却遥遥无期。最近外网上有人称《求生之路2》将在年底发布更新,并推出新的战役。

如何解决口臭问题(如何消除口臭的方法)

如何解决口臭问题(如何消除口臭的方法)引言口腔中散发出的难闻气味,即口臭。这一问题给许多人造成了严重困扰,那么我们要解决掉口臭这一“难题”,必须要清楚其是如何产生的。如果听之任之,就会对自身形象造成损害、对心理状态造成负担。一、面对口臭,有哪些比较有效的方法可以摆脱这一困扰呢?

微软19日推Win 11更新 解决AMD处理器性能缩水问题

稍早前有消息称,部分AMD锐龙处理器在微软最新的Windows11系统上遇到了性能下降的情况,性能最高降幅可达15%,针对这一情况,AMD和微软均表示将于本月推出补丁,解决这一bug。据称造成这一问题的原因有两个:其一是L。

如何变得幽默(如何变得高情商)

如何变得幽默(如何变得高情商)1,妈妈:“出门带个口罩。””我:“没事的,妈妈。我的感冒好了!”妈妈:“不,你这么大了,还没结婚。你怎么敢出去?2,我和超人唯一的区别就是我里面穿内衣。3、什么是可以触摸的痛?就是感觉饿了,摸着还是有一坨肉4,小时候看到父母吵架,经常在想

如何说话(学会高情商说话)

如何说话(学会高情商说话)会说话是一门学问,在如今的社会,随着人与人之间的交流更加的密切和频繁,说话聊天在我们的生活和工作中无处不在。而一个会说话聊天的人在这个社会无形中变得更受追捧,这也决定了他们会赢得更多人的欢迎,从而也能为了赢得更多的机会。那么,对于那些还有很

泪目!韩国导演金基德因新冠并发症去世

金基德出生于1960年,为韩国著名导演和编剧,其作品多次入围威尼斯、戛纳等国际电影节并获奖。

如何使鼻梁变高(让鼻梁变高变挺的诀窍)

看到小巧、挺拔的鼻梁,都会觉得十分羡慕。确实,鼻子挺拔,五官会更有立体感,看起来也会更漂亮。但亚洲妹子的鼻梁大多比较扁塌,那怎么让鼻子变挺呢?下面,跟小编一起来看看鼻子变高挺的小妙招。

干货分享:如何解决游戏中的资源过剩问题

绝大多数游戏都有游戏资源,当然这里的游戏资源不是指贴图、模型、图标这种资源,而是类似于升级材料、强化材料这种,玩家在游戏内消耗的资源

七国集团外长会结束并发布联合声明

七国集团外长会结束并发布联合声明

电竞游戏下载,游戏玩家专属个性阅读社区


?CopyRight 2010- 2020 BOXUU.COM Inc All Rights Reserved

鄂公网安备 35020302000061号- 鄂ICP备2020015574号-1