[JAVA] Die Geschichte des Wechsels von Amazon RDS für MySQL zu Amazon Aurora Serverless

Einführung

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.

Was ist Amazon Aurora Serverles?

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.)

Verwendung von Amazon Aurora Serverles

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.

Das Highlight von Amazon Aurora Serverles

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.

Kompatibilität mit der Frühjahrssitzung

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.)

Auswirkungen auf die Anwendung

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.

Zusammenfassung

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

Die Geschichte des Wechsels von Amazon RDS für MySQL zu Amazon Aurora Serverless
Verwenden Sie aus irgendeinem Grund zu verwenden
Die Geschichte des Wechsels von Amazon RDS für MySQL zu Amazon Aurora Serverless
Verwendung von binding.pry für die Ansichtsdatei
[Ruby] Wie man Slice für Anfänger benutzt
Die Geschichte der Erhöhung von Spring Boot von 1.5 auf 2.1 Serie Teil2
Die Geschichte von Collectors.groupingBy, die ich für die Nachwelt behalten möchte
Die Geschichte von RxJava, das unter NoSuchElementException leidet
Die Geschichte der ersten Veröffentlichung der Android-App im Play Store.
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
Die Geschichte der Einführung der Ajax-Kommunikation in Ruby
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie
Die Geschichte des Hinzufügens der neuesten Node.js zu DockerFile
Für diejenigen, die MySQL für die Datenbank in der Umgebungskonstruktion von Rails6 ~ verwenden möchten.
Von der Einführung des Geräts bis zur Erstellung der Benutzertabelle
Wie schreibe ich Scala aus der Perspektive von Java
Kommen Sie zu den Abkürzungen aus den fünf Beispielen für kursive Java-Listen
20190803_Java & k8s on Azure Die Geschichte vom Festivalbesuch
Die Geschichte des Werfens von BLOB-Daten von EXCEL in DBUnit
So erhalten Sie die längsten Informationen von Twitter ab dem 12.12.2016
Aus der Gewohnheit, Wertobjekte für ein objektorientiertes Verständnis zu schaffen
Die Idee von C # (Lambda-Ausdruck, für Satz) zu kauen
Die Geschichte, Java mithilfe der BitBucket-Pipeline nach Heroku zu bringen
Wiedereinführung in Java for Humanities 0: Den Akt der Programmierung verstehen
[Apache Tomcat] Die Geschichte der Verwendung von Apache OpenWebBeans zum Aktivieren von CDI
[Rails / Heroku / MySQL] So setzen Sie die Datenbank der Rails-App auf Heroku zurück
So erhalten Sie den Inhalt von Map mithilfe des for-Anweisungsmemorandums
Die Geschichte von toString () beginnt mit der Übergabe eines Arrays an System.out.println
[Schienen] So ändern Sie den Seitentitel des Browsers für jede Seite
Vom jungen Java (3 Jahre) bis zu Node.js (4 Jahre). Und der Eindruck, nach Java zurückzukehren
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
Eine Geschichte über den Wechsel von Fähigkeiten von COBOL, das Ende der 20er Jahre 5 Jahre lang gepflegt wurde, zu einer Web-Sprache