我的基本问题是:如何开始构建可以快速增长的Web应用程序?
一点背景:我的客户要求提供Web应用程序。我不能详细说明,但它是一种电子商务和众筹资金。因此,他希望花一些钱,并期望一个可以无限增长的网站。
我打算用Zend Framework 2和MySql构建它。我的问题是我没有大型网络应用程序的经验。我到处读:没问题,只需启动项目,如果它变大,那么你可以对它做出反应并添加缓存,聚类等。
但这是真的吗,还是我必须从一开始就添加一些可扩展性机制?例如,云服务器(Amazon EC2)对文件系统采用不同的方法。以后可以切换吗? 或者负载平衡怎么样?我遇到了会话处理的问题,或者没有?那么MySql呢?或者最好直接使用NoSql方法?
所以我目前的计划是:
更新:
好的,我知道我的问题有点过于宽泛。因此,我尝试将其追溯到一些具体问题:
答案 0 :(得分:2)
本书的一些提示
并且在个人说明中:
现在我不记得这本书了,但是如果你得不到足够的信息,请通过电子邮件与我联系,我会查阅。
我是否必须从一开始就关注扩展,或者稍后添加负载平衡和会话存储等技术是否容易?
我从这本书中学到的是,在他们的案例中(Twitpic),在项目变得庞大并经历了大量停机时间之后,缩放开始了。在我看来,考虑一下你想要采取哪些缩放步骤是一件好事。当您的项目需要扩展时,可以扩展专用(My)SQL服务器或负载均衡器。但是当您计划使用会话存储服务时,我建议您从一开始就使用它,这样您就不必在需要扩展时重写代码。此外,一些会话存储服务在RAM中存储尽可能多的信息,这会降低执行时间。
另外,当您设置服务器时,我会说从Nginx开始,它使用的资源比Apache少。
答案 1 :(得分:2)
你的计划:
Step 1: Build the web application normally with ZF2 and MySql.
Step 2: Add caching like memcache and opcode
Step 3: MySql cluster or NoSql or load balancing or cloud server??
这是我的建议:
Step 1: Build the web app on CodeIgniter with MySQL (lighter, and faster than ZF2 with MySQL)
Step 2: Do memchace, opcode and don't forget phpfpm
Step 3: Use Amazon EC2 and use their Load Balancing features to load balance between servers.