Netflix / astyanax

Deprecation

Astyanax ha sido retirado y ya no está en desarrollo activo, pero puede recibir actualizaciones de dependencia para facilitar la migración fuera de Astyanax.

En lugar de Astyanax considere el uso de DataStax Java Driver for Apache Cassandraque está en desarrollo activo y encapsula una gran cantidad de lecciones aprendidas de Astyanax. Dado que el controlador de DataStax sólo soporta el protocolo CQL (porque Apache Cassandra 4.x abandonará el protocolo Thrift), tendrá que actualizar todas sus consultas basadas en Thrift a consultas CQL.

Tiene la opción de seguir accediendo a las familias de columnas heredadas a través de la opción CQL «con almacenamiento compacto». Sin embargo, en la mayoría (¿todos?) de los casos de uso, la opción de almacenamiento compacto heredado ocupa más espacio que la nueva opción de almacenamiento CQL por defecto, por lo que es mejor migrar sus datos a la nueva opción de almacenamiento por defecto.

Esta versión de Astyanax elimina su dependencia de cassandra-all, por lo que puede seleccionar opcionalmente cualquier versión de cassandra-unit que desee para realizar pruebas de unidad/integración con diferentes versiones de Cassandra. Al actualizar a esta versión de Astyanax es posible que tenga que:

  • Añadir explícitamente cualquier dependencia transitiva de cassandra-all de la que dependiera anteriormente de forma silenciosa a través de las transitivas de Astayanax.
  • Si utilizaba características internas de Astyanax que exponían (involuntariamente) las clases de cassandra-all de forma pública, deberá:
    • Opción A (la mejor): Migrar de Astyanax a DataStax Java Driver for Apache Cassandra.
    • Opción B (segunda mejor): Utilizar sólo las interfaces públicas de astyanax-core (ninguna de ellas expone clases cassandra-all).
    • Opción C: Cambiar sus objetos de «org.apache.cassandra» al paquete «com.netflix.astyanax.shaded.org.apache.cassandra «del que ahora depende Astyanax.

Descripción

Astyanax es un cliente Java de alto nivel para Apache Cassandra.Apache Cassandra es una base de datos orientada a columnas de alta disponibilidad.

Características

Una rápida descripción puede encontrarse en el Netflix Tech Blog. Algunas características proporcionadas por este cliente:

  • Interfaz orientada a objetos simple y de alto nivel para Cassandra.
  • Comportamiento de fallo en el lado del cliente.
  • Abstracción del pool de conexiones. Implementación de un pool de conexiones round robin.
  • Abstracción de monitorización para obtener notificación de eventos del pool de conexiones.
  • Capsulación completa de la API y los structs subyacentes de Thrift.
  • Reintento automático de hosts caídos.
  • Descubrimiento automático de hosts adicionales en el cluster.
  • Suspensión de hosts por un corto periodo de tiempo después de varios timeouts.
  • Anotaciones para simplificar el uso de columnas compuestas.

Documentación

La documentación detallada de las características y el uso de Astyanax se puede encontrar en la wiki y en la guía de inicio.

IntelliJ: actualmente (junio de 2018) IntelliJ tiene un error que arroja un error «no encontrado» para los paquetes reubicados a través de otromódulo en el mismo proyecto (por ejemplo.g. clases sombreadas de astyanax-cassandra-all-shaded).Esto afecta solo al proyecto Astyanax en sí mismo dentro de IntelliJ; Astyanax sigue construyendo perfectamente a través de Gradle.Los usuarios de Astyanax no se ven afectados. Para más detalles ver:

Artifacts

Los jars de Astyanax se publican en Maven Central. A partir de astyanax 1.56.27 el proyecto se ha dividido en múltiples subproyectos, cada uno de los cuales necesita ser tirado por separado.

Artefactos requeridos

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-thrift o astyanax-cql Elige el protocolo Thrift o CQL. Tenga en cuenta que Cassandra 4.x+ deja de soportar el protocolo Thrift.

Artefactos transitivos (dependencias añadidas automáticamente a través de un artefacto requerido)

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-core Interfaz pública de astyanax.
com.netflix.astyanax astyanax-cassandra Características específicas de Cassandra compartidas por astyanax-thrift y astyanax-cql
com.netflix.astyanax astyanax-cassandra-all-shaded Versión sombreada de cassandra-all para las pocas clases usadas por astyanax-cassandra para que los proyectos sean libres de seleccionar versiones arbitrarias de cassandra-unit para pruebas de unidad/integración contra versiones más nuevas de Cassandra. Oculta la dependencia de Astyanax de cassandra-all refactorizando las clases «org.apache.cassandra» a «com.netflix.astyanax.shaded.org.apache.cassandra».

Artefactos opcionales

GroupID/Org ArtifactID/Name Desc
com.netflix.astyanax astyanax-contrib Integración opcional con otros módulos OSS de Netflix de uso común.
com.netflix.astyanax astyanax-queue Implementación de cola respaldada por almacenamiento Cassandra. Úsalo bajo tu propio riesgo — Cassandra puede ser un motor de almacenamiento muy malo para las colas. Si insiste en usar Cassandra para colas, establezca un TTL muy corto y use TimeWindowCompactionStrategy (TWCS).
com.netflix.astyanax astyanax-entity-mapper
com.netflix.astyanax astyanax-recipes Implementaciones opcionales de algunos patrones comunes. Utilícelos bajo su propio riesgo; algunos de ellos son populares pero no se adaptan bien a Cassandra para muchos casos de uso (mirándote a ti, AllRowsReader).

Historia Antigua

Astyanax era el hijo de Héctor, que era el hermano de Casandra en la mitología griega.

Historia Moderna

Este trabajo fue inicialmente inspirado por Héctor.

Leave a Reply