php怎么处理​高并发网站?

/ 0评 / 0

1,Webserver (Nginx) :这一层采用分布式部署,结合智能DNS解析可以简易地防止单点故障、实现区域访问加速,结合LVS很容易实现负载均衡。这一层主要是负责处理静态请求和转发PHP请求至第二层的PHP处理节点,对于静态资源地址可以单独拿出来部署,或者直接使用商用的云存储服务(国内七牛,又拍云,国外有Amazon S3)

2,PHP处理节点:一个节点其实就是一个监听特定端口的系统进程,webserver的请求通过负载均衡器进行分发,实现分布式和负载均衡。
3,高速缓存:用的memcached,这一层的作用主要是减轻数据库IO和加快热数据访问,缓存策略与程序耦合度较高,简单地说有两种方式,一种是在程序的全局层面加一个缓存处理,这种方法代码耦合度低,但是有效命中率不高,另一种是在具体的数据存取处加缓存处理,这种办法程序耦合度较高,但是缓存命中率非常高。

4,数据库 :数据规模不大,暂时可用单台数据库,但是程序逻辑上要做好数据库线性扩展的准备。数据库层的扩展常用手段是分库分表,这一块需要在前期的代码就打下基础,另外更平滑地手段是使用中间件,比如360的Atlas,阿里巴巴的cobar,淘宝的TDDL,中间件可以在不大范围变更代码的情况下扩展,但是具体的使用场景还是有限的,具体项目还需单独考察。

5,其他:根据不同的项目,架构还可以选择性地使用队列,Redis是一个很好的选择。队列常用的使用环境是邮件发送和站内消息推送上面,但是在某些场景下也可以作为核心数据库的缓冲,对应对大并发或者突发性流量也是不错的选择