4

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

先感谢您 ;-)

4

4 回答 4

14

这是一个相当广泛的问题,很难给你一个明确的答案——但有几个想法:

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


还有一些可能会给您一些想法的快速链接:

于 2010-03-01T17:33:56.093 回答
2

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

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

于 2010-03-01T17:35:18.990 回答
0

获得一个 PHP 加速器,你肯定会有显着的性能提升,维基百科有一个不错的列表可供选择。正如贾斯汀所说,获得内存缓存,这太棒了。

于 2010-03-01T21:09:19.250 回答
0

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

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

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

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

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

于 2010-03-01T23:13:53.480 回答