【问题标题】:Making multiple Amazon EC2 instances write to a single database使多个 Amazon EC2 实例写入单个数据库
【发布时间】:2013-01-02 17:45:37
【问题描述】:

我有一个网站,周末访问量很大。访问者在此网站上所做的是 - 他们回答测验问题并尽快提交。

当 javascript 尝试从服务器获取问题以及尝试提交到数据库时,我的服务器会获得大量流量。

应用程序是使用 mysql 和 PHP 创建的。当我的访问者提交时,我希望他们能够提交到单个数据库而不是多个数据库,因为 EBS 卷只能附加到一个 EC2 实例。

流量很大,所以我需要更多实例来支持在流量高峰期间运行的任何实例。我可以做些什么来实现如此高的可用性,为我的访问者提交的所有答案提供单一存储库?谢谢。

【问题讨论】:

    标签: amazon-ec2


    【解决方案1】:

    您可以使用 Amazon RDS。基本上,它是一个没有硬盘的实例之外的数据库。您可以设置多个实例来连接到您的 RDS。

    您还可以添加 ec2 实例进行水平扩展,以解决您的流量高峰问题。

    【讨论】:

      【解决方案2】:

      您有不同的选择来扩展您的应用程序:

      1. 如果现在一切都在一个实例上运行,您可以将它们分成两个实例:一个用于 Web 服务器,一个用于数据库。借助 EC2,您可以使用安全组来允许从 Web 服务器访问数据库。
      2. 如果 Web 服务器成为瓶颈,请添加更多实例并使用 Amazon 的 ELB 在各个实例之间进行负载平衡。您甚至可以使用自动扩缩功能根据流量动态增加和减少正在运行的实例数量。
      3. 如果数据库是瓶颈,您可以首先将其移至更大的实例类型。您还可以将 Amazon 的 RDS 服务用于托管 mysql 服务。
      4. 要进一步增加容量,您可以使用只读副本(如果应用是读取密集型应用)来分配负载。

      直到上面的第 4 点,您应该能够在不修改应用程序的情况下完成所有操作。为了进一步扩大规模,还有一些事情需要注意:

      • 添加缓存:使用 memcached 或 Amazon 的 Elasticache。这可能会带来很大的推动作用。
      • 改用 Amazon 的 DynamoDB 之类的东西,您可以在其中轻松根据需要添加读写容量。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2012-10-16
        • 2018-07-09
        • 2016-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-21
        相关资源
        最近更新 更多