Netflix / astyanax

Dépréciation

Astyanax a été retiré et n’est plus en développement actif mais peut recevoir des mises à jour de dépendances pour faciliter la migration loin d’Astyanax.

A la place d’Astyanax, envisagez d’utiliser le pilote Java DataStax pour Apache Cassandraqui est en développement actif et encapsule beaucoup de leçons apprises d’Astyanax. Comme le pilote DataStax ne supporte que le protocole CQL (car Apache Cassandra 4.x abandonnera le protocole Thrift), vous devrez mettre à jour toutes vos requêtes basées sur Thrift en requêtes CQL.

Vous avez la possibilité de continuer à accéder aux anciennes familles de colonnes via l’option CQL « avec stockage compact ». Cependant, dans la plupart (tous ?) des cas d’utilisation, l’option de stockage compact héritée prend en fait plus d’espace que la nouvelle option de stockage CQL par défaut, donc vous êtes vraiment mieux de migrer également vos données vers la nouvelle option de stockage par défaut.

Cette version d’Astyanax nuance sa dépendance à cassandra-all afin que vous puissiez optionnellement sélectionner n’importe quelle versionde cassandra-unit que vous souhaitez pour les tests d’unité/d’intégration avec différentes versions de Cassandra. Lors de la mise à niveau vers cetteversion d’Astyanax, vous devrez peut-être :

  • Ajouter explicitement toutes les dépendances transitives de cassandra-all dont vous dépendiez auparavant silencieusement via les transitifs d’Astayanax.
  • Si vous utilisiez des fonctionnalités internes d’Astyanax qui exposaient (involontairement) publiquement les classes de cassandra-all,vous devez soit :
    • Option A (meilleure) : Migrer loin d’Astyanax vers le pilote Java DataStax pour Apache Cassandra.
    • Option B (deuxième meilleure) : Utilisez uniquement les interfaces publiques astyanax-core (aucune d’entre elles n’expose les classes cassandra-all).
    • Option C : Passez vos objets de « org.apache.cassandra » au paquet ombré « com.netflix.astyanax.shaded.org.apache.cassandra « Astyanax dépend maintenant.

Aperçu

Astyanax est un client Java de haut niveau pour Apache Cassandra.Apache Cassandra est une base de données orientée colonne hautement disponible.

Caractéristiques

Un aperçu rapide peut être trouvé sur le blog technologique de Netflix. Quelques fonctionnalités fournies par ce client :

  • Interface orientée objet simple et de haut niveau avec Cassandra.
  • Comportement de basculement du côté client.
  • Abstraction de pool de connexion. Mise en œuvre d’un pool de connexion round robin.
  • Surveillance abstraction pour obtenir une notification d’événement du pool de connexion.
  • Capsulation complète de l’API Thrift sous-jacente et des structures.
  • Réessai automatique des hôtes en panne.
  • Découverte automatique d’hôtes supplémentaires dans le cluster.
  • Suspension des hôtes pour une courte période de temps après plusieurs timeouts.
  • Annotations pour simplifier l’utilisation des colonnes composites.

Documentation

Une documentation détaillée des fonctionnalités et de l’utilisation d’Astyanax peut être trouvée sur le wiki et le guide de démarrage.

IntelliJ : actuellement (juin 2018) IntelliJ a un bug qui rend une erreur « unfound » pour les paquets relocalisés via un autremodule dans le même projet (par ex.par exemple, les classes ombrées de astyanax-cassandra-all-shaded).Cela n’affecte que le projet Astyanax lui-même dans IntelliJ ; Astyanax se construit encore parfaitement bien via Gradle.Les utilisateurs d’Astyanax ne sont pas affectés. Pour plus de détails, voir:

Artifacts

Les jars Astyanax sont publiés sur Maven Central. Depuis astyanax 1.56.27, le projet a été divisé en plusieurs sous-projets, dont chacun doit être tiré séparément.

Artifacts requis

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-thrift ou astyanax-cql Choisissez le protocole Thrift ou CQL. Note Cassandra 4.x+ abandonne le support du protocole Thrift.

Artéfacts transitifs (dépendances ajoutées automatiquement via un artéfact requis)

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-core L’interface publique d’Astyanax.
com.netflix.astyanax astyanax-cassandra Fonctionnalités spécifiques àassandra partagées par astyanax-thrift et astyanax-cql
com.netflix.astyanax astyanax-cassandra-all-shaded Version ombrée de cassandra-all pour les quelques classes utilisées par astyanax-cassandra afin que les projets soient libres de sélectionner des versions arbitraires de cassandra-unit pour les tests d’unité/intégration contre les versions plus récentes de Cassandra. Masque la dépendance d’Astyanax à cassandra-all en refactorisant les classes « org.apache.cassandra » en « com.netflix.astyanax.shaded.org.apache.cassandra ».

Artifacts optionnels

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-contrib Intégration facultative avec d’autres modules OSS Netflix couramment utilisés.
com.netflix.astyanax astyanax-queue Mise en œuvre de la file d’attente soutenue par le stockage Cassandra. Utilisez-la à vos risques et périls — Cassandra peut être un très mauvais moteur de stockage pour les files d’attente. Si vous insistez pour utiliser Cassandra pour les files d’attente, définissez un TTL très court et utilisez TimeWindowCompactionStrategy (TWCS).
com.netflix.astyanax astyanax-entity-mapper
com.netflix.astyanax astyanax-recipes Mise en œuvre optionnelle de certains motifs communs. Utilisez-les à vos risques et périls ; certains d’entre eux sont populaires mais ne conviennent pas à Cassandra pour de nombreux cas d’utilisation (je vous regarde, AllRowsReader).

Histoire ancienne

Astyanax était le fils d’Hector qui était le frère de Cassandre dans la mythologie grecque.

Histoire moderne

Ce travail a été initialement inspiré par Hector.

Leave a Reply