使用Php开发可扩展的网站

时间:2010-09-01 17:04:10

标签: php scalability

我将使用Php(Zend或Yii框架)开发一个社交+专业网络网站。我们的目标是每分钟超过5000个请求。我有使用MVC框架开发高级网站的经验。

但是,这是第一次,我将开发一些保持可扩展性的东西。所以,我真的很感激,如果有人能告诉我这些技术,我应该寻找。

我已经阅读了关于memcache和APC的内容。我应该找哪一个?另外,我应该使用单个Mysql服务器还是主/从组合(如果以后,那么为什么以及如何?)

谢谢!

3 个答案:

答案 0 :(得分:3)

您可能希望构建您的站点,至少使用主/从复制系统。您不一定需要设置复制mysql框,但是您需要设计应用程序,以便数据库读取使用与写入不同的连接(即使在开始时两个连接都连接到同一个数据库服务器)。

您还需要仔细考虑您的缓存策略。我会看看memcache,虽然使用Zend_Cache你可以在早期使用基于文件的缓存,并在需要时交换内存缓存。除了记录缓存之外,您还需要考虑(部分)页面级缓存,以及您希望在那里规划/实施哪种策略。

您还需要仔细规划如何处理用户生成媒体的存储和检索。您希望能够轻松地将这些内容从主服务器移动到专用的盒子上,以提供静态内容或某种CDN(内容分发网络)。

另外,考虑一下如何处理会话管理,并确保不做任何阻止您使用非基于文件的会话存储((专用)数据库或memcache)的事情。未来。

如果你仔细思考,抽象数据存储/检索,你将朝着一个良好的方向前进。

答案 1 :(得分:2)

Memcached是一个分布式缓存系统,而APC是非分布式的,主要是操作码缓存。

如果(且仅当)您的网站必须存在于不同的Web服务器(负载平衡),您必须使用memcache进行分布式缓存。如果没有,只需坚持使用APC及其缓存。


关于MySQL数据库,我建议根据需要自动缩放的网格主体。

答案 2 :(得分:1)

根据您网站的要求,数据库更有可能成为您的瓶颈。 MVC框架倾向于牺牲性能以便于编码,尤其是在ORM的情况下。不要依赖ORM,而是以不同的方式查询数据库并查看哪些适合。您希望最小化数据库查询的数量,一次获取一大块数据,而不是执行多个小查询。

如果您发现您的PHP代码是瓶颈(在优化之前对其进行配置),您可能会发现facebook的hiphop很有用。