Netflix / astyanax

Deprecation

Astyanax er blevet pensioneret og er ikke længere under aktiv udvikling, men kan modtage afhængighedsopdateringer for at lette migrationen væk fra Astyanax.

I stedet for Astyanax kan du overveje at bruge DataStax Java Driver for Apache Cassandrawhich er under aktiv udvikling og indkapsler mange af de erfaringer, der er gjort fra Astyanax. Da DataStax-driveren kun understøtter CQL-protokollen (fordi Apache Cassandra 4.x vil droppe Thrift-protokollen), skal du opdatere alle dine Thrift-baserede forespørgsler til CQL-forespørgsler.

Du har mulighed for at fortsætte med at få adgang til ældre kolonnefamilier via CQL-indstillingen “with compact storage”. Men i de fleste (alle?) brugstilfælde tager den gamle kompakte lagringsmulighed faktisk mere plads end den nye standard CQL-lagringsmulighed, så det er faktisk bedre, hvis du også migrerer dine data til den nye standardlagringsmulighed.

Denne version af Astyanax skygger for sin afhængighed af cassandra-all, så du kan eventuelt vælge en hvilken som helst version af cassandra-unit, du vil, til enheds-/integrationstest med forskellige versioner af Cassandra. Når du opgraderer til denne version af Astyanax, skal du muligvis:

  • Forsøge eksplicit at tilføje eventuelle transitive afhængigheder af cassandra-all, som du tidligere var tavst afhængig af via Astayanax transitives.
  • Hvis du brugte interne funktioner i Astyanax, der (utilsigtet) offentligt eksponerede cassandra-all klasser, skal du enten:
    • Option A (bedst): Du skal migrere væk fra Astyanax til DataStax Java Driver for Apache Cassandra.
    • Mulighed B (næstbedste):
    • Mulighed C: Skift dine objekter fra “org.apache.cassandra” til den skraverede “com.netflix.astyanax.astyanax.shaded.org.apache.cassandra”-pakke, som Astyanax nu afhænger af.

Oversigt

Astyanax er en Java-klient på højt niveau til Apache Cassandra.Apache Cassandra er en meget tilgængelig kolonneorienteret database.

Funktioner

En hurtig oversigt kan findes på Netflix’ tekniske blog. Nogle funktioner, der leveres af denne klient:

  • Højniveau, enkel objektorienteret grænseflade til Cassandra.
  • Fail-over-adfærd på klientsiden.
  • Astraktion af forbindelsespulje. Implementering af en round robin-forbindelsespulje.
  • Overvågningsabstraktion for at få meddelelse om hændelser fra forbindelsespuljen.
  • Fuldstændig indkapsling af den underliggende Thrift API og strukturer.
  • Automatisk genforsøg af nedbrudte værter.
  • Automatisk opdagelse af yderligere værter i klyngen.
  • Suspension af værter i en kort periode efter flere timeouts.
  • Annotationer til forenkling af brugen af sammensatte kolonner.

Dokumentation

Detaljeret dokumentation af Astyanax’ funktioner og brug kan findes på wikien og i Getting started-guiden.

IntelliJ: I øjeblikket (juni 2018) har IntelliJ en fejl, som giver en “unfound”-fejl for pakker, der er flyttet via et andet modul i det samme projekt (f.eks.f.eks. skraverede klasser fra astyanax-cassandra-all-shaded). dette påvirker kun selve Astyanax-projektet i IntelliJ; Astyanax bygges stadig helt fint via Gradle. astyanax-brugere er ikke berørt. For flere oplysninger se:

Artefakter

Astyanax-jars er offentliggjort til Maven Central. Fra og med astyanax 1.56.27 er projektet blevet opdelt i flere underprojekter, som hver især skal trækkes ind separat.

Nødvendige artefakter

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-thrift eller astyanax-cql Vælg Thrift- eller CQL-protokol. Bemærk Cassandra 4.x+ dropper understøttelsen af Thrift-protokollen.

Transitive artefakter (afhængigheder, der automatisk tilføjes via et påkrævet artefakt)

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-core Astyanax’ offentlige grænseflade.
com.netflix.astyanax astyanax-cassandra Cassandra-specifikke funktioner, der deles af astyanax-thrift og astyanax-cql
com.netflix.astyanax astyanax-cassandra-all-shaded Skygget version af cassandra-all for de få klasser, der bruges af astyanax-cassandra, så projekter frit kan vælge vilkårlige versioner af cassandra-unit til enheds-/integrationstest mod nyere versioner af Cassandra. Skjuler Astyanax’ afhængighed af cassandra-all ved at refactoring af “org.apache.cassandra”-klasser til “com.netflix.astyanax.shaded.org.apache.cassandra”.

Optionelle artefakter

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-contrib Optionel integration med andre almindeligt anvendte Netflix OSS-moduler.
com.netflix.astyanax astyanax-queue Queueue-implementering understøttet af Cassandra-lagring. Brug på egen risiko — Cassandra kan være en meget dårlig lagringsmotor til køer. Hvis du insisterer på at bruge Cassandra til køer, skal du indstille en meget kort TTL og bruge TimeWindowCompactionStrategy (TWCS).
com.netflix.astyanax astyanax-entity-mapper
com.netflix.astyanax astyanax-recipes Optionelle implementeringer af nogle almindelige mønstre. Brug på egen risiko; nogle af disse er populære, men passer ikke godt til Cassandra i mange brugssituationer (jeg kigger på dig, AllRowsReader).

Oldtidshistorie

Astyanax var søn af Hektor, som var Kassandras bror i den græske mytologi.

Moderne historie

Dette arbejde blev oprindeligt inspireret af Hektor.

Leave a Reply