Apache Ignite im Cluster
In einem vorherigen Beitrag haben wir beschrieben, wie wir Apache Ignite mit Spring Cache kombinieren, um häufige Datenbankabfragen performant zu cachen. Doch was passiert eigentlich unter der Haube, wenn ein Ignite-Cluster im Einsatz ist?
Apache Ignite ist eine verteilte In-Memory-Datenplattform. Benutzt man Clustering wird der Cache dabei nicht zentral, sondern im Cluster verteilt gehalten. Setzt man einen Cache partitioned auf, werden die Daten in ihm auf die Konten verteilt, dadurch kann auf den einzelnen Knoten Speicherbedarf minimiert werden. Wir benutzen Ignite aber vor allem im replicated Modus, dabei werden alle Daten auf allen Knoten gespeichert. Das garantiert Ausfallsicherheit.
Fällt nun ein Knoten aus, übernimmt ein Replikat automatisch dessen Daten – failover ohne Downtime. Neue Knoten lassen sich dynamisch hinzufügen, was eine elastische Skalierung erlaubt – ganz ohne manuellen Rebalancing-Aufwand.
Für unser Szenario – selten geänderte, aber häufig gelesene Matrizen – bedeutet das: Der Cache bleibt auch bei wachsender Last stabil und schnell. Durch das Cluster-Modell ist sichergestellt, dass der Cache nicht zum Flaschenhals wird.
Ignite ist damit nicht nur ein Cache – sondern ein echtes verteiltes System. Und Spring Cache nutzt das elegant im Hintergrund.