如何扩展PHP应用程序(服务器、mysql、memcache)
我目前正在为瑞士的一个社会项目创建一个网站 在出现用户溢出之前,我想让应用程序按比例运行 我自己回答了很多问题,但还有一些问题没有回答 我解释我想做什么如何扩展PHP应用程序(服务器、mysql、memcache),php,codeigniter,scalability,Php,Codeigniter,Scalability,我目前正在为瑞士的一个社会项目创建一个网站 在出现用户溢出之前,我想让应用程序按比例运行 我自己回答了很多问题,但还有一些问题没有回答 我解释我想做什么 首先 一开始,应用程序将只有一台服务器(短时间),其中包含DNS、PHP、Mysql、Data和memcache 秒 那我就把它们一分为二 DNS、Mysql、memcache 数据,PHP 第三 这就是问题所在,我不知道如何在这里做到这一点以保持应用程序正常运行 我可以做到: 前端:负载均衡器、memcache、DNS Web1:PHP
首先 一开始,应用程序将只有一台服务器(短时间),其中包含DNS、PHP、Mysql、Data和memcache
秒 那我就把它们一分为二
第三 这就是问题所在,我不知道如何在这里做到这一点以保持应用程序正常运行 我可以做到:
提前感谢您的回答。记住您可以装载/共享文件夹 您将同步哪些数据
您可以考虑将数据放到数据库机器或其他机器上。db机器一开始通常是个好主意,因为它可能比常规web服务器具有更大的IO
最好设置一个SAN或类似设备,以便将数据保存在一个位置。数据的多个拷贝是一个很难处理的问题。按照这条路线,你也可以把数据库文件放在那里。据统计,瑞士有460万讲德语的人,150万讲法语的人,还有150万讲意大利语、罗马语和其他语言的人。所以我怀疑你会发现一台服务器就能满足你的需要。在遇到扩展问题之前,猜猜每个月或每天有多少人会访问您的站点,以了解您可以获得多大的规模所以,我认为您还不需要担心缩放问题!奖励:你不用担心这个问题的时间,你可以用来为你的用户解决其他问题。按照Flickr和Facebook等网站的使用顺序,有几种常见的方法可以扩展web服务:
- 基于概念(API、登录、媒体文件、广告、静态页面、动态页面)拆分服务器
- 基于不需要加入的概念(登录、长期报告、页面数据等)拆分数据库
- 编译/优化PHP和其他资源(精灵、编译css、zend)
- 添加缓存(前端、后端)
- 添加委派(循环等)
但是,在缩放之前,请测量。一组测试,计算您的容量,在需要之前不要进行优化。我看到一些可疑的事情:
- 您有一台SQL server,并且您将会话存储在一个站点上的数据库中,您希望在该站点上有极高的容量。如果有人登录,生成一个页面需要多少个查询?当您最终使用MySQL复制时,预期的速度会降低多少
- 如果使用群集FS,则所有内容都“保持”同步。当webserver 2上的构建B中断时,您不会以webserver 1上的构建A结束。如果你真的期望有那么多流量,那么在上传更改、同步所有节点所需的时间内,你只会激怒上千人
我使用OCFS2部署了在集群上运行的应用程序,其中有40多个节点没有问题,而OCFS2并不是可用的“最佳”集群FS。检查并考虑将会话保持在磁盘上。 AWS为分割服务提供了一些很好的工具:内容分发和S3用于静态元素、RDS和SimuldB用于分布式数据库,以及EC2用于可扩展的服务器资源。有10种方式可以让多到一千个Web服务器共享相同的文档根目录,检查服务器故障。在高容量站点的数据库中存储会话?您可能会对MySQL复制和查询负载平衡更感兴趣。@Onigoetz,我能知道您提出的最后一种方法吗。我甚至在尝试类似的网站。提前感谢您的响应。里德,您应该始终衡量性能,然后消除瓶颈。也就是说,如果这个网站需要快速扩展,那么为多个web服务器制定计划仍然是一个好主意。一旦您可以扩展到两个,大部分管道将到位以扩展到更多…OP需要使用群集FS并从数据库中获取会话。为登录用户生成一个页面需要多少查询?-1。。。答案并不能证明需要/不需要缩放,它提出了一个需要检验的假设(即,不需要缩放)。可能还有其他原因(除了用户数量)需要扩展。@Summer还需要记住的一点是,在SO上,这不仅仅是OP的问题,其他用户也可能会来这里寻找一个解决方案,在那里可能确实需要考虑。尽管你的答案在逻辑上似乎是正确的,但并不能解决真正的问题,但你的答案就像是有人发布了关于获得更强大的硬件的帖子,肯定能暂时解决问题,但实际上并不能解决核心问题。很遗憾,我给了你-1分。