Netflix / astyanax

Deprecation

Astyanax wurde eingestellt und wird nicht mehr aktiv weiterentwickelt, kann aber Aktualisierungen der Abhängigkeiten erhalten, um die Migration weg von Astyanax zu erleichtern.

Ersetzen Sie Astyanax durch den DataStax Java-Treiber für Apache Cassandra, der aktiv weiterentwickelt wird und viele Erkenntnisse aus Astyanax enthält. Da der DataStax-Treiber nur das CQL-Protokoll unterstützt (weil Apache Cassandra 4.x das Thrift-Protokoll aufgibt), müssen Sie alle Thrift-basierten Abfragen auf CQL-Abfragen umstellen.

Sie haben die Möglichkeit, weiterhin über die CQL-Option „mit kompaktem Speicher“ auf Legacy-Spaltenfamilien zuzugreifen. In den meisten (allen?) Anwendungsfällen benötigt die alte kompakte Speicheroption jedoch mehr Platz als die neue Standard-CQL-Speicheroption, so dass Sie wirklich besser dran sind, wenn Sie Ihre Daten auch auf die neue Standard-Speicheroption migrieren.

Diese Version von Astyanax schaltet die Abhängigkeit von Cassandra-all ab, so dass Sie optional eine beliebige Version von Cassandra-unit für Unit-/Integrationstests mit verschiedenen Versionen von Cassandra auswählen können. Wenn Sie auf diese Version von Astyanax aktualisieren, müssen Sie möglicherweise:

  • Explizit alle transitiven Abhängigkeiten von Cassandra-All hinzufügen, von denen Sie zuvor stillschweigend über Astayanax-Transitive abhängig waren.
  • Wenn Sie interne Funktionen von Astyanax verwendet haben, die (unbeabsichtigt) Klassen von Cassandra-All öffentlich zugänglich gemacht haben, müssen Sie entweder:
    • Option A (am besten): Migrieren Sie von Astyanax weg zu DataStax Java Driver for Apache Cassandra.
    • Option B (zweitbeste): Verwenden Sie nur die öffentlichen Schnittstellen des Astyanax-Kerns (keine von ihnen exponieren Cassandra-All-Klassen).
    • Option C: Wechseln Sie Ihre Objekte von „org.apache.cassandra“ auf das schattierte „com.netflix.astyanax.shaded.org.apache.cassandra“-Paket, von dem Astyanax jetzt abhängt.

Übersicht

Astyanax ist ein High-Level-Java-Client für Apache Cassandra.Apache Cassandra ist eine hochverfügbare spaltenorientierte Datenbank.

Funktionen

Einen kurzen Überblick findet man im Netflix Tech Blog. Einige Funktionen, die dieser Client bietet:

  • Einfache, objektorientierte Schnittstelle zu Cassandra auf hohem Niveau.
  • Failover-Verhalten auf der Client-Seite.
  • Verbindungspool-Abstraktion. Implementierung eines Round-Robin-Verbindungspools.
  • Überwachungsabstraktion, um Ereignisbenachrichtigungen vom Verbindungspool zu erhalten.
  • Vollständige Kapselung der zugrundeliegenden Thrift-API und -Strukturen.
  • Automatische Wiederholung von ausgefallenen Hosts.
  • Automatische Erkennung zusätzlicher Hosts im Cluster.
  • Suspendierung von Hosts für eine kurze Zeit nach mehreren Timeouts.
  • Anmerkungen zur Vereinfachung der Verwendung von zusammengesetzten Spalten.

Dokumentation

Eine ausführliche Dokumentation der Funktionen und der Verwendung von Astyanax finden Sie im Wiki und im Getting Started Guide.

IntelliJ: Derzeit (Juni 2018) hat IntelliJ einen Fehler, der einen „unfound“-Fehler für Pakete ausgibt, die über ein anderes Modul im selben Projekt verschoben werden (z.Dies betrifft nur das Astyanax-Projekt selbst innerhalb von IntelliJ; Astyanax lässt sich weiterhin problemlos über Gradle bauen; Astyanax-Nutzer sind nicht betroffen. Für weitere Details siehe:

Artefakte

Astyanax jars werden in Maven Central veröffentlicht. Ab astyanax 1.56.27 wurde das Projekt in mehrere Unterprojekte aufgeteilt, von denen jedes separat eingezogen werden muss.

Erforderliche Artefakte

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-thrift oder astyanax-cql Wählen Sie das Thrift oder CQL Protokoll. Hinweis: Cassandra 4.x+ unterstützt das Thrift-Protokoll nicht mehr.

Transitive Artefakte (Abhängigkeiten werden automatisch über ein erforderliches Artefakt hinzugefügt)

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-core Astyanax’s öffentliche Schnittstelle.
com.netflix.astyanax astyanax-cassandra Cassandra-spezifische Funktionen, die von astyanax-thrift und astyanax-cql
com.netflix.astyanax astyanax-cassandra-all-shaded Schattierte Version von cassandra-all für die wenigen Klassen, die von astyanax-cassandra verwendet werden, so dass Projekte frei sind, beliebige Versionen von cassandra-unit für Unit-/Integrationstests gegen neuere Versionen von Cassandra zu wählen. Versteckt die Abhängigkeit von Astyanax von cassandra-all durch Refactoring von „org.apache.cassandra“ Klassen zu „com.netflix.astyanax.shaded.org.apache.cassandra“.

Optionale Artefakte

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-contrib Optionale Integration mit anderen häufig verwendeten Netflix OSS-Modulen.
com.netflix.astyanax astyanax-queue Queue-Implementierung, die auf Cassandra-Speicher basiert. Verwendung auf eigene Gefahr – Cassandra kann eine sehr schlechte Speichermaschine für Warteschlangen sein. Wenn Sie darauf bestehen, Cassandra für Warteschlangen zu verwenden, setzen Sie eine sehr kurze TTL und verwenden Sie TimeWindowCompactionStrategy (TWCS).
com.netflix.astyanax astyanax-entity-mapper
com.netflix.astyanax astyanax-recipes Optionale Implementierungen einiger gängiger Muster. Die Verwendung erfolgt auf eigene Gefahr; einige davon sind beliebt, aber für viele Anwendungsfälle nicht gut für Cassandra geeignet (ich schaue dich an, AllRowsReader).

Antike Geschichte

Astyanax war der Sohn von Hektor, der in der griechischen Mythologie der Bruder von Kassandra war.

Neuere Geschichte

Dieses Werk wurde ursprünglich von Hektor inspiriert.

Leave a Reply