我想获得一些关于如何开发扩展我的Web应用程序的策略的build议/最佳实践。 我在这里华而不实,performance出我有限的知识,但想填补我的知识空白。 尽可能多地学习这些东西是很有吸引力的,但是要意识到我需要寻求一些外部的帮助,所以作为一个普遍的问题,知道外包最简单的东西是很好的。
我的背景 – 我是一名开发人员,主要从事开发用户界面,并一直致力于Flash和PHP开发应用程序的function,使用户上传图像和video以在线共享。
系统架构如下 –
所以对于大部分我认为事情设置好可以扩大。 但是我并没有经验,如何扩大或pipe理高stream量的Web应用程序,所以将依靠我们的Web服务器托pipe公司来pipe理Web /应用服务器和数据库服务器的可扩展configuration的设置。
硬件/体系结构缩放 –
据我了解,这里的第一步是将Web服务器和数据库分开,并让数据库服务器自己运行,将Web服务器放在负载平衡器的后面,最后为数据库服务器configuration主/从configuration。 我应该问什么我的虚拟主机公司做? 什么是这样做的问题和什么是对我的AMFPHP服务,不同types的查询 – 写入和读取? 我有一个单独的脚本,其中包含数据库连接的详细信息,它包含在globals.php脚本中,因此我可以轻松地在一个步骤中更新连接详细信息。 我是正确的,在主/从configuration所有写入通常去主服务器和读取从奴隶? 这是否意味着我需要查看所有数据库查询,并确保它的“UPDATE”或“DELETE”查询发送到主数据库服务器? 在我的PHP代码中,数据库查询遍布在脚本中,并根据需要从函数内部调用。 我已经读了一些关于数据库抽象的知识,但并不完全理解这种方法的重要性。
缩放代码优化 –
我需要考虑如何改变代码以使其更具可伸缩性? PHP中有什么常见的东西受到缩放的影响?
安全 –
在考虑大量处理时,我需要注意哪些与安全有关的常见事项。
数据库优化,备份和恢复程序 –
为大型数据库的MySQL数据库实现自动数据库备份和恢复策略的最佳方式是什么? 我应该考虑拆分我的数据库 – 我将所有数据保存在一台服务器上,尽pipe有几个数据库,如用户成员信息数据库,用于保存用户上传数据的数据库,包含网站运行数据的数据库等作为与行政职能更相关的事情。 我希望能够分析数据库能够看到事情是如何工作的,并获得如何使用Web应用程序的图片,开发,所以假设定期拍摄数据库的快照和存储所以我有一个时间表,如何随着时间的推移发展,并使用某种数据库分析工具来查询这些快照,以跟踪事情的变化。 有什么好的build议可以帮助我和其他非技术人员分析数据并生成报告。
这些内容涵盖了我在制定放大策略时需要解决的问题。 人们认为我需要做什么才能成功解决上述问题? 我的假设是否正确? 我错过了什么? 我应该考虑什么其他的东西? 有没有很好的资源来处理这个问题? 如果我要招募某人来帮助解决这些问题,那么我应该期望完美的候选人有哪些技能/经验?
所有build议/经验/build议感激地收到
干杯!
只是一些指针,在我的投票结束后有所帮助。 考虑阅读:
Cal Henderson的“构build可扩展的网站”
Theo Schlossnagle的“Scalable Internet Architectures”
这两本书都是关于如何构build可扩展的Web应用程序的好书,涵盖了所使用的技术和思维/devise过程。
这个问题太宽泛,无法在这里回答 – 我build议阅读highscalability.com