【每日一记5】+第9天 论Web大规模高并发请求的解决方案
  

sailyang 710

{{ttag.title}}
本帖最后由 sailyang 于 2020-3-12 15:01 编辑

    当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。如果Web系统不做针对性的优化,会轻而易举地陷入到异常状态。尤其像我们这种营销类企业,比如发个红包之类的高峰期一秒钟都有几十次。如何避免并发我认为应该从以下几点做起。

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

2. 高并发的挑战:一定要“快”
    我们通常衡量一个Web系统的吞吐率的指标是QPS每秒处理请求数,解决高并发场景,在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被大大增加。Apache打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,然后就直接导致平均响应时间增加。因此MaxClient数目设置要根据CPU、内存等硬件因素综合考虑,在正常的非高并发的业务场景中,某个业务请求接口出现问题,响应时间极慢,将整个Web请求响应时间拉得很长,逐渐将Web服务器的可用连接数占满,其他正常的业务请求,无连接进程可用。

3. 重启与过载保护
    如果系统发生“雪崩”,贸然重启服务,是无法解决问题的。最常见的现象是,启动起来后,立刻挂掉。这个时候,最好在入口层将流量拒绝,然后再将重启。过载保护检测到系统满负载状态,

二、用户层面的作弊的手段
1. 同一个账号,一次性发出多个请求
    部分用户通过浏览器的插件或者其他手机工具,以自己的账号,一次发送上百甚至更多的请求。导致某些判断条件被绕过。多个并发请求通过负载均衡服务器,分配到内网的多台Web服务器,它们首先向存储发送查询请求,在某个请求成功写入参与记录的时间差内,其他的请求获查询到的结果都是“没有参与记录”。这里,就存在逻辑判断被绕过的风险。需要在程序入口处,一个账号只允许接受1个请求,其他请求过滤。

2. 多个账号,一次性发送多个请求
    很多公司的账号注册功能,早期几乎是没有限制的,这种场景,可以通过检测指定机器IP请求频率就可以解决,如果发现某个IP请求频率很高,可以给它弹出一个验证码或者直接禁止它的请求,其次直接禁止IP。

3. 多个账号,不同IP发送不同请求
    通过设置业务门槛高来限制这种请求了,或者通过账号行为的”数据挖掘“来提前清理掉它们。僵尸账号很可能属于同一个号码段甚至是连号的,活跃度不高,等级低,资料不全等等。根据这些特点,适当设置参与门槛,通过业务手段,也是可以过滤掉一些僵尸号。

三、高并发下的数据安全
    多线程写入同一个文件的时候,会存现“线程安全”的问题。如果是MySQL数据库,可以使用它自带的锁机制很好的解决问题,但是,在大规模并发的场景中,是不推荐使用MySQL的因为就是“超发”,如果在这方面控制不慎,会产生发送过多的情况,比如发放微信红包就会重复发放。(PS我们公司系统就曾经出现过这种现象)我们现在解决了锁的问题,全部请求采用“先进先出”的队列方式来处理。那么新的问题来了,高并发的场景下,因为请求很多,很可能一瞬间将队列内存“撑爆”,然后系统又陷入到了异常状态。不过现在业务量在减少,暂时避免了撑爆

打赏鼓励作者,期待更多好文!

打赏
2人已打赏

zjwshenxian 发表于 2020-3-13 07:43
  
感谢分享
发表新帖
热门标签
全部标签>
安全效果
每日一问
西北区每日一问
【 社区to talk】
技术盲盒
干货满满
技术笔记
新版本体验
产品连连看
每周精选
技术咨询
信服课堂视频
标准化排查
功能体验
2023技术争霸赛专题
玩转零信任
社区帮助指南
自助服务平台操作指引
答题自测
云计算知识
天逸直播
社区新周刊
GIF动图学习
运维工具
用户认证
通用技术
秒懂零信任
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
安装部署配置
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
纪元平台
卧龙计划
华北区拉练
以战代练
技术晨报
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
高手请过招
升级&主动服务
高频问题集锦
POC测试案例
全能先锋系列

本版版主

461
247
13

发帖

粉丝

关注

本版达人

feeling

本周分享达人

新手29676...

本周提问达人