4000-618-418

高并发的解决方案(高并发如何解决方案)

2020年09月30日

高并发架构相关概念
并发:
在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任意一个时刻上只有一个程序在处理机上运行。

我们说的高并发是什么?
上面的定义明显不是我们通常所言的并发,在互联网时代,所讲的并发、高并发,通常是指并发访问。也就是在某个时间点,有多少个访问同时到来通常如果一个系统的日PV在千万以上,有可能是一个高并发的系统,但是有的公司完全不走技术路线,全靠机器堆,这不在我们的讨论范围。

高并发的问题,我们具体该关心什么?
QPS:每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指HTTP请求)
吞吐量:单位时间内处理的请求数量(通常由QPS与并发数决定)
响应时间:从请求发出到收到响应花费的时间,例如系统处理一个HTTP请求需要100ms,这个100ms就是系统的响应时间
PV:综合浏览量(Page View),即页面浏览量或者点击量,一个访客在24小时内访问的页面数量,同一个人浏览你的网站同一页面,只记作一次PV
UV:独立访问(UniQue Visitor),即一定时间范围内相同访客多次访问网站,只计算为1个独立访客
带宽:计算带宽大小需关注两个指标,峰值流量和页面的平均大小
日网站带宽=PV/统计时间(换算到秒)*平均页面大小(单位KB)*8
峰值一般是平均值的倍数,根据实际情况来定
QPS不等于并发连接数
QPS是每秒HTTP请求数量,并发连接数是系统同时处理的请求数量
(总PV数*80%)/(6小时秒数*20%)=峰值每秒请求数(QPS)
80%的访问量集中在20%的时间!!!

QPS达到极限,各种情况如何处理?
随着QPS的增长,每个阶段需要根据实际情况来进行优化,优化的方案也与硬件条件、网络带宽息息相关。
QPS达到50
可以称之为小型网站,一般的服务器就可以应付
QPS达到100
假设关系型数据库的每次请求在0.01秒完成
假设单页面只有一个SQL查询,那么100QPS意味这1秒钟完成100次请求,但是此时我们并不能保证数据库查询能完成100次
方案:数据库缓存层、数据库的负载均衡
QPS达到800
假设我们使用百兆带宽,意味着网站出口的实际带宽是8M左右
假设每个页面只有10k,在这个并发条件下,百兆带宽已经吃完
方案:CDN加速、负载均衡
QPS达到1000
假设使用Memcache缓存数据库查询数据,每个页面对Memcache的请求远大于直接对DB的请求
Memcache的悲观并发数在2W左右,但有可能在之前内网带宽已经吃光,表现出不稳定
方案:静态HTML缓存
QPS达到2000
这个级别下,文件系统访问锁都成为灾难
方案:做业务分离,分布式存储

三种高并发解决方案
一、数据库缓存层的优化
什么是数据库缓存?
MySQL等一些常见的关系型数据库的数据都存储在磁盘中,在高并发场景下,业务应用对MySQL产生的增、删、改、查的操作造成巨大的I/O开销和查询压力,这无疑对数据库和服务器都是一种巨大的压力,为了解决此类问题,缓存数据的概念应运而生
为什么是要使用缓存?
缓存数据是为了让客户端很少甚至不访问数据库服务器进行数据的查询,高并发下,能最大程度的降低对数据库服务器的访问压力极大地解决数据库服务器的压力
提高应用数据的响应速度
用户请求-->数据查询-->连接数据库服务器并查询数据-->将数据缓存起来(HTML、内存、JSON、序列化数据)-->显示给客户端
用户再次请求或者新用户访问-->数据查询-->直接从缓存中获取数据-->显示给客户端

二、CDN加速
什么是CDN?
CDN的全称是Content Delivery Network,即内容分发网络,尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定
在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络
CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上
使用CDN的优势?
本地Cache加速,提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度
跨运营商的网络加速,保证不同网络的用户都得到良好的访问质量
远程访问用户根据DNS负载均衡技术智能自动选择Cache服务器
自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽,分担网络流量,减轻原站点WEB服务器负载等功能
广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵

三、Web服务器的负载均衡、请求分发
七层负载均衡的实现
基于URL等应用信息的负载均衡
Nginx的proxy是它一个很强大的功能,实现了7层负载均衡
Nginx实现的优点
功能强大,性能卓越,运行稳定
配置简单灵活
能够自动剔除工作不正常的后端服务器
上传文件使用异步模式
支持多种分配策略,可以分配权重,分配方式灵活
Nginx负载均衡
内置策略,扩展策略
内置策略:IP Hash、加权轮询
扩展策略:fair策略、通用hash、一致性hash
加权轮询策略
首先将请求都分给高权重的机器,直到该机器的权值降到了比其他机器低,才开始将请求分给下一个高权重的机器
当所有后端机器都down掉时,Nginx会立即将所有机器的标志位清成初始状态,以避免造成所有的机器都处于timeout的状态
IP Hash策略
Nginx内置的另一个负载均衡的策略,流程和轮询很类似,只是七种的算法和具体的策略有些变化
IP Hash算法是一种变相的轮询算法

CDN可以说是在服务器的基础上升级的网站加速与网络防御于一体的优质方案,但又跟服务器完全不一样,有着更高效的防御能力、卓越的加速效果、智能缓存以及负载均衡。

以下就介绍下高防CDN的原理。
第一、把网站服务器隐藏在后端,高防cdn节点部署在前端,确保网站服务器不会遭受到针对性的攻击。
第二、高防cdn防御机制不但单一,对于不同的网站程序有不同的防御策略,那么是遇到新型的攻击也不用担心,可马上根据攻击方式来进行部署针对性的防御策略,高效的拦截清洗攻击,把攻击对网站的影响降到最低。
第三、高防cdn缓存技术减少访客跟网站服务器请求数据,降低网站服务器压力,提高网站服务器稳定性。
高防CDN解决方案优势特点:
1、 自动化
引导式自助,错误冲突及时提醒,操作高效便捷。配置项丰富,自动配置缓存策略。
2、多业务支持
支持网页、下载、点播等多种业务类型,满足用户多元化业务需求,可谓是大文件、小文件、点播、直播、动静皆宜。
3、安全防护
智能防护,隐藏源站IP,防止黑客获取源站真实IP,保护网站远离DDOS攻击,确保加速性能的前提下全面提升网站安全性。
4、网络加速
通过底层协议优化,有效对抗数据传输过程中各网络节点的波动,解决下载失败、下载错误、速度慢等常见问题,在下载速度低于50KB的弱网环境下,可将数据传输速度提升10倍。
5、数据分析
实时数据分析系统,快速发现黑客攻击行为,便捷获取安全加速数据。
高防CDN解决方案适用行业应用:
1、门户类网站
主要为互联网主流媒体,专业服务于以新闻、信息、下载内容为主文字、图片与视频、音频结合,随着网站不断功能升级,网站所提供网络信息服务与用户互动率高,网站成长访问人数也在不断增加,网站开始面临性能和扩容方面问题。
2、视频类网站
视频网站为保证用户能得到优质服务,他们需要足够大量的宽带消耗,如果无法满足,用户打开页面速度不理想,看片卡、下载中断、上传不上去、网络莫名变龟速。
3、游戏类网站
为用户提供各类网络游戏、网页游戏、休闲游戏、棋牌游戏、一系列增值服务等为一体的娱乐频道网站运营。
4、软件类网站
目前用户使用非常广泛,由于软件强大的扩展功能,用户数也不断的增加,有数以百万计的用户;随着用户数量的不断增加以及软件不断的完善,需求经常更新数据、下载补丁升级。
5、电子商务类网站
目前不仅成为网络经济流通领域不可或缺的经济实体。网站在如此庞大的访问量之下面临巨大挑战,怎样保证系统能安全快速的提供服务是他们需要解决的问题。

上一篇:如何预防服务器故障并从中恢复?

下一篇:如何让网站的速度打开快(怎么才能让网站访问速度快)