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