php高并发问题解决思路

qps多少才算高并发

首先是无状态前端机器不足以承载请求流量,须要进行水平扩展,通常QPS是千级。 而后是关系型数据库没法承载读取或写入峰值,须要数据库横向扩展或引入nosql,通常是千到万级。 以后是单机nosql没法承载,须要nosql横向扩展,通常是十万到百万QPS。 最后是难以单纯横向扩展nosql,好比微博就引入多级缓存架构,这种架构通常能够应对百万到千万对nosql的访问QPS。 固然面向用户的接口请求通常到不了这个量级,QPS递增大可能是因为读放大形成的压力,单也属于高并发架构考虑的范畴。php

 

PV和QPScss

好比微博天天1亿多pv的系统通常也就1500QPS,5000QPS峰值。前端

好比有人说:ajax

2C4G机器单机通常1000QPS。redis

8C8G机器单机可承受7000QPS。sql

 

php怎么处理高并发问题?

通俗来说,高并发是指在同一个时间点,有不少用户同时的访问同一 API 接口或者 Url 地址。它常常会发生在有大活跃用户量,用户高汇集的业务场景中。数据库

 

处理高并发的业务逻辑是:后端

前端:异步请求+资源静态化+cdn浏览器

后端:请求队列+轮询分发+负载均衡+共享缓存缓存

数据层:redis缓存+数据分表+写队列

存储:raid阵列+热备

网络:dns轮询+DDOS攻击防御

 

php处理高并发问题的方法

一、应用和静态资源分离

将静态资源(js,css,图片等)放到专门的服务器中。

二、页面缓存

将应用生成的页面缓存起来能够节省大量cpu资源。对于部分页面常常变换数据的,能够使用ajax来处理。

三、集群和分布式

集群,多台服务器具备相同的功能,主要起分流的做用。分布式,将不一样的业务放到不一样的服务器中,处理一个请求可能须要多台服务器,进而提升一个请求的处理速度。又分为静态资源集群和应用程序集群。后者较复杂,常常要考虑session同步等问题。

四、反向代理

客户端直接访问的服务器并非直接提供服务的服务器,它从别的服务器获取资源,而后将结果返回给用户。

代理服务器和反向代理服务器:

代理服务器是代咱们访获取资源,而后将结果返回。例如,访问外网的代理服务器。反向代理服务器是咱们正常访问一台服务器的时候,服务器本身调用了别的服务器。

代理服务器咱们主动使用,是为咱们服务的,不须要有本身的域名;反向代理是服务器本身使用的,咱们并不知道,有本身的域名。

五、CDN

CDN是一种特殊的集群页面缓冲服务器,和普通的集群的多台页面缓冲服务器相比主要区别是:其存放位置和分配请求方式不一样。

CDN的服务器分布在全国各地,接收到请求后会将请求分配到最合适的CDN服务器节点来获取数据。其每个CDN节点就是一个页面缓存服务器。

分配方式:

并非普通的负载均衡,而是专门的CDN域名解析服务器在解析域名的时候就分配好的。

通常的作法是:ISP那里使用CNAME将域名解析到一个特定的域名,而后再将解析到的那个域名用专门的CDN服务器解析(返回给浏览器,再访问)到相应的CDN节点。每一个节点可能也集群了多台服务器。

相关文章
相关标签/搜索