Procesamiento de flujos con motores de datos de código abierto completamente administrados

Event Hubs
Kubernetes Service
Cosmos DB
Database for PostgreSQL
Cache for Redis

En este artículo se presenta un ejemplo de una solución de streaming. Los servicios de datos de Azure totalmente administrados que ejecutan motores de código abierto son la solución:

  • Azure Event Hubs ofrece una implementación de Kafka para la ingesta de flujos.
  • Azure Cosmos DB admite el almacenamiento de eventos en Cassandra.
  • Azure Kubernetes Service (AKS) hospeda microservicios de Kubernetes para el procesamiento de flujos.
  • Azure Database for PostgreSQL administra el almacenamiento de datos relacionales en PostgreSQL.
  • Azure Cache for Redis administra almacenes de datos en memoria de Redis.

Las tecnologías de código abierto ofrecen muchas ventajas. Por ejemplo, las organizaciones pueden usar tecnologías de código abierto para:

  • Migrar las cargas de trabajo existentes.
  • Acceder a la amplia comunidad de código abierto.
  • Limite el bloqueo del proveedor.

Al hacer que las tecnologías de código abierto sean accesibles, las herramientas y los servicios de Azure ayudan a las organizaciones a aprovechar estas ventajas y a desarrollar las soluciones que elijan.

Esta solución usa servicios de plataforma como servicio (PaaS) totalmente administrados. Como resultado, Microsoft controla la aplicación de revisiones, el mantenimiento del acuerdo de nivel de servicio (SLA) y otras tareas de administración. Otra ventaja es la integración nativa con la infraestructura de seguridad de Azure.

Posibles casos de uso

Esta solución se aplica a varios escenarios:

  • Uso de servicios PaaS de Azure para crear soluciones de streaming modernas que usen tecnologías de código abierto
  • Migración de soluciones de procesamiento de flujos de código abierto a Azure

Architecture

Diagrama de arquitectura que muestra cómo fluyen los datos de streaming a través de un sistema. Los componentes de Kafka, Kubernetes, Cassandra, PostgreSQL y Redis forman el sistema.

Descargue un archivo Visio de esta arquitectura.

  1. La característica Event Hubs para Apache Kafka transmite eventos de productores de Kafka.

  2. Apache Spark consume eventos. AKS proporciona un entorno administrado para los trabajos de Apache Spark.

  3. Una aplicación que usa Cassandra API para Azure Cosmos DB escribe eventos en Cassandra. Esta base de datos actúa como plataforma de almacenamiento para eventos. AKS hospeda los microservicios que escriben en Cassandra.

  4. La característica de fuente de cambios de Azure Cosmos DB procesa eventos en tiempo real.

  5. Las aplicaciones programadas ejecutan el procesamiento orientado a lotes en eventos almacenados en Cassandra.

  6. Los almacenes de datos de referencia enriquecen la información de eventos. Las aplicaciones orientadas a lotes escriben la información enriquecida de eventos en PostgreSQL. Los almacenes de datos de referencia típicos incluyen:

  7. Una aplicación orientada a lotes procesa los datos de Cassandra. Esa aplicación almacena los datos procesados en Azure Database for PostgreSQL. Este almacén de datos relacional proporciona datos a las aplicaciones de nivel inferior que requieren información enriquecida.

  8. Las aplicaciones y herramientas de informes analizan los datos de la base de datos de PostgreSQL. Por ejemplo, Power BI se conecta a la base de datos mediante el conector de Azure Database for PostgreSQL. A continuación, este servicio de informes muestra objetos visuales enriquecidos de los datos.

  9. Azure Cache for Redis proporciona una caché en memoria. En esta solución, la caché contiene datos sobre eventos críticos. Una aplicación almacena los datos en la caché y recupera los datos de esta.

  10. Los sitios web y otras aplicaciones usan los datos almacenados en caché para mejorar los tiempos de respuesta. A veces, los datos no están disponibles en la memoria caché. En esos casos, estas aplicaciones usan el patrón cache-aside o una estrategia similar para recuperar datos de Cassandra en Azure Cosmos DB.

Componentes

  • Event Hubs es una plataforma de streaming totalmente administrado que puede procesar millones de eventos por segundo. Event Hubs proporciona un punto de conexión para Apache Kafka, una plataforma de procesamiento de flujos de código abierto ampliamente utilizada. Cuando las organizaciones usan la característica de punto de conexión, no necesitan compilar ni mantener clústeres de Kafka para el procesamiento de flujos. En su lugar, pueden beneficiarse de la implementación de Kafka totalmente administrada que Event Hubs ofrece.

  • Azure Cosmos DB es una base de datos NoSQL de varios modelos que ofrece replicación de arquitectura multimaestro. Azure Cosmos DB admite las API de código abierto para muchas bases de datos, lenguajes y plataformas. Algunos ejemplos son:

    A través de Cassandra API, puede acceder a los datos de Azure Cosmos DB mediante herramientas, lenguajes y controladores de Apache Cassandra. Apache Cassandra es una base de datos NoSQL de código abierto adecuada para cargas de trabajo intensivas de escritura.

  • AKS es un servicio de Kubernetes totalmente administrado, de alta disponibilidad y seguro. Kubernetes es una plataforma de código abierto que evoluciona rápidamente para la administración de cargas de trabajo contenedorizadas. AKS hospeda motores de procesamiento de macrodatos de código abierto, como Apache Spark. Con AKS, puede ejecutar trabajos de procesamiento de flujos a gran escala en un entorno administrado.

  • Azure Database for PostgreSQL es un servicio de base de datos relacional totalmente administrado. Proporciona alta disponibilidad, escalado elástico, aplicación de revisiones y otras funcionalidades de administración para PostgreSQL. PostgreSQL es un sistema de administración de bases de datos relacionales de código abierto ampliamente adoptado.

  • Azure Cache for Redis proporciona un almacén de datos en memoria basado en el software de Redis. Redis es un almacén de datos en memoria de código abierto. Los almacenes de sesiones, las cachés de contenido y otros componentes de almacenamiento usan Redis para mejorar el rendimiento y la escalabilidad. Azure Cache for Redis proporciona funcionalidades de Redis de código abierto como una oferta totalmente administrada.

