Netflix / astyanax

Deprecation

Astyanax har dragits tillbaka och är inte längre under aktiv utveckling, men kan få beroendeuppdateringar för att underlätta migrering från Astyanax.

Istället för Astyanax kan du överväga att använda DataStax Java Driver for Apache Cassandrawhich som är under aktiv utveckling och som innehåller många av de lärdomar som dragits från Astyanax. Eftersom DataStax-drivrutinen endast stöder CQL-protokollet (eftersom Apache Cassandra 4.x kommer att släppa Thrift-protokollet) måste du uppdatera alla dina Thrift-baserade förfrågningar till CQL-förfrågningar.

Du har möjlighet att fortsätta att få tillgång till äldre kolumnfamiljer via CQL-alternativet ”with compact storage”. Men i de flesta (alla?) användningsfall tar det gamla alternativet med kompakt lagring faktiskt mer utrymme än det nya standardalternativet för CQL-lagring, så det är egentligen bättre om du också migrerar dina data till det nya standardalternativet för lagring.

Denna version av Astyanax minskar sitt beroende av cassandra-all så att du kan välja vilken version av cassandra-unit som helst för enhets- och integrationstestning med olika versioner av Cassandra. När du uppgraderar till den här versionen av Astyanax kan du behöva:

  • Explicit lägga till alla transitiva beroenden av cassandra-all som du tidigare var tyst beroende av via Astayanax transitives.
  • Om du använde interna funktioner i Astyanax som (oavsiktligt) offentligt exponerade cassandra-all klasser måste du antingen:
    • Option A (bäst): Migrera från Astyanax till DataStax Java Driver for Apache Cassandra.
    • Option B (näst bäst): Du måste antingen använda dig av Astyanax eller DataStax Java Driver for Apache Cassandra:
    • Option C: Byt dina objekt från ”org.apache.cassandra” till det skuggade paketet ”com.netflix.astyanax.shaded.org.apache.cassandra” som Astyanax nu är beroende av.

Översikt

Astyanax är en Java-klient på hög nivå för Apache Cassandra.Apache Cassandra är en högtillgänglig kolumnorienterad databas.

Funktioner

En snabb översikt finns på Netflix Tech Blog. Några funktioner som tillhandahålls av den här klienten:

  • Hög nivå, enkelt objektorienterat gränssnitt till Cassandra.
  • Fail-over-beteende på klientsidan.
  • Abstraktion av anslutningspoolen. Implementering av en round robin-anslutningspool.
  • Övervakningsabstraktion för att få händelsemeddelanden från anslutningspoolen.
  • Komplett inkapsling av det underliggande Thrift-API:t och strukturerna.
  • Automatisk förnyad prövning av nedstängda värdar.
  • Automatisk upptäckt av ytterligare värddatorer i klustret.
  • Avstängning av värddatorer under en kort tidsperiod efter flera timeout.
  • Anteckningar för att förenkla användningen av sammansatta kolumner.

Dokumentation

Detaljerad dokumentation om Astyanax funktioner och användning finns på wikin och i guiden för att komma igång.

IntelliJ: för närvarande (juni 2018) har IntelliJ en bugg som renderar ett ”unfound”-fel för paket som flyttas via en annan modul i samma projekt (t.ex.Detta påverkar endast själva Astyanax-projektet i IntelliJ; Astyanax byggs fortfarande helt okej via Gradle.Astyanax-användare påverkas inte. För mer information se:

Artefakter

Astyanax jars publiceras till Maven Central. Från och med astyanax 1.56.27 har projektet delats upp i flera underprojekt, som alla måste dras in separat.

Krävda artefakter

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-thrift eller astyanax-cql Välj Thrift eller CQL-protokoll. Obs Cassandra 4.x+ tappar stödet för Thrift-protokollet.

Transitiva artefakter (beroenden läggs automatiskt till via en nödvändig artefakt)

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-core Astyanax offentliga gränssnitt.
com.netflix.astyanax astyanax-cassandra Cassandra-specifika funktioner som delas av astyanax-thrift och astyanax-cql
com.netflix.astyanax astyanax-cassandra-all-shaded Skuggad version av cassandra-all för de få klasser som används av astyanax-cassandra så att projekten är fria att välja godtyckliga versioner av cassandra-unit för testning av enheter/integration mot nyare versioner av Cassandra. Döljer Astyanax beroende av cassandra-all genom att refaktorisera ”org.apache.cassandra”-klasser till ”com.netflix.astyanax.shaded.org.apache.cassandra”.

Optionella artefakter

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-contrib Optionell integration med andra vanliga Netflix OSS-moduler.
com.netflix.astyanax astyanax-queue Köimplementering med stöd av Cassandra-lagring. Använd på egen risk — Cassandra kan vara en mycket dålig lagringsmotor för köer. Om du insisterar på att använda Cassandra för köer, sätt en mycket kort TTL och använd TimeWindowCompactionStrategy (TWCS).
com.netflix.astyanax astyanax-entity-mapper
com.netflix.astyanax astyanax-recipes Optionerliga implementationer av några vanliga mönster. Använd på egen risk; vissa av dessa är populära men passar inte bra för Cassandra i många användningsfall (jag tittar på dig, AllRowsReader).

Forntida historia

Astyanax var son till Hektor, som var Kassandras bror i den grekiska mytologin.

Modern historia

Det här arbetet inspirerades ursprungligen av Hektor.

Leave a Reply