2014-01-07 26 views
3

我正在構建一個白板Web應用程序,其中包含運行在Amazon EC2實例(目前僅有一個)上的客戶端的自包含「房間」。命令通過websockets發送到PHP服務器,該服務器將所有命令存儲在SQL數據庫中。涉及SQL時使用Amazon EC2進行自動縮放

到目前爲止,我使用的是Google Cloud SQL。我的計劃是學習如何使用EC2進行擴展,並讓所有實例使用相同的遠程數據庫。我瞭解到,由於遠程SQL服務器的寫入延遲爲200毫秒,而本地SQL服務器的寫入延遲爲0.5毫秒,因此無法工作。每次命令到達時服務器都會寫入數據。

我是新的可擴展性和分佈式系統。我的直覺告訴我,如果我的EC2和RDS實例位於相同區域,或者在EC2實例上本地使用SQL,則需要使用Amazon RDS並希望獲得毫秒級的延遲。我傾向於後者。這是我的問題:EC2是彈性。當我需要擺脫實例時會發生什麼?

我現在所能想到的是以某種方式將每個EC2實例的SQL數據複製到主實例(甚至可能是Google Cloud SQL!)。換句話說,每個「房間」的所有讀/寫都在本地發生,並最終被複制到主服務器進行長期存儲。如果一個房間在一個星期後重新打開,則另一個EC2實例可以從主服務器獲取數據,在本地使用它並在銷燬之前複製更改。

我的方法聽起來是否正確 - 在這裏複製正確的概念嗎?如果是這樣,我想要做的事情已經存在多少支持?也就是說,是否需要設置管理EC2實例並手動分發/收集SQL數據的主服務器(100%自定義實現),還是存在SQL的現有庫/機制,甚至可能還有EC2實例複製/管理?如果我的方法錯了,有什麼更好的方法?這是我不知道自己研究什麼的時候。謝謝!

+0

如果您關心數據庫寫入,則可能需要考慮使用AWS Elasticache。您仍然可以使用RDMS進行存儲。 – user602525

回答

0

我同意user02525也許看看使用Elasticache redis,這聽起來更符合你在做什麼。

+0

事實上,它聽起來像redis或memcached會在這裏有所幫助。當一個人開始達到記憶極限時,通常會發生什麼?我會將我的數據庫的一部分存儲到磁盤嗎?或者我會尋找不同的解決方案? – user3167423