Alternativas

Puede reemplazar los productos y servicios compatibles con código abierto de esta solución por otros. Para más información sobre los servicios de código abierto disponibles en Azure, consulte Código abierto en Azure.

Consideraciones

Diseñe e implemente cada servicio teniendo en cuenta los procedimientos recomendados. Para obtener instrucciones sobre cada servicio, consulte Microsoft Docs. Revise también la información de las secciones siguientes:

Consideraciones de rendimiento

  • Implemente la agrupación de conexiones para Azure Database for PostgreSQL. Puede usar una biblioteca de agrupaciones de conexiones en la aplicación. O bien, puede usar un agrupador de conexiones como PgBouncer o Pgpool. Establecer una conexión con PostgreSQL es una operación costosa. Con la agrupación de conexiones, puede evitar degradar el rendimiento de la aplicación.

  • Configure Cassandra API de Azure Cosmos DB para obtener el mejor rendimiento mediante una estrategia de creación de particiones adecuada. Decida si desea usar una clave principal de campo único, una clave principal compuesta o una clave de partición compuesta al crear particiones de tablas.

Consideraciones sobre escalabilidad

  • Tenga en cuenta los requisitos de streaming al elegir un nivel de Event Hubs:

    • Para los requisitos de rendimiento de gama media inferiores a 120 MBps, considere la posibilidad de usar el nivel Premium. Este nivel se escala elásticamente para satisfacer los requisitos de streaming.
    • Para cargas de trabajo de streaming de gama alta con una entrada de gigabytes de datos, considere el nivel Dedicado. Este nivel es una oferta de un solo inquilino con una capacidad garantizada. Puede escalar y reducir verticalmente los clústeres dedicados.
  • Considere la posibilidad de usar el rendimiento aprovisionado de escalabilidad automática para Azure Cosmos DB si sus cargas de trabajo son impredecibles y puntiagudas. Puede configurar Azure Cosmos DB para usar el rendimiento aprovisionado manualmente o el rendimiento aprovisionado de escalabilidad automática. Con la escalabilidad automática, Azure escala automáticamente y al instante las unidades de solicitud por segundo según su uso.

Consideraciones sobre la seguridad

  • Use Azure Private Link para que los servicios de Azure formen parte de su red virtual. Cuando se usa Private Link, el tráfico entre los servicios y la red fluye a través de la red troncal de Azure sin atravesar la red pública de Internet. Los servicios de Azure de esta solución admiten Private Link para las SKU seleccionadas.

  • Compruebe las directivas de seguridad de su organización. Con Cassandra API de Azure Cosmos DB, las claves proporcionan acceso a recursos como espacios de claves y tablas. La instancia de Azure Cosmos DB almacena esas claves. Las directivas de seguridad pueden requerir que propague esas claves a un servicio de administración de claves, como Azure Key Vault. Asegúrese también de rotar las claves según las directivas de su organización.

Consideraciones de resistencia

Considere la posibilidad de usar zonas de disponibilidad para proteger las aplicaciones críticas para la empresa frente a errores del centro de datos. Los servicios de esta solución admiten zonas de disponibilidad para SKU seleccionadas en regiones habilitadas para zonas de disponibilidad. Para obtener información actualizada, revise la lista de servicios que admiten zonas de disponibilidad.

Implementación de este escenario

Tenga en cuenta estos puntos al implementar esta solución:

Precios

Para estimar el costo de esta solución, use la Calculadora de precios de Azure. Tenga también en cuenta los siguientes puntos:

  • Event Hubs está disponible en los niveles Básico, Estándar, Prémium y Dedicado. Los niveles Prémium o Dedicado son los mejores para cargas de trabajo de streaming a gran escala. Puede escalar el rendimiento, así que considere la posibilidad de empezar a pequeña escala y luego escalar verticalmente a medida que aumente la demanda.

  • Azure Cosmos DB ofrece dos modelos:

    • Un modelo de rendimiento aprovisionado que es ideal para cargas de trabajo exigentes. Este modelo está disponible en dos opciones de administración de capacidad: estándar y escalabilidad automática.
    • Un modelo sin servidor adecuado para ejecutar cargas de trabajo pequeñas y con picos.
  • Un clúster de AKS consta de un conjunto de nodos o máquinas virtuales (VM) que se ejecutan en Azure. El costo de los componentes de proceso, almacenamiento y red forma parte de los costos principales de un clúster.

  • Azure Database for PostgreSQL está disponible en los niveles Servidor único, Servidor flexible e Hiperescala (Citus). Los distintos niveles se adaptan a diferentes escenarios, como cargas de trabajo predecibles, ampliables y de alto rendimiento. Los costos dependen principalmente de la elección de los nodos de proceso y la capacidad de almacenamiento.

  • Azure Cache for Redis está disponible en varios niveles. Estos niveles admiten cachés que van desde 250 megabytes a varios terabytes. Además del tamaño, otros requisitos también afectan a la elección del nivel:

    • Agrupación en clústeres
    • Persistencia
    • Replicación geográfica activa

Pasos siguientes

Para conocer las soluciones relacionadas, consulte esta información:

Introducción al análisis

Diseño de arquitectura de análisis

Guías de arquitectura

Arquitecturas de referencia