Netflix / astyanax

Deprecation

Astyanax è stato ritirato e non è più in fase di sviluppo attivo, ma può ricevere aggiornamenti delle dipendenze per facilitare la migrazione da Astyanax.

Al posto di Astyanax considerare l’utilizzo di DataStax Java Driver per Apache Cassandra, che è in fase di sviluppo attivo e incapsula molte delle lezioni apprese da Astyanax. Poiché il driver DataStax supporta solo il protocollo CQL (perché Apache Cassandra 4.x abbandonerà il protocollo Thrift), dovrai aggiornare tutte le tue query basate su Thrift in query CQL.

Hai la possibilità di continuare ad accedere alle famiglie di colonne legacy tramite l’opzione CQL “con storage compatto”. Tuttavia nella maggior parte (tutti?) dei casi d’uso l’opzione di archiviazione compatta legacy richiede effettivamente più spazio della nuova opzione di archiviazione CQL predefinita, quindi è davvero meglio migrare i dati alla nuova opzione di archiviazione predefinita.

Questa versione di Astyanax nasconde la sua dipendenza da cassandra-all in modo da poter selezionare opzionalmente qualsiasi versione di cassandra-unit che si desidera per test di unità/integrazione con diverse versioni di Cassandra. Quando si passa a questa versione di Astyanax potrebbe essere necessario:

  • Aggiungi esplicitamente tutte le dipendenze transitive di cassandra-all da cui si dipendeva in precedenza silenziosamente tramite i transitivi di Astayanax.
  • Se si stavano usando funzionalità interne di Astyanax che (involontariamente) esponevano pubblicamente classi di cassandra-all, è necessario:
    • Opzione A (migliore): Migrare da Astyanax a DataStax Java Driver per Apache Cassandra.
    • Opzione B (seconda migliore): Usa solo le interfacce pubbliche di astyanax-core (nessuna di esse espone le classi cassandra-all).
    • Opzione C: Passa i tuoi oggetti da “org.apache.cassandra” al pacchetto ombreggiato “com.netflix.astyanax.shaded.org.apache.cassandra “Astyanax ora dipende da.

Panoramica

Astyanax è un client Java di alto livello per Apache Cassandra.Apache Cassandra è un database a colonne altamente disponibile.

Caratteristiche

Una rapida panoramica può essere trovata sul Netflix Tech Blog. Alcune caratteristiche fornite da questo client:

  • Interfaccia orientata agli oggetti semplice e di alto livello per Cassandra.
  • Comportamento di fail-over sul lato client.
  • Astrazione del pool di connessioni. Implementazione di un pool di connessioni round robin.
  • Astrazione di monitoraggio per ottenere notifiche di eventi dal pool di connessioni.
  • Completo incapsulamento dell’API Thrift sottostante e delle strutture.
  • Tentativo automatico di host inattivi.
  • Ricerca automatica di ulteriori host nel cluster.
  • Sospensione degli host per un breve periodo di tempo dopo diversi timeout.
  • Annotazioni per semplificare l’uso di colonne composte.

Documentazione

Documentazione dettagliata delle caratteristiche e dell’uso di Astyanax può essere trovata sul wiki e sulla guida getting started.

IntelliJ: attualmente (giugno 2018) IntelliJ ha un bug che rende un errore “unfound” per i pacchetti trasferiti tramite unothermodule nello stesso progetto (e.Questo colpisce solo il progetto Astyanax stesso all’interno di IntelliJ; Astyanax costruisce ancora perfettamente bene tramite Gradle.Gli utenti Astyanax non sono interessati. Per maggiori dettagli vedi:

Artefatti

I vasetti Astyanax sono pubblicati su Maven Central. A partire da astyanax 1.56.27 il progetto è stato diviso in più sottoprogetti, ognuno dei quali deve essere estratto separatamente.

Artificati richiesti

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-thrift o astyanax-cql Scegliere il protocollo Thrift o CQL. Nota Cassandra 4.x+ abbandona il supporto per il protocollo Thrift.

Artifatti transitivi (dipendenze aggiunte automaticamente tramite un artefatto richiesto)

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-core L’interfaccia pubblica di astyanax.
com.netflix.astyanax astyanax-cassandra Funzioni specifiche di Cassandra condivise da astyanax-thrift e astyanax-cql
com.netflix.astyanax astyanax-cassandra-all-shaded Versione sfumata di cassandra-all per le poche classi usate da astyanax-cassandra in modo che i progetti siano liberi di selezionare versioni arbitrarie di cassandra-unit per i test di unità/integrazione con versioni più recenti di Cassandra. Nasconde la dipendenza di Astyanax da cassandra-all rifacendo le classi “org.apache.cassandra” a “com.netflix.astyanax.shaded.org.apache.cassandra”.

Optional artifacts

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-contrib Integrazione opzionale con altri moduli OSS di Netflix di uso comune.
com.netflix.astyanax astyanax-queue Implementazione della coda supportata dallo storage Cassandra. Usatela a vostro rischio — Cassandra può essere un pessimo motore di archiviazione per le code. Se insisti ad usare Cassandra per le code, imposta un TTL molto breve e usa TimeWindowCompactionStrategy (TWCS).
com.netflix.astyanax astyanax-entity-mapper
com.netflix.astyanax astyanax-recipes Implementazioni opzionali di alcuni pattern comuni. Usateli a vostro rischio; alcuni di questi sono popolari ma non sono adatti a Cassandra per molti casi d’uso (guardandovi, AllRowsReader).

Storia antica

Astyanax era il figlio di Ettore che era il fratello di Cassandra nella mitologia greca.

Storia moderna

Questo lavoro fu inizialmente ispirato da Ettore.

Leave a Reply