Aumento della scalabilità, delle prestazioni e della disponibilità delle applicazioni utilizzando il Server proxy per Amazon RDS - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aumento della scalabilità, delle prestazioni e della disponibilità delle applicazioni utilizzando il Server proxy per Amazon RDS

Creato da Anand Komandooru, Noorul Hasan, Venkat Nalajala, e Varun Kumar, Amazon Web Services (AWS)

Ottobre 2022

Questa guida illustra la necessità di un pool di connessioni al database, le sfide associate all'implementazione di una soluzione autogestita e i vantaggi dell'utilizzo del Proxy Amazon Relational Database Service (Amazon RDS) con Amazon RDS per PostgreSQL nell'architettura di un'applicazione su Amazon Web Services (AWS).

Challenge

PostgreSQL è implementato utilizzando un modello client/server. process-per-user Quando viene ricevuta una nuova connessione, il processo principale avvia un processo figlio per gestirla. Il processo principale attende quindi la connessione successiva e il processo figlio si occupa di tutte le attività relative a questa nuova connessione client. Viene avviato un nuovo processo figlio per ogni nuova connessione ricevuta dal database.

Molte applicazioni, incluse quelle basate su moderne architetture serverless, possono avere un gran numero di connessioni al server di database aperte. Potrebbero aprire e chiudere le connessioni al database a una velocità elevata, esaurendo la memoria del database e le risorse di calcolo.

Le applicazioni transazionali che aprono e chiudono frequentemente le connessioni subiscono una maggiore latenza di connessione, con conseguente riduzione del numero di transazioni al secondo. Ciò aumenta la latenza delle applicazioni.

Un failover si verifica quando l'istanza del database principale diventa inaccessibile e un'altra istanza assume il ruolo di nuova istanza principale. Ciò interrompe le connessioni client. I failover possono essere pianificati, quando sono indotti da azioni amministrative come un aggiornamento continuo, oppure non pianificati, quando si verificano a causa di errori. In entrambi i casi, gli operatori devono ridurre i tempi di inattività per minimizzare le interruzioni dei client.

Pratica comune

Per affrontare le sfide della scalabilità e delle prestazioni delle applicazioni, viene utilizzato un pool di connessioni. Il pool di connessioni riduce in modo significativo la latenza di connessione riutilizzando le connessioni esistenti e consente una maggiore velocità di trasmissione effettiva del database (transazioni al secondo) sul server. Un pool di connessioni crea sequenze o limita le connessioni delle applicazioni che non possono essere servite immediatamente dal pool di connessioni.

Dopo l'implementazione di questo pool di connessioni sorgono ulteriori sfide. Gli operatori devono gestire autonomamente l'infrastruttura e il software per utilizzare il servizio di pool di connessioni. Per gestire un evento di failover, gli sviluppatori di applicazioni devono gestire la complessità della connessione per ogni applicazione. L'applicazione deve rilevare l'errore di connessione, scoprire un nuovo processo principale e riconnettersi ad esso il più rapidamente possibile.

Raccomandazione

Per ridurre i problemi associati a una soluzione di pool di connessioni autogestita, sfruttandone al contempo i vantaggi, consigliamo di valutare il Server proxy per Amazon RDS per i tuoi carichi di lavoro.

Il Proxy per RDS è un proxy di database completamente gestito e ad alta disponibilità. Il Proxy per RDS utilizza i pool di connessioni per rendere le applicazioni più scalabili, più resistenti ai guasti del database e più sicure.