2013-01-01 59 views
1

我有一個網站在週末會獲得大量流量。訪問者在這個網站上做的是 - 他們回答測驗問題並儘快提交。將多個Amazon EC2實例寫入單個數據庫

當JavaScript嘗試從服務器獲取問題以及嘗試向數據庫中提交問題時,我的服務器獲取大量流量。

該應用程序是使用mysql和PHP創建的。當我的訪問者提交時,我希望他們能夠提交到單個數據庫而不是多個數據庫,因爲EBS卷只能連接到一個EC2實例。

流量很大,所以我需要更多實例來支持流量峯值期間的任何正在運行的實例。我能做些什麼來實現如此高的可用性,這爲我提供了訪問者提交的所有答案的單個存儲庫?謝謝。

回答

0

您可以使用Amazon RDS。基本上,它是一個沒有硬盤的實例外的數據庫。您可以設置多個實例以連接到您的RDS。

您還可以添加ec2實例進行水平縮放,以解決流量尖峯問題。

0

你有不同的選擇,能夠擴展您的應用程序:

  1. 如果一切都在單個實例上運行,現在,你可以把它們分開到兩個實例:一個用於Web服務器,另一個用於數據庫。使用EC2,您可以使用安全組來允許從Web服務器訪問數據庫。
  2. 如果Web服務器成爲瓶頸,請添加更多實例並使用Amazon的ELB在各種實例之間進行負載均衡。您甚至可以使用自動調節來動態增加和減少基於流量的正在運行的實例的數量。
  3. 如果數據庫是瓶頸,您可以先將它移動到更大的實例類型。您還可以將Amazon的RDS服務用於託管的MySQL服務。
  4. 爲了進一步增加容量,可以使用只讀副本(如果應用程序是讀取密集型的)來分發負載。

直到上面第4點,你應該能夠做到這一切,而無需修改你的應用程序。要進一步擴大規模,還有幾件事要看:

  • 添加緩存:使用memcached或亞馬遜的Elasticache。這可能會增加一個很大的提升。
  • 轉向Amazon的DynamoDB,您可以根據需要輕鬆添加讀寫容量。

祝你好運!

相關問題