2

我有以下情況,公司在亞馬遜雲,美國1區和亞洲2區有兩個區域。在目前的架構中,AWS DynamoDB和MySQL-RDS解決方案在美國地區使用和安裝。亞洲地區持有商業邏輯的EC2服務器必須訪問美國地區的DynamoDB和RDS以獲取或更新數據。AWS DynamoDB和RDS多區域同步

該公司希望立即安裝在亞洲地區DynamoDB和MySQL-RDS以獲得更好的性能,所以在亞洲地區的EC2服務器可以來自同一地區獲得所需的數據。

主要的問題,現在是我們如何可以同步在兩個區域之間的數據,目前DynamoDB和RDS本來不支持多個區域。

在這種情況下是否有最佳做法?

+0

考慮使用AWS數據管道?我使用它來將Dynamo DB備份到S3,但沒有理由不使用它來在區域之間進行同步。 – marco

+0

感謝您的幫助,我們正在尋找區域之間的多主解決方案。通過使用數據管道,其中一個區域將成爲主控區域,另一個區域將成爲主控區域,因此所有更新都應在主控制器上完成,而從控制器應僅用於讀取(在同步後面寫入邏輯並不容易區域之間的更新。 當前RDS有一個內置的區域之間的讀取副本服務,但並沒有什麼對DynamoDB。 我們可以使用數據pipline每次更新?因爲我們不希望每次都複製整個數據庫。 – user3341697

+0

否則我們正在考慮使用SQS與dynamodb發送所有更新請求到從屬區域。 – user3341697

回答

2

訪問來自不同地域時,這是個大問題。

RDS關晚了跨區域的「讀」副本的一些支持。看看這裏。 http://aws.amazon.com/about-aws/whats-new/2013/11/26/announcing-point-and-click-database-replication-across-aws-regions-for-amazon-rds-for-mysql/

迪納摩DB不具備這一點。您可能需要考慮對數據進行分區(亞洲數據保持在亞洲,美國數據保留在美國)。另一種可能性是通過使用內存中緩存來提高速度。對於所有讀取,請勿始終訪問Dynamo DB:每次成功讀取後,將對象緩存在AWS Elasticache中 - 將此緩存設置爲靠近所需區域(您需要多個緩存羣集)。然後所有的讀取都會很快(因爲它們現在是本地區域)。當數據改變(寫入),然後使緩存中的對象無效。

但是這個方法只能加快讀取(但不能寫入)。通常,大多數應用程序都可以。

+0

請參閱:https://aws.amazon.com/blogs/aws/dynamodb-streams-preview/ {quote}跨區域複製庫是一個使用DynamoDB Streams的應用程序的預覽版近乎實時地保持DynamoDB表跨多個區域同步。當您在一個區域中寫入DynamoDB表時,更改會自動通過「交叉區域複製庫」傳播到其他區域的表中。{quote} – Charles

+1

請參閱:https://aws.amazon.com/blogs/aws/dynamodb-update-triggers-streams-lambda-cross-region -replication-app /跨區域複製應用程序支持 – Charles