可扩展性101:如何使用PHP设计可扩展的Web应用程序?

前端之家收集整理的这篇文章主要介绍了可扩展性101:如何使用PHP设计可扩展的Web应用程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立一个网络应用程序,并有几个快速的问题.从我所了解的,开始构建应用程序时,不要担心可扩展性,只能在流量增加时开始担心.然而,这是我的第一个网络应用程序,我不太确定我应该采取一种方法,我以一种特殊的方式设计事物,然后“修复”它们.我一直在阅读关于人们如何从一个星期或两个月内收到数百万用户的应用程序开始的故事.不是我会面对同样的情况,但我不禁要想,这些人怎么做呢?

目前,我在Lunarpages上购买了一个共享主机帐户,让我开始构建和测试应用程序.不过,我有兴趣通过使用云,例如亚马逊的EC2,以可扩展的方式学习如何构建相同的应用程序.从我的理解,我可以看到几个组件:

>有一个负载平衡器首先接收请求,然后决定在哪里路由每个请求
>然后,该请求由服务器副本处理,然后服务器副本处理请求并更新(如果需要)数据库,并将响应发送回客户端
>如果出现类似的请求,那么像memcached这样的缓存机制就可以进入图片并从缓存返回对象
>一个处理数据库复制的黑盒子

具体来说,我正在努力做以下事情:

>设置一个负载平衡器(我的作业揭示HAProxy是一个这样的负载平衡器)
>设置复制,以便数据库可以同步
>使用memcached
>配置Apache以使用多个Web服务器
>分区应用程序使用Amazon EC2和Amazon S3(我的应用程序将需要大量存储)
>最后,如何避免在使用Amazon服务时烧毁自己?因为这只是一个学习阶段,我可以用简单的负载平衡器和复制的2-3台服务器,但是我想避免不必要地付钱.

我可以找到关于个人主题的资源,但无法找到从大局开始的东西.有人可以帮我开始吗

就个人而言,我认为你应该考虑你的应用程序如何最初扩展 – 否则你会遇到问题.

我不是说你最初需要建立一个多服务器系统,但是如果你以后需要做的话,请注意现在的问题.

根据我的经验,这包括

>会话除非您使用“粘性”负载平衡,否则您必须具有某种方式在服务器之间共享会话状态.这可能意味着将会话数据存储在共享存储或DB中.>文件上传和复制.如果您允许用户上传文件,或者拥有允许您上传图像/文档的CMS,则需要满足这些文件还需要找到集群中其他节点的方式.但是,如果您已经下载了上述共享存储路由,则应该覆盖它.> DB可扩展性.如果您使用传统的DB服务器,您可能需要考虑如何在该级别实现可扩展性.这可能意味着编码您的应用程序,因此您可以使用一个连接字符串进行读取,另一个用于写入.然后,您可以使用一个主节点来实现复制,处理插入/更新将更改级联,以便只读取处理大部分工作的节点.>中间件您甚至可能想要实施某种面向消息的中间件解决方案,以完全切断业务逻辑功能,这将为您提供如何希望在将来扩展业务逻辑层的灵活性.虽然最初这将是很多并发症和工作,没有大量的回报.

原文链接:https://www.f2er.com/php/139634.html

猜你在找的PHP相关文章