高并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再屌丝点的说法就像玩撸啊撸被ADC暴击了一样,那伤害你懂得(如果你看懂了,这个说法说明是正在奔向人生巅峰的屌丝。
高并发会来带的后果
服务端:
用户角度:
我的经历:
下面我进行实例分析,简单粗暴,动态分析,纯属本人个人经验分享,如有说错,或者有更好的建议或者意见的请留言,大家一起成长。
并发下的数据处理:
通过表设计,如:记录表添加唯一约束,数据处理逻辑使用事物防止并发下的数据错乱问题
这里主要讲述的是在并发请求下的数据逻辑处理的接口,如何保证数据的一致性和完整性,这里的并发可能是大量用户发起的,也可能攻击者通过并发工具发起的并发请求
如例子:通过表设计防止并发导致数据错乱
需求点
已知表
我的设计
如例子2(事务+通过更新锁 防止并发导致数据错乱 或者事物+Update的锁表机制)
需求点:
已知表:
高并发意淫分析(属于开发前的猜测):
我的设计:
如例子3(通过程序代码防止包并发下的数据错乱问题)
需求点:
问题点:
解决问题:
访问量大的数据统计接口
需求: 用户行为数据统计接口,用来记录商品展示次数,用户通过点击图片,或者链接,或者其他方式进入到商品详情的行为次数
问题点:
意淫分析:
解决问题:
高并发的下的服务器压力均衡,合理站点架设,DB部署
以下我所知道的:
服务器代理nginx,做服务器的均衡负载,把压力均衡到多台服务器
部署集群 mysql数据库, redis服务器,或者mongodb服务器,把一些常用的查询数据,并且不会经常的变化的数据保存到其他NoSQL DB服务器中,来减少数据库服务器的压力,加快数据的响应速度。
数据缓存,Cache
在高并发接口的设计中可以使用具有高并发能力的编程语言去开发,如:nodejs 做web接口
服务器部署,图片服务器分离,静态文件走CDN
DBA数据库的优化查询条件,索引优化
消息存储机制,将数据添加到信息队列中(redis list),然后再写工具去入库
脚本合理控制请求,如,防止用户重复点击导致的ajax多余的请求,等等。
并发测试神器推荐
Apache JMeter
Microsoft Web Application Stress Tool
Visual Studio 性能负载
本系列:
大话程序猿眼里的高并发(上)
大话程序猿眼里的高并发(下)