我最近被引入AWS,我非常喜歡它。然而,我正在問自己一些關於多區域架構的問題(這可能是愚蠢的)。AWS架構多區域
假設一個應用程序被歐洲人和亞洲人使用。我的第一個想法是在歐洲添加EC2實例,以及一個S3存儲桶來在歐洲保存靜態數據和SQS隊列以及ElastiCache。對於歐洲人來說這將非常快,但對於亞洲人來說會更慢。
爲了解決這個問題,我會爲CloudFront添加靜態數據,以便爲亞洲人快速提供圖像。然而,對服務器的請求(Ajax請求......)仍然會有一些延遲,所以解決方案是在新加坡/東京地區添加一個EC2實例。
然而,新的問題出現了:如果一個請求被分派到東京EC2實例,那麼如果它需要接收來自存儲在歐洲的SQS的消息或者再次訪問ElastiCache數據=>等待時間+區域間傳輸的成本。那麼我們需要在亞洲增加SQS和ElastiCache?
也許我錯過了一些東西,跨區域的AWS請求速度超快,但從我所瞭解的情況來看,如果我們想要快速體驗多區域,我們基本上需要在所有區域都複製所有服務(除了S3也許,因爲我們可以使用CloudFront,如果亞洲的SQS工作需要訪問歐洲的S3資源,我想我們可以忍受延遲)。
無論如何,我的理解是否正確?你有沒有關於如何構建面向多區域的應用程序的資源?
謝謝:)
感謝您的回答。由於我有兩個SQS隊列(一個在東京地區,一個在愛爾蘭),這是否意味着我必須在EC2中爲兩個不同的應用程序提供連接到正確的SQS隊列?還是Route 53智能足以根據位置發送到正確的SQS隊列? – 2013-04-06 22:10:30
生產到SQS不通過Route 53,因此您必須從您的應用程序中自行生成正確的隊列。路由53將根據延遲將請求發送到最近的終端(假定您是如何配置它的)。您的應用程序可以從兩個隊列中使用,只需注意遠程區域中的哪個隊列需要更長的時間。 – 2013-04-06 22:44:05