Erhöhung der Skalierbarkeit, Leistung und Verfügbarkeit von Anwendungen mithilfe von Amazon-RDS-Proxy - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erhöhung der Skalierbarkeit, Leistung und Verfügbarkeit von Anwendungen mithilfe von Amazon-RDS-Proxy

Erstellt von Anand Komandooru, Noorul Hasan, Venkat Nalajala und Varun Kumar, Amazon Web Services (AWS)

Oktober 2022

Dieser Leitfaden behandelt die Notwendigkeit von Datenbankverbindungspooling, die Herausforderungen im Zusammenhang mit der Implementierung einer selbst gehosteten Lösung und die Vorteile der Verwendung von Proxy für Amazon Relational Database Service (Amazon RDS) mit Amazon RDS für PostgreSQL in einer Anwendungsarchitektur auf Amazon Web Services (AWS).

Challenge

PostgreSQL wird mithilfe eines process-per-userClient/Server-Modells implementiert. Wenn eine neue Verbindung empfangen wird, startet der Hauptprozess einen untergeordneten Prozess, der diese neue Verbindung verarbeitet. Der Hauptprozess wartet dann auf die nächste Verbindung, und der untergeordnete Prozess kümmert sich um alle Aktivitäten im Zusammenhang mit dieser neuen Client-Verbindung. Für jede neue Verbindung, die von der Datenbank empfangen wird, wird ein neuer untergeordneter Prozess gestartet.

Viele Anwendungen, auch solche, die auf modernen Serverless-Architekturen basieren, können eine große Anzahl offener Verbindungen zum Datenbankserver haben. Sie können Datenbankverbindungen mit hoher Geschwindigkeit öffnen und schließen, wodurch Datenbankspeicher und Rechenressourcen aufgebraucht werden.

Bei Transaktionsanwendungen, die Verbindungen häufig öffnen und schließen, ist die Verbindungslatenz höher, was zu niedrigeren Transaktionen pro Sekunde führt. Dies erhöht die Anwendungslatenz.

Ein Failover tritt auf, wenn auf die primäre Datenbank-Instance nicht mehr zugegriffen werden kann und eine andere Instance die Rolle als neue primäre Instance übernimmt. Dadurch werden die Client-Verbindungen unterbrochen. Failovers können geplant werden, wenn sie durch administrative Maßnahmen wie ein fortlaufendes Upgrade ausgelöst werden, oder ungeplant, wenn sie aufgrund von Ausfällen auftreten. In beiden Fällen müssen die Betreiber die Ausfallzeiten reduzieren, um Unterbrechungen des Clients zu minimieren.

Übliche Praxis

Um den Herausforderungen der Skalierbarkeit und Leistung von Anwendungen zu begegnen, wird ein Verbindungspool verwendet. Verbindungspooling reduziert die Verbindungslatenz erheblich, indem bestehende Verbindungen wiederverwendet werden, und es ermöglicht einen höheren Datenbankdurchsatz (Transaktionen pro Sekunde) auf dem Server. Ein Verbindungspool stellt Anwendungsverbindungen, die nicht sofort bedient werden können, in eine Warteschlange oder drosselt sie aus dem Verbindungspool.

Nach der Implementierung dieses Verbindungspoolings ergeben sich weitere Herausforderungen. Betreiber müssen die Infrastruktur und Software für den Betrieb des Verbindungspooling-Services selbst verwalten. Für die Behandlung eines Failover-Ereignisses müssen Anwendungsentwickler die Verbindungskomplexität für jede Anwendung verwalten. Die Anwendung muss den Verbindungsfehler erkennen, einen neuen Primärserver finden und so schnell wie möglich wieder eine Verbindung zu diesem herstellen.

Empfehlung

Um die mit einer selbst gehosteten Verbindungspooling-Lösung verbundenen Herausforderungen zu reduzieren und gleichzeitig die Vorteile zu nutzen, empfehlen wir, Amazon-RDS-Proxy für Ihre Workloads zu testen.

RDS-Proxy ist ein vollständig verwalteter, hochverfügbarer Datenbank-Proxy. RDS-Proxy verwendet Verbindungspooling, um Anwendungen skalierbarer, widerstandsfähiger gegen Datenbankausfälle und sicherer zu machen.