使用Php开发可扩展的网站

4
我将开发一个社交+专业网络网站,使用Php(Zend或Yii框架)。我们的目标是每分钟超过5000个请求。我有开发高级网站的经验,使用MVC框架。
但这是我第一次考虑可扩展性进行开发。因此,如果有人能告诉我应该寻找哪些技术,我将非常感激。
我已经了解了memcache和APC。我应该选择哪一个?此外,我应该使用单个Mysql服务器还是主/从组合(如果是后者,则为什么和如何)?
谢谢!

1
我有点困惑 - 你说你知道memecache和APC,但是接着又问应该选择哪个,这让我觉得你并不真正了解它们,只是听说过。 - Peter Bailey
@Peter - 你说得对,我已经了解过它们,但从未使用过。 - Chetan
3个回答

4
您可能希望设计您的网站,至少使用主/从复制系统。在一开始,您不一定需要设置复制mysql盒子,但要设计应用程序,使数据库读取使用与写入不同的连接(即使在开始时,两个连接都连接到同一个db服务器)。
您还需要非常仔细地考虑您的缓存策略。我会看memcache,尽管使用Zend_Cache,您可以在早期使用基于文件的缓存,并在需要时换成memcache。除了记录缓存之外,您还需要考虑(部分)页面级缓存以及您想要计划/实施的策略类型。
您还需要仔细规划如何处理用户生成的媒体的存储和检索。您需要能够轻松将这些内容从主服务器移动到专用框来提供静态内容,或某种CDN(内容分发网络)。
此外,请考虑如何处理会话管理,并确保您不会做任何阻止您将来使用非基于文件的会话存储((专用)数据库或memcache)的事情。
如果您仔细思考并抽象数据存储/检索,那么您将朝着正确的方向前进。

2

Memcached是一种分布式缓存系统,而APC则是非分布式的主要是一个opcode缓存。

如果您的网站必须在不同的Web服务器上运行(负载均衡),则必须使用memcache进行分布式缓存。如果没有这种情况,只需使用APC及其缓存即可。


关于MySQL数据库,我建议使用可以根据需求自动扩展的网格托管。


1
根据您网站的要求,数据库很可能是瓶颈。MVC框架往往为了编码方便而牺牲性能,特别是在ORM的情况下。不要依赖ORM,而是基准测试不同的数据库查询方式,并查看哪种适合。您希望最小化数据库查询次数,一次获取一大块数据,而不是进行多个小查询。
如果您发现您的php代码是瓶颈(在优化之前进行分析),您可能会发现Facebook的hiphop很有用。

“数据库很可能成为您的瓶颈” - QFT。我曾对我之前工作过的一个网站进行了一些分析,发现95-99%的执行时间始终是由数据库查询所占比例。PHP自带一个名为<a href="http://www.xdebug.org/docs/profiler">Xdebug</a>的分析工具,非常有助于这类问题的解决。 - Brendan Long

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接