【问题标题】:How to scale a web application [closed]如何扩展 Web 应用程序 [关闭]
【发布时间】:2014-09-13 01:47:33
【问题描述】:

我的基本问题是:如何开始构建一个可以快速增长的 Web 应用程序?

一点背景知识:我的一个客户要求提供一个 Web 应用程序。我无法详细说明,但这是电子商务和众筹之类的事情。所以他想花一些钱,并期望一个可以无限增长的网站。

我计划使用 Zend Framework 2 和 MySql 构建它。我的问题是我没有使用大型网络应用程序的经验。我到处阅读:没问题,只需启动项目,如果它变得很大,那么您可以对其做出反应并添加缓存、集群等。

但这真的是真的吗,还是我必须从一开始就添加一些可扩展性机制?例如,云服务器 (Amazon EC2) 对文件系统有不同的方法。以后可以换吗? 或者负载均衡呢?我在会话处理方面遇到问题,或者没有?那么MySql呢?还是直接从 NoSql 方法开始更好?

所以我目前的计划是:

  • 第 1 步: 使用 ZF2 和 MySql 正常构建 Web 应用程序。
  • 第 2 步:添加缓存,如 memcache 和操作码
  • 第三步:MySql cluster or NoSql or load balance or cloud server??

更新:

好的,我知道我的问题有点过于宽泛了。因此,我尝试将其归结为几个具体问题:

  • 最好直接从云服务器开始?
  • 云服务器能否无限增长?

【问题讨论】:

  • 任何客户都希望网站发展成为下一个 facebook - 您需要切实地确定需求范围并做出相应的计划。

标签: php mysql zend-framework2 cloud mysql-cluster


【解决方案1】:

你的计划:

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.

【讨论】:

  • 谢谢,但我的问题不在于使用哪个框架。我想知道我是否必须从一开始就添加一些扩展机制,或者以后切换到云服务器是否容易?
【解决方案2】:

扩展是一件复杂的事情,不同的项目有不同的需求。我最近读了一本关于扩展 PHP 应用程序的好书。也许这可以帮助你:https://leanpub.com/scalingphp

书中的一些提示

  • 传入请求的负载平衡器
  • 1 台 MySQL 主服务器用于写入和 x 台 mysql 从服务器用于读取(如果主服务器出现故障,可以升级从服务器
  • 使用会话存储我认为这本书推荐了 Reddis(不确定,这是几周前的事了)
  • 运行 Nginx 而不是 Apache

个人笔记:

  • 这可能与品味有关,但我会推荐 Laravel 作为 PHP 框架,它比 ZF 更轻巧并且(再次品味..)更优雅。

目前我不记得更多关于这本书的内容,但如果您无法获得足够的信息,请通过电子邮件与我联系,我会查找。

我是否必须从一开始就关注扩展,或者以后添加负载平衡和会话存储等这些技术是否容易?

我从书中学到的是,在他们的案例 (Twitpic) 中,扩展是在项目变得很大并经历了很多停机时间之后开始的。在我看来,考虑要采取哪些扩展步骤是一件好事。当您的项目需要扩展时,可以扩展专用的 (My)SQL 服务器或负载均衡器。但是当您计划使用会话存储服务时,我建议您从一开始就开始使用它,这样您就不必在需要扩展时重写代码。此外,一些会话存储服务在 RAM 中存储尽可能多的信息,从而降低执行时间。

另外,当您设置服务器时,我会说从 Nginx 开始,它使用的资源比 Apache 少。

【讨论】:

  • 那么为什么不告诉我一些你从书中学到的东西呢?
  • 感谢您提供此信息,但它尚未回答我的基本问题。我是否必须从一开始就关注扩展,或者以后添加负载平衡和会话存储等这些技术是否容易?关于框架:对于我的上一个项目,我比较了几乎所有的 PHP 框架。 ZF2 在我眼里拥有最好的代码质量和设计模式,用它来编程真的很开心。而且它并不像大家想象的那样慢..
  • 静态类和单例更优雅?哇...(我同意“hello world”应用程序更轻更胖,但优雅?不是在一百万年后:D)
猜你喜欢
  • 2016-11-01
  • 2015-07-04
  • 2010-10-28
  • 2012-12-13
  • 2015-07-06
  • 2019-09-22
  • 2021-12-23
  • 2015-12-03
  • 1970-01-01
相关资源
最近更新 更多