Php 编写可伸缩网站的技巧
我是网站可伸缩性领域的新手。你能向我推荐一些使网站可扩展到大量用户的技术吗Php 编写可伸缩网站的技巧,php,mysql,scalability,Php,Mysql,Scalability,我是网站可伸缩性领域的新手。你能向我推荐一些使网站可扩展到大量用户的技术吗 在重负载下测试你的网站 监控所有统计数据 找到瓶颈 修复瓶颈 返回到1 祝您好运您可能希望查看此资源-。使用可靠的OOP技术开发您的站点。你需要你的网站是模块化的,因为不是所有的性能瓶颈在一开始就很明显。随着流量的增加,准备好重构站点的某些部分。我写的第一句话将帮助你更轻松、更安全地完成任务。另外,使用测试驱动的开发,因为重构意味着新引入的bug,好的TDD可以在它们投入生产之前捕获它们。 尽可能将客户端代码与服务器端代
祝您好运您可能希望查看此资源-。使用可靠的OOP技术开发您的站点。你需要你的网站是模块化的,因为不是所有的性能瓶颈在一开始就很明显。随着流量的增加,准备好重构站点的某些部分。我写的第一句话将帮助你更轻松、更安全地完成任务。另外,使用测试驱动的开发,因为重构意味着新引入的bug,好的TDD可以在它们投入生产之前捕获它们。
尽可能将客户端代码与服务器端代码分开,因为它们可能来自不同的服务器,如果您的站点流量证明了这一点。
阅读文章(例如阅读YSlow提示) GL由Rasmus Lerdorf(PHP的创建者)签出
特别是第8页及更高版本。如果您希望您的站点扩展到单个服务器的能力之外,您需要仔细规划。设计时应考虑以下因素:-
- 使您的数据库可以位于单独的服务器上。这通常不太难
- 确保您的所有静态内容都可以移动到CDN,因为这通常会从服务器上释放大量负载
- 准备好在硬件上花很多钱。更多的RAM和更快的磁盘帮助很大
- 当您需要将数据库或php从一台服务器拆分为多台服务器时,这会变得更加困难,因此要尽可能长时间地优化所有内容,包括代码、数据库模式、服务器配置以及您能想到的任何其他内容,以尽可能地推迟这最后一步
Beanstalk是高性能PHP站点中的另一个可伸缩性和性能工具。memcache(不同类型)也是如此。按重要性顺序排列:
许多人提到了识别瓶颈的工具,这当然是必要的。你不能在不知道什么地方慢的情况下,花大量的时间来加速。但是您需要知道的另一件事是您的目标可伸缩性在哪里。如果你的网站将被人力资源部的三个人使用,那么花几个月的时间将你的网站扩展到与Twitter相同的用户数量,是否物有所值?在产品的需求中,您是否有已知的事务速率、响应延迟或用户数?如果是这样,用你的优化策略瞄准这些数字。如果没有,在追查性能漏洞之前先找出这些问题。可伸缩性的最大问题通常是共享资源,如DBMS。问题的出现是因为DBMS通常无法放松一致性保证 如果您想在使用MySQL之类的东西时提高可伸缩性,就必须更改模式设计以放松一致性 例如,您可以分离数据库模式,使其具有用于写入的规范化数据模型,以及用于90%读取操作的复制只读非规范化部分。只读数据可以分布在多个服务器上
提高数据库可扩展性的另一种方法是对数据进行分区,例如,将数据分离到每个部门的数据库中,并在ORM或DBMS中进行聚合。除了其他建议外,还可以研究将站点分为多个层,如中所示。如果做得好,那么每层可以使用一台服务器。同意,我只想补充一点,缓存可能是创建大型站点时应该做的第一件事。是的。确保MySQL的缓存特性设置良好,并为代码使用健壮的缓存。在其他答案中提到了一些非常好的方法。在ORM层聚合数据会带来应用程序级的复杂性,这对于Ruby和PHP等语言来说可能会很慢。另外,它更难管理。