浅析高并发

高并发的概念
高并发,是指的在同一时间点,系统可以同时处理很多个同时访问的请求。
高并发方案支持日PV在千万以上,百度就是一个高并发的示例网站,它会允许非常多的人同时在线查询但不会卡顿。

高并发通常会应用在高PV的网站中,其他应用环境如:秒杀、抢票、游戏等等也会经常用到。
目前大多数互联网企业的系统环境都会应用高并发。

高并发常用指标包括:
响应时间Response Time
吞吐量Throughput
每秒查询率QPS(Query Per Second)
并发用户数
日活量等

高并发的实现
那么如何实现高并发呢?

我们知道服务器都是有硬件性能限制的,再好的配置,也有请求处理上限。
当服务器并发请求超过硬件性能处理的上线,就会存在一个性能瓶颈。服务器会变得卡顿。
所以理论上我们不停的增加服务器硬件或服务器数量,也可以实现高并发。
这个就是高并发的垂直扩展的概念。

垂直扩展通常用于系统搭建的初期,通过扩充服务器硬件来并发处理越来越多的处理请求。
垂直扩展优点是见效快,缺点是成本高。

另外一种是高并发的水平扩展。也是目前应用最多的一种。本文主要讨论的也是高并发的水平扩展。水平扩展是通过软件和优化的手段实现高并发的效果。


image.png

高并发系统的设计主要考虑以下几个方面:
1、前端过滤请求
2、利用缓存和请求队列
3、中间件负载均衡
4、动静分离和CDN加速
5、优化数据库
6、压力测试
7、监控
8、安全和攻击处理

前端过滤请求
通常是通过前端的优化来进行请求的过滤,比如秒杀,我们可以限制用户在多少秒内只能请求一次,
过滤掉用户由于响应慢而重复提交的多余请求。

利用缓存和请求队列
1、如果只是对数据库进行读操作,可以利用缓存(redis, memcached),将数据写入更快读取速度的内存中,
用户读取速度提升的同时也可以减小数据库的压力。
2、请求队列通常在秒杀和抢票中用的较多,通过代码实现对海量请求的排序,让请求排个队。
如果缓存中还有剩余商品,则加入请求队列中,否则,返回商品卖完的提示。

web中间件负载均衡
web中间件主要是指的web站点层应用。其负载均衡用的比较多的是lvs+nginx,也有用keepalived+nginx、haproxy或者直接通过nginx的反向代理。
原理都是通过负载均衡实现高可用,同时对请求流量进行分流,
从而减轻服务器或站点的压力。

动静分离和CDN加速
所谓动静分离,就是静态页面和动态页面分离开,通过不同的方式去访问。
静态页面不会变化,可以通过nginx优化或者CDN加速。
动态页面由于涉及到数据库查询、逻辑计算等,访问相对较慢。
我们也可以通过动态页面静态化,就是将原本需要动态生成的页面提前生成好。再使用静态页面加速的方式访问。

优化数据库
数据库数据是存储在硬盘,读写慢。通常web高并发的瓶颈很多都来源于数据库的压力,
优化数据库就显得尤为重要。
同时数据库的数据是非常重要的,数据库的高可用的设计也是不容忽视的问题。
简单说一下常用的数据库优化方案:
1、数据库读写分离
在系统的并发请求中有很大一部分都是进行数据库读操作,所以数据库读写分离显得尤为重要。
一般通过配置mysql主从实现。通过读写分离,来减轻数据库的压力。
2、数据库水平拆分
水平拆分就是把同一张表拆分到不同的数据库中,解决单库存储海量数据的问题。
水平拆分通常适用于数据库数据量过大的情况。
3、数据库集群
数据库集群是一个分布式节点架构的存储方案,可以提高性能,并增加容错性和高可用性。
方案可以采用haproxy+keepalived或者LVS+keepalived等

压力测试
完成高并发配置以后,对系统的压力测试也是非常必要的。
压力测试的是为了找到系统的瓶颈,目的就是把系统搞挂,从而发现问题,再进行针对性的系统优化。
压力测试工具很多,linux下web压测常用工具有http_load、siege等

监控
监控是高并发系统中非常重要的环节,对系统不间断的实时监控可以及时预警发现问题。并通知运维人员处理。
常用的监控是zabbix,报警可以通过微信报警。
监控范围可以包括服务器连接、服务器应用端口状态、服务器硬件信息、数据库状态等等。

安全和攻击处理
安全包括服务器安全和漏洞处理,高级防火墙设置、病毒、黑客入侵检测等。
通常企业需要制定完整的方案应对DDOS攻击和其他攻击,将应用的损失降低到最低。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容