本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon RDS Proxy 提高應用程式可擴展性、效能和可用性
建立者:Anand Komandooru、Noorul Hasan、Venkat Nalajala 和 Varun Kumar,Amazon Web Services (AWS)
2022 年 10 月
本指南將逐步介紹資料庫連線集區的需求、與實作自託管解決方案關聯的挑戰,以及在 Amazon Web Services (AWS) 上的應用程式架構中將 Amazon Relational Database Service (Amazon RDS) Proxy
挑戰
PostgreSQL 是使用process-per-user用戶端/伺服器模型
許多應用程式 (包括在現代無伺服器架構建置的應用程式) 可以具有大量與資料庫伺服器的開放連線。其可能會以高速率開啟和關閉資料庫連線,從而耗盡資料庫記憶體和運算資源。
頻繁開啟和關閉連線的交易應用程式將遇到較高的連線延遲,從而導致每秒交易數較低。這將增加應用程式延遲。
在主要資料庫執行個體變得無法存取且另一個執行個體接管而成為新的主要資料庫時,會發生容錯移轉。這會中斷用戶端連線。在容錯移轉由管理動作 (例如滾動升級) 造成時,容錯移轉可能是規劃之內的;在容錯移轉由於故障而發生時,容錯移轉故障轉移可能是未規劃的。在這兩種情況下,操作員必須減少停機時間,以盡量減少對用戶端的干擾。
常見做法
為了解決應用程式可擴展性和效能的挑戰,請使用連線集區。連線集區透過重複使用現有連線來顯著減少連線延遲,並在伺服器上實現更高的資料庫輸送量 (每秒交易數)。連線集區會將無法立即從連線集區提供服務的應用程式連線排入佇列或限流。
實作此連線集區後會出現其他挑戰。操作員必須自行管理基礎設施和軟體來操作連線集區服務。為了處理容錯移轉事件,應用程式開發人員必須管理每個應用程式的連線複雜性。應用程式必須偵測連線故障,探索新的主要連線,並儘快重新連接。
建議
為了減少與自託管連線集區解決方案關聯的挑戰,同時利用其優勢,我們建議對您的工作負載評估 Amazon RDS Proxy
RDS Proxy 是全受管、高度可用的資料庫代理。RDS Proxy 使用連線集區使應用程式更具可擴展性、對資料庫故障的恢復能力更強且更安全。