如何重写/重新编码网站以进行扩展?

时间:2010-03-01 17:24:14

标签: php ruby-on-rails cakephp scalability scale

你如何重写一个可扩展的网站?(流量)我主要使用PHP和一些Ruby on rails,我知道它是一个通用的问题。我只是想增加我的知识,所以任何建议都会有用。

提前谢谢你; - )

4 个答案:

答案 0 :(得分:14)

这是一个相当广泛的问题,要给出一个明确的答案是非常困难的 - 但有几个想法:

  • 首先,不要预先优化!
    • 确保您的申请有效;这是最重要的事情。
    • 而且,只有在必要时才开始优化。
  • PHP本身通常可以很好地扩展:
    • 添加更多Apache + PHP服务器,对用户进行负载均衡
    • 这往往很容易上班
  • 文件系统无法很好地扩展/轻松扩展:
    • 它不是跨服务器共享的
    • 共享文件系统(例如,使用NFS)有时会导致问题。
  • 在扩展时,数据库通常是最难的部分:
    • 拥有多个“写”服务器很难
    • 拥有多个“读取”服务器(通常使用复制)可能会成为维护的痛苦
    • 如果复制不够,你将不得不考虑一天或另一天的分片。
  • 使用大量缓存:您可以使用的缓存越多,您对数据库的查询越少,它就越好
    • memcached很棒,并且可以很好地扩展:只需添加几个服务器,你的缓存集群中就会有更多GB或内存
  • 使用反向代理,因此您的Apache + PHP服务器的工作量较少,也有帮助。


还有一些可能会给你一些想法的链接:

答案 1 :(得分:2)

一个提示 - 使用memcached或等效文件缓存数据,而不是直接查询数据库。

此外,扩展中最困难的部分是超越单个Web服务器。一旦你可以扩展到两个Web服务器,你就不会有太多的麻烦扩展到更多。

答案 2 :(得分:0)

获取PHP加速器,你肯定会有明显的性能提升,Wikipedia有一个很好的列表可供选择。正如贾斯汀所说,得到memcached,这太棒了。

答案 3 :(得分:0)

“规模”不是一种普遍的,具体的现象,而是一组特定标准下的绩效和能力的相对衡量标准。因此,您需要一组标准和一些指标才能使此对话具有任何意义。

我发现Apdex是一个非常有用的机制,用于思考和推理所需的指标:

  

Apdex(应用程序性能指数)   是一个由开发的开放标准   定义一个公司的联盟   标准化报告方法,   基准测试和跟踪应用程序   性能

像Apdex Index这样的系统的美妙之处在于它与用户对满意的应用程序响应能力的看法直接相关。在任何有关规模和性能的讨论中,这些是唯一真正重要的事情。

因此,例如,在以这种方式考虑您的系统时,您需要确定满足用户对响应能力的期望所需的响应率,您需要估计需要支持的流量级别,然后添加满足目标的容量。