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
Descargue un archivo Visio de esta arquitectura.
La característica Event Hubs para Apache Kafka transmite eventos de productores de Kafka.
Apache Spark consume eventos. AKS proporciona un entorno administrado para los trabajos de Apache Spark.
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.
La característica de fuente de cambios de Azure Cosmos DB procesa eventos en tiempo real.
Las aplicaciones programadas ejecutan el procesamiento orientado a lotes en eventos almacenados en Cassandra.
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:
- Azure Data Lake Storage, que puede almacenar datos en formatos abiertos, como Parquet.
- Almacenes de datos relacionales de código abierto, como PostgreSQL y MySQL.
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.
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.
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.
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:
Al implementar Event Hubs para Kafka, consulte Inicio rápido: Streaming de datos con Event Hubs mediante el protocolo de Kafka. Este artículo ofrece la siguiente información:
- Envío y recepción de mensajes con Kafka en Event Hubs
- Código de ejemplo para una aplicación de publicación
- Cómo cambiar las aplicaciones de Kafka existentes a Event Hubs para Kafka mediante la realización de cambios de configuración
Con respecto a Apache Spark:
- Para obtener información sobre cómo compilar una aplicación básica de Spark, consulte Conexión de una aplicación de Apache Spark con Azure Event Hubs.
- Para hospedar la aplicación de Spark en AKS, consulte Ejecución de trabajos de Apache Spark en AKS.
Considere la posibilidad de usar una aplicación de Java para escribir eventos en Cassandra. Para obtener más información, consulte Inicio rápido: Compilación de una aplicación Java para administrar los datos de Cassandra API de Azure Cosmos DB (controlador v4).
Cuando use la fuente de cambios de Azure Cosmos DB, consulte Fuente de cambios de la API de Azure Cosmos DB para Cassandra para obtener esta información:
- Uso de predicados de consulta en el lenguaje de consulta Cassandra (CQL) para consultar la API de la fuente de cambios
- Código de ejemplo para una aplicación Java
Para obtener información sobre cómo procesar los eventos que ha almacenado en Cassandra, consulte Tutorial: Consulta de datos de una cuenta de Cassandra API en Azure Cosmos DB. Este artículo también contiene código Java de ejemplo para usar comandos CQL para recuperar datos de tablas.
Para obtener información sobre cómo escribir datos en Azure Database for PostgreSQL con una aplicación orientada a lotes, consulte Inicio rápido: Uso de Java y JDBC con Azure Database for PostgreSQL. Este artículo también contiene código Java de ejemplo para almacenar datos.
Para obtener información sobre el almacenamiento de datos y la recuperación con Azure Cache for Redis, consulte Inicio rápido: Uso de Azure Cache for Redis en Java. Este artículo también contiene código Java de ejemplo para acceder a una memoria caché.
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
- Guía del desarrollador de Apache Kafka para Azure Event Hubs
- Preguntas más frecuentes sobre Cassandra API en Azure Cosmos DB
- Procedimientos recomendados para compilar una aplicación con Azure Database for PostgreSQL
- Preguntas frecuentes sobre Azure Cache for Redis
Recursos relacionados
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
- Elección de un almacén de datos analíticos en Azure
- Elección de una tecnología de análisis de datos en Azure