Von Amazon RDS für MySQL zu Amazon Aurora Serverless Ich hatte die Möglichkeit zu wechseln, also möchte ich so etwas wie einen Hinweis vorstellen. Dieser Artikel basiert auf Java, SpringBoot, aber das Wesentliche ist unabhängig von Sprache oder Framework, sodass Ihre Umgebung angemessen ist. Ich würde es begrüßen, wenn Sie es als lesen könnten.
Weitere Informationen finden Sie in den offiziellen Dokumenten. Das Hauptmerkmal ist jedoch, dass keine Instanz verwaltet werden muss. Es mag eine etwas grobe Analogie sein, aber mit einem Mechanismus wie der Datenbankversion von AWS Lambda startet der Datenbankserver, wenn die Datenbank verwendet wird. Es wird beendet, wenn Sie es nicht mehr verwenden, und Ihnen wird der Betrag der während dieser Zeit verwendeten Aurora Capacity Unit (ACU) in Rechnung gestellt. (Um genau zu sein, wird zusätzlich zur ACU eine zusätzliche Gebühr für Datenbankspeicher und E / A erhoben.)
In meinem Fall habe ich Amazon RDS für MySQL auf meinem internen System verwendet, aber ich habe zu Amazon Aurora Serverles gewechselt. Da dieses System grundsätzlich nur während der Geschäftszeiten verwendet wird und davon ausgegangen wird, dass keine sehr strenge Antwortzeit erforderlich ist, müssen Sie sich nicht zu viele Gedanken über die Zeit bis zum Start der Datenbank und außerhalb der Geschäftszeiten machen Es war ein geeignetes System für die Verwendung von Amazon Aurora Serverles, da ich es aus Kostengründen stoppen wollte.
Auf der anderen Seite scheint es nicht sehr gut für ein System geeignet zu sein, das eine schnelle Reaktion 24 Stunden am Tag, 365 Tage im Jahr erfordert. Daher ist es wichtig, die Eigenschaften des Systems zu verstehen und den geeigneten Dienst auszuwählen. Korrekt.
Es mag etwas verwirrend sein, süchtig zu sein, aber Sie müssen ein wenig vorsichtig sein, wenn Sie einen Datenbankverbindungspool verwenden. Abhängig vom verwendeten Framework und seinen Einstellungen besteht bei Amazon Aurora Serverles in vielen Fällen weiterhin eine konstante Verbindung zur Datenbank, wenn ein Verbindungspool verwendet wird. Wird in eine Situation fallen, in der es nicht aufhören wird. Um diese Situation zu vermeiden, müssen Sie die Einstellungen des Verbindungspools überprüfen oder den Verbindungspool stoppen.
In meinem Fall hat SpringBoot 2.0 einen Verbindungspool mit dem Namen HikariCP verwendet. Daher habe ich diese Einstellung geändert. Nur die folgenden Eigenschaften wurden geändert.
spring.datasource.hikari.minimum-idle=0
spring.datasource.hikari.idle-timeout=180000
spring.datasource.hikari.minimum-idle
ist die Mindestanzahl von Leerlaufverbindungen, die im Verbindungspool verwaltet werden, und spring.datasource.hikari.idle-timeout
ist, bis die Verbindung im Verbindungspool auf Leerlauf umschaltet. Zeit (Millisekunden).
Wenn Sie diese Einstellungen vornehmen, wird die Verbindung nach 180 Sekunden inaktiv sein, und die Verbindung wird aus dem Verbindungspool getrennt, da die inaktive Verbindung nicht aufrechterhalten wird. Dadurch konnte die Verbindung aus dem Verbindungspool getrennt werden, wenn sie nicht verwendet wurde, wodurch ein Status erstellt wurde, in dem Amazon Aurora Serverles gestoppt werden konnte.
Um die Nische noch weiter zu vergrößern, verwenden Sie Spring Session (https://spring.io/projects/spring-session), um die Sitzungen Ihrer Anwendung zu verwalten und Amazon Aurora Serverles für den Sitzungsspeicher zu verwenden. Braucht auch ein wenig Aufmerksamkeit. Spring Session gibt eine Abfrage aus, die abgelaufene Sitzungsinformationen regelmäßig löscht. Standardmäßig wird diese Abfrage jedoch jede Minute ausgegeben. Wenn jede Minute eine Abfrage ausgegeben wird, werden Amazon Aurora Serverles natürlich nicht gestoppt.
Sie können das Ausgabeintervall dieser Abfrage mit den folgenden Eigenschaften ändern. (Der Standardwert ist 0 * * * * *
)
spring.session.jdbc.cleanup-cron=0 0 0 * * 0
Mit den obigen Einstellungen wird die Löschabfrage jeden Sonntag um 00:00:00 Uhr ausgegeben. (Beachten Sie, dass diese Eigenschaft im Gegensatz zu cron "Sekunden, Minuten, Stunden, Tage, Monate, Tage" ist.)
In meinem Fall musste ich außer den obigen Konfigurationsänderungen nichts anderes als die JDBC-Verbindungszeichenfolge ändern. Es kann von der Größe der Datenbank abhängen, aber zumindest von den von mir unterstützten Systemen startet Amazon Aurora Serverles in etwa 20 bis 25 Sekunden und hat nach dem Start die gleiche Leistung wie zuvor. Die Anwendung wird ausgeführt.
Ich war wirklich überrascht, dass ich auf die gleiche Weise wie bei einer herkömmlichen relationalen Datenbank zu einer serverlosen Datenbank wechseln konnte, außer um den Verbindungspool herum. Der Teil des Verbindungspools kann von denjenigen erraten werden, die über Kenntnisse verfügen, sodass der Ausdruck, der im Artikel süchtig macht, möglicherweise nicht ehrlich angemessen ist. Solange die Annahmen erfüllt sind, halte ich es für einen sehr effektiven Service in Bezug auf Kosten und Betrieb. Warum also nicht einmal darüber nachdenken?
Recommended Posts