透過 AWS RDS 跨區域複製掌握資料庫延遲

透過 AWS RDS 跨區域複製掌握資料庫延遲

我的應用程式設定在 3 個區域(歐盟、亞太地區、美國),主 MySQL RDS 位於 eu-west-1,只讀副本位於其他區域。

這對於讀取查詢非常有用,區域特定的應用程式可以非常快速地連接到其本地只讀副本RDS,但是當我的應用程式需要執行寫入查詢時,它必須連接到eu-west-1 中的主資料庫。

當從 US 或 AP 寫入主 DB 時,延遲很大,通常需要 2.5 秒左右才能完成插入。

我一直在努力尋找有關如何克服這個問題的任何信息,Aurora 在全球資料庫的論壇和教程中出現了很多,但它需要複製實例類型,其中 db.r5 是最小值,很快就會變得非常運行多個實例時成本高。

有人遇到過向主資料庫緩慢跨區域寫入的問題嗎? VPC 對等互連是否有助於加快速度?

答案1

這不是完整的答案,更多的是一些嘗試的想法和不適合評論框的問題。請盡量克制住投反對票的衝動:)

VPC 對等互連絕對值得一試,這樣流量保留在 AWS 主幹上這應該會稍微減少延遲。我不知道這會有多大幫助。這三個區域的 ping 間隔為 200 - 300 毫秒,因此總是會有一些延遲。

我懷疑客戶端和資料庫之間的對話是對一個插入的多個請求 - 例如建立連接、連接到特定資料庫、插入、提交、關閉。如果是這種情況,減少延遲會有所幫助,但刪除一些步驟更為重要。您是否正在使用連線池,因此連線已開啟?我懷疑 VPC 對等和一般優化這將是比以下任一想法更好的解決方案。

有什麼辦法可以讓更新異步嗎?如果您可以將寫入放入在單一區域中處理的 SQS 佇列中,則可能會在一兩秒內完成。這可能是對直接資料庫連線的最佳化,具體取決於它的速度。

多主機是另一種選擇,使用資料庫本機複製功能。我不完全確定您是否可以在 RDS 中執行此操作,但也許值得一看是否可能以及優點/缺點。如果您希望人們同時更新同一條記錄,您就必須防止這種情況發生。

另一種選擇是分片,將特定使用者的資料儲存在特定的資料庫上。但這將使您的應用程式邏輯更加複雜。

相關內容