外链论坛

 找回密码
 立即注册
搜索
查看: 2|回复: 1

用 PHP 编写支持高并发的网站,需要做什么处理?

[复制链接]

2718

主题

5704

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99100185
发表于 昨天 19:27 | 显示全部楼层 |阅读模式

前段时间有网友意见我说说PHP研发高并发网站的办法针对当前互联网发展的速度,这以后将是一个很平常的事情,关于高并发能够写一本书了,这儿就只简单说说,抛砖引玉一下,学无止境,期盼大众一起学习!

通常来讲,处理WEB高并发的有效手段都是采用可线性扩展的多层分布式架构,

Webserver (Nginx)  :这一层是能够容易分布式安排的,结合智能DNS解析能够简易地防止单点故障、实现区域拜访加速,结合LVS很容易实现负载平衡。这一层重点是负责处理静态请求和转发PHP请求至第二层的PHP处理节点,至于静态资源位置(http://misc.xxxx.com)能够单独拿出来安排直接运用商用的云存储服务(国内七牛不错,国外有Amazon S3)

PHP处理节点:一个节点其实便是一个监听特定端口的系统进程,webserver的请求经过负载平衡器(我用的AWS的loadbalancer)进行分发,很好实现分布式和负载平衡。我此刻用的还是php自带的php-fpm,其实facebook出的hhvm性能非常强悍,然则不可100%经过我项目的单元测试,等hhvm成熟过后能够平滑替换

高速缓存:用的memcached,这一层的功效重点是减轻数据库IO和加快热数据拜访,缓存策略与程序耦合度较高,不赘述,但简单地说有两种方式,一种是在程序的全局层面加一个缓存处理,这种办法代码耦合度低,然则有效命中率不高,有些项目不必定适应,另一种是在详细的数据存取处加缓存处理,这种办法程序耦合度较高,然则缓存命中率非常高,几乎没有没有效缓存存在,我用的是这种。

数据库 :我此刻的项目数据规模不大,暂时只用了单台数据库,然则程序规律上已做好了数据库线性扩展的准备。其实数据库层的扩展是老生常谈了,常用手段是分库分表,这一起需要在前期的代码就打下基本另一更平滑地手段是运用中间件,例如360的Atlas,阿里巴巴的cobar,淘宝的TDDL,中间件能够在不大范围变更代码的状况下扩展,然则详细运用场景还是有限的,详细项目还需单独考察。

其他:按照区别的项目,架构还能够选取性地运用队列,我此刻用的beantalkd,Redis是一个很好的选取。队列常用的运用环境是邮件发送和站内信息推送上面,然则在某些场景下能够做为核心数据库的缓冲,对应对大并发突发性流量是不错的选取

回复

使用道具 举报

2632

主题

5858

回帖

9911万

积分

论坛元老

Rank: 8Rank: 8

积分
99110575
发表于 13 小时前 | 显示全部楼层
顶楼主,说得太好了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-10-5 14:16 , Processed in 0.066653 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.