【发布时间】:2023-03-14 08:52:01
【问题描述】:
我是网站可扩展性领域的新手。您能否向我推荐一些使网站可扩展到大量用户的技术?
【问题讨论】:
标签: php mysql scalability
我是网站可扩展性领域的新手。您能否向我推荐一些使网站可扩展到大量用户的技术?
【问题讨论】:
标签: php mysql scalability
祝你好运
【讨论】:
您可能想查看此资源-highscalability.com。
【讨论】:
使用可靠的 OOP 技术开发您的网站。您将需要您的站点是模块化的,因为并非所有的性能瓶颈在开始时都是显而易见的。随着流量的增加,准备好重构您网站的某些部分。我写的第一句话将帮助您更轻松,更安全地完成它。另外,使用测试驱动开发,因为重构意味着新引入的错误,而好的 TDD 可以在它们投入生产之前很好地捕捉它们。
尽可能将客户端代码与服务器端代码分开,因为如果您的网站流量证明这一点是合理的,它们可能由不同的服务器提供服务。
阅读文章(例如阅读 YSlow 技巧)。
GL
【讨论】:
查看 Rasmus Lerdorf(PHP 的创建者)的 this talk
特别是第 8 页及以后。
【讨论】:
如果您希望您的网站能够扩展至超出单台服务器的能力,则需要仔细规划。设计使以下内容成为可能:-
除此之外,您所能做的就是对您的网站进行压力测试,找出瓶颈所在并尝试设计它们。
【讨论】:
非常相似:How Is PHP Done the Right Way?
可扩展性不是一个小问题,而且肯定比一个问题所能合理涵盖的内容更多。
例如,对于某些类型的应用程序,连接(在 SQL 中)无法扩展,这会带来各种缓存和分片策略。
Beanstalk 是高性能 PHP 站点中的另一个可扩展性和性能工具。和 memcache 一样(不同的类型)。
【讨论】:
按重要性排序:
如果您运行 PHP,请使用类似 APC 的操作码缓存。 (这一点非常重要,可以内置在下一代 PHP 中。)
使用YSlow 或Google Page Speed 来识别瓶颈。 (这将揭示影响客户端和服务器性能的网站结构问题。)
确保您的 Web 服务器为静态内容(图像、Javascript、CSS)发送正确的 Expires 标头,以便浏览器可以正确缓存它。 (YSlow 也会就此发出警告。)
使用 HTTP 加速器,例如 Varnish。 (This picture 说明了一切——他们已经有一个 HTTP 加速器。)
【讨论】:
许多人提到了用于识别瓶颈的工具,这当然是必要的。你不能在不知道哪里慢的情况下花时间加快速度。但是您需要知道的另一件事是您的目标可扩展性在哪里。如果 HR 部门的三个人都在使用它,那么花几个月的时间让你的网站扩展到与 Twitter 相同的用户数量是否物有所值?在产品需求中,您是否有已知的事务率、响应延迟或用户数量?如果是这样,请使用您的优化策略来定位这些数字。如果没有,找出那些,然后再将性能老鼠赶下洞。
【讨论】:
可扩展性的最大问题通常是共享资源,例如 DBMS。问题的出现是因为 DBMS 通常无法放松一致性保证。
如果您想在使用 MySQL 之类的工具时提高可扩展性,则必须更改架构设计以放松一致性。
例如,您可以分离您的数据库架构,让您的规范化数据模型用于写入,并为 90% 的读取操作提供一个复制的只读非规范化部分。只读数据可以分布在多个服务器上。
提高数据库可扩展性的另一种方法是对数据进行分区,例如将数据分离到每个部门的数据库中,然后在 ORM 或 DBMS 中聚合它们。
【讨论】:
除了其他建议之外,请考虑将您的网站分成几层,如multitier architecture。如果操作正确,您可以每层使用一台服务器。
【讨论】: