(转)高并发和大流量解决方案 (#高并发架构相关概念#)

转发:https://blog.csdn.net/beihenanfei/article/details/78919682

#高并发架构相关概念#

并发:

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

我们说的高并发是什么?

上面的定义明显不是我们通常所言的并发,在互联网时代,所讲的并发、高并发,通常是指并发访问。也就是在某个时间点,有多少个访问同时到来通常如果一个系统的日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算法是一种变相的轮询算法

原文地址:https://www.cnblogs.com/sz-xioabai/p/11380448.html

时间: 2024-10-23 16:10:22

(转)高并发和大流量解决方案 (#高并发架构相关概念#)的相关文章

高并发、大流量解决方案

一.高并发架构相关概念1.并发:是指并发的访问,也就是某个时间点,有多少个访问同时到来:通常如果一个系统的日PV在千万以上,有可能是一个高并发的系统:2.具体关心什么?QPS:每秒请求或查询的数量,在互联网领域,指每秒响应请求数:吞吐量:单位时间内处理的请求量(通常由QPS与并发数决定)响应时间:从请求发出到收到响应花费的时间,例如一个系统处理一个HTTP请求需要100ms,这个100ms就是系统的响应时间:PV:综合浏览量,即页面浏览量或者点击量,一个访客在24小时内访问的页面数量:UV:独立

高并发和大流量解决方案

序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机运行. 我们所说的高并发时什么? 上面的定义明显不是我们通常所言的并发,在互联网时代,所讲的并发,高并发,通常是指并发访问.也就是在某个事件点,有多少访问同时到来. 通常如果一个系统日PV在千万以上,有可能是一个高并发的系统.(有的公司完全不走技术路线,全靠机器堆,这不在我们讨论范围之内) QPS:每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指HTTP请求): QPS不等于并发连接数.QPS是每秒HTTP请求数量,并发

大型技术网站的技术( 高并发、大数据、高可用、分布式....)(一)

面对高并发.大流量.高可用.海量数据.用户分布广泛.网络情况复杂这类网站系统我们如何应对??? 第一阶段   一台服务器不行就上多台服务器    1.应用程序与数据服务分离        将应用程序.数据库.文件等资源放在一台服务器上,面对海量用户的访问只可能是崩崩崩的挂掉. so? 我们知道的是应用服务器.数据库服务器.文件服务器这三块对服务器的要求是不同的,应用服务器就需要大大的CPU来处理复杂的业务逻辑,数据库服务器需要快速磁盘检索      和 数据缓存也就是要大内存,而文件服务器要求的

PHP高并发和大流量怎么解决?

PHP高并发和大流量的解决方案 一 高并发的概念 在互联网时代,并发,高并发通常是指并发访问.也就是在某个时间点,有多少个访问同时到来. 二 高并发架构相关概念 1.QPS (每秒查询率) : 每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指HTTP请求) 2.PV(Page View):综合浏览量,即页面浏览量或者点击量,一个访客在24小时内访问的页面数量 --注:同一个人浏览你的网站的同一页面,只记做一次pv 3.吞吐量(fetches/sec) :单位时间内处理的请求数量 (通

高并发、大流量、大存储

①衡量网站的标准 pv值(page views):页面浏览量 uv值(unique visitor):独立访客②三大建站问题 1.高并发解决 负载均衡器 硬件:F5-BIGIP:立竿见影,效果非常好,价格昂贵 软件:lvs(linux virtual server)集成到linux的内核里面了,nginx 负载均衡器的策略: 轮询技术:就是负载均衡把请求轮流转发给 web服务器. 最少连接:负载均衡把请求转发给最空闲的web服务器. ip哈希: 同一地址的客户端始终请求同一台 web服务器. 2

PHP-高并发和大流量的解决方案

一  高并发的概念在互联网时代,并发,高并发通常是指并发访问.也就是在某个时间点,有多少个访问同时到来. 二  高并发架构相关概念1.QPS (每秒查询率) : 每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指HTTP请求) 2.PV(Page View):综合浏览量,即页面浏览量或者点击量,一个访客在24小时内访问的页面数量 --注:同一个人浏览你的网站的同一页面,只记做一次pv 3.吞吐量(fetches/sec) :单位时间内处理的请求数量 (通常由QPS和并发数决定) 4.响

PHP如何解决网站大流量与高并发

首先,确认服务器硬件是否足够支持当前的流量.普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻底解决性能问题. 其次,优化数据库访问. 前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站, 静态化往往不能满足某些功能.缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用这些文件,而不必再访问数据库,WordPress和Z-Blog都大量使用这种

PHP解决网站大数据大流量与高并发

1:硬件方面 普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的.主要影响服务器的速度 有:网络-硬盘读写速度-内存大小-cpu处理速度. 2:软件方面 第一个要说的就是数据库,首先要有一个很好的架构,查询尽量不用* 避免相关子查询 给经常查询的添加索引 用排序来取代非顺序存取,如果条件允许 ,一般MySQL服务器最好安装 在Linux操作系统中 .关于apache和nginx在高并发的情况下推荐

PHP解决网站大流量与高并发

1:硬件方面 普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的.主要影响服务器的速度 有:网络-硬盘读写速度-内存大小-cpu处理速度. 2:软件方面 第一个要说的就是数据库,首先要有一个很好的架构,查询尽量不用* 避免相关子查询 给经常查询的添加索引 用排序来取代非顺序存取,如果条件允许 ,一般MySQL服务器最好安装 在Linux操作系统中 .关于apache和nginx在高并发的情况下推荐