日期:2011-12-08 17:22:00  来源:本站整理

<b>PHP搭建百万级网站架构技术揭秘</b>[服务器安全]

赞助商链接



  本文“<b>PHP搭建百万级网站架构技术揭秘</b>[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在理解过世界最大的PHP站点,Facebook的后台技术后,本日我们来理解一个百万级PHP站点的网站架构:Poppen.de. Poppen.de是德国的一个社交网站,相对Facebook、Flickr来说是一个很小的网站,但它有一个很好的架构,交融了很多技术,如 Nigix、MySql、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite、Red5以及Tsung.

 
统计信息
 
◆200万注册用户数;
 
◆2万并发用户数;
 
◆每天20万条私有消息;
 
◆每天25万登录次数;
 
◆项目团队有11个开辟人员,两个计划,两个系统管理员;
 
商业情势
 
该网站采取免费增值情势,用户可免得费利用下面任何服务:
 
◆搜索其他用户;
 
◆给好友发送消息;
 
◆上载图片和视频;
 
◆探求好友;
 
◆视频聊天;
 
◆更多…
 
但假如用户想享用不受限制发送消息和上载图片,那么就得按照需求支付差别范例的会员服务,视频聊天及网站其他服务也采取一样的战略.
 
工具箱
 
Nginx
 
Poppen.de 全部的服务都是基于Nginx服务上的.前端有两台Nginx服务器在顶峰期供应每分钟15万次恳求的负载,每个机械已经有四年寿命,并且只有一个CPU 和3GB RAM.Poppen.de拥有三台独立的图象服务器,由三台Nginx服务器为*.bilder.poppen.de供应每分钟8万次恳求服务.
 
Nginx 架构中一个很酷的计划就是有很多恳求是由Memcached处理的,因此恳求从缓存中获得内容而不需求直接拜候PHP机械.比方,用户信息页(user profile)是网站需求密集处理的内容,假如把用户信息页全部缓存到Memcached上,那么恳求直接从Memcached上获得内容. Poppen.de的Memcached每分钟可以处理8000次恳求.
 
架构中有三个Nginx图象服务器供应本地图象缓存,用户上载图 像到一此中央文件服务器.当向这三个Nginx之一中恳求图象时,假如服务器本地中没有存在该图象,则从中央文件服务器下载到该服务器上作缓存并供应服 务.这种负载均衡的分布式图象服务器架构计划可以减轻主要存储设备的负载.
 
PHP-FPM
 
该网站运行在PHP- FPM上.共有28台双CPU、6GB内存的PHP机械,每个机械上运行100个PHP-FPM的工作线程.利用启用了APC的PHP5.3.x. PHP5.3可以降低CPU和内存利用率的30%以上.
 
程序代码是基于Symfony1.2框架之上开辟的.一是可以利用外部资源,二是 可以提高项目开辟进度,同时在一个闻名的框架上可以让新开辟人员更简单加入到团队中来.固然没有任何事情都是十全十美的,但可以从Symfony框架中得 到很多好处,让团队可以更多的精神放在Poppen.de的业务开辟上去.
 
网站性能优化利用XHProf,这是Facebook开源出来的一个类库.这个框架非常简单本性化和配置,可以可以缓存大部份高代价的服务器计算.
 
MySQL
 
MySQL是网站 主要的RDBMS.网站又几个MySql服务器:一台4CPU、32GB的服务器存储用户相关信息,如基本信息、照片描写信息等.这台机械已经利用了4 年,下一步筹划会利用同享集群来替换它.目前仍基于这个系统上举行计划,以简化数据拜候代码.按照用户ID举行数据分区,因为网站中大部份信息都是以用户 为中央的,如照片、视频、消息等.
 
有三台服务器按主-从-从配置架构供利用户论坛服务.一台从服务器负责网站自定义消息存储,到目前有 2.5亿条消息.别的四台机械为主-从配置关系.别的由4台机械配置成NDB族群专门服务于密集型写操作数据,如用户拜候统计信息.
 
数据表计划尽大概避免关联操作,尽大概缓存最多的数据.当然,数据库的构造化标准已经完好被破坏掉了.因此,为了更简单搜索,数据库计划成立了数 据发掘表.大部份表是MyISAM型表,可以供应快速查找.目前的问题是越来越多的表已经全表锁住了.Poppen.de正考虑往XtraDB存储引擎上 迁移.
 
Memcached
 
网站架构中Memcached利用相当多,超越45GB的高速缓存和51个节点.缓存了Session会话、视图缓存以及函数履行缓存等.架构 中有一个系统 当记录被改正时可以自动地把数据更新到缓存中去.将来改进缓存更新的大概筹划是利用新的Redis Hash API大概MongoDB.
 
RabbitMQ
 
在 2009年中开始在架构中利用RabbitMQ.这是一个很好的消息办理筹划,便于布置和集合到这个架构中去,在LVS后运行了两台RabbitMQ服务 器.在上个月,已经把更多的东西集成到该行列中,意味着同一时刻有28台PHP服务器每天要处理50万次恳求.发送日记、邮件告诉、系统消息、图象上载等 更多的东西到这个行列中.
 
利用PHP-FPM中的fastcgi_finish_request()函数集成行列消息,可以把消息异步发 送到行列中.当系统需求给用户发送HTML或JSON格局呼应时,就调用这个函数,这样用户就没有必要等到PHP脚本清理.
 
这个系统可以改进架构资源管理.比方,在顶峰期服务每分钟可以处理1000次登录恳求.这表示有1000并发更新用户表保存用户的登录时间.由 于利用了行列机制,可以 按相反的次序来运行这些查询.假如需求提高处理速度,只需求增添更多的行列处理者便可,乃至可以增添更多的服务器到这集群中去,而不需求改正任何配置和部 署新节点.
 
CouchDB
 
日记存储CouchDB运行在一台机械上.在这台机械上可以按照模块/行为举行日记查询 /分组,大概按照错误范例等等.这对定位问题非常有效.在利用日记聚合服务CouchDB之前,不得不逐台登录到PHP服务器上设法日记解析定位问题,这 是非常麻烦的.而目前把全部的日记集合到行列中保存到CouchDB中,可以集合举行问题查抄和解析.
Graphite
 
网站利用Graphite采集网站及时信息并统计.从恳求每个模块/行为到Memcached的命中和未命中、RabbitMQ状况监控以及 Unix负载等等.Graphite服务平均每分钟有4800次更新操作.实践已经证实要监测网站发发生什么是非常有效的,它的简单文本协议和画图功效可 以便利地即插即 用的方法用于任何需求监控的系统上.
 
一件很酷的事情是利用Graphite同时监控了网站的两个版本.一月份布置了Symfony框架新 版本,从前代码作为一个备份布置.这就意味着网站大概会面对性能问题.因此可以利用Graphite来对两个版本在线举行比较.
 
发现新版本上的Unix负载表较高,于是利用XHProf对两个版本举行性能解析,找出问题所在.
 
Red5
 
网站为用户也供应了两种范例的视频服务,一种是用户自己上载的视频,别的一种是视频聊天,用户视频互动和分享.到2009年年中,每月为用户供应17TB的流量服务.
 
Tsung
 
Tsung 是一个Erlang编写的分布式基准解析工具.在Poppen.de网站中主要用于HTTP基准解析、MySQL与其他存储系统(XtraDB)的比较分 析.用一个系统记录了主要的MySQL服务器的流量,再转换成Tsung的基准会话.然后对该流量举行回放,由Tsung产生数以千计的并发用户拜候实行 室的服务器.这样便可以在实行环境中与真实场景非常接近.   以上是“<b>PHP搭建百万级网站架构技术揭秘</b>[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .