Garantías de entrega de eventos (Azure Stream Analytics)

El lenguaje de consulta de Azure Stream Analytics amplía la sintaxis SQL para habilitar cálculos complejos a través de flujos de eventos. Con Stream Analytics hay algunos conceptos relacionados con la entrega de eventos que merece la pena analizar:

  • Procesamiento exactamente una vez
  • Entrega exactamente de una vez
  • Registros duplicados

Además de estos conceptos detallados a continuación, es importante tener en cuenta la opción de inicio de un trabajo para asegurarse de que no se puede producir ninguna pérdida de datos.

Procesamiento exactamente una vez

La garantía de procesamiento exactamente una vez significa que, dado un conjunto de entradas, el sistema siempre devuelve los mismos resultados. Esto es muy importante para la repetibilidad y se aplica incluso en caso de reinicio del trabajo, o en varios trabajos que se ejecutan en paralelo en la misma entrada. Azure Stream Analytics garantiza exactamente un procesamiento una vez.

Entrega exactamente una vez

La garantía de entrega exactamente una vez significa que todas las salidas del procesamiento exactamente una vez se entregan al receptor de salida exactamente una vez, por lo que no hay ninguna salida duplicada. Esto requiere funcionalidades transaccionales en el adaptador de salida para lograrse.

Azure Stream Analytics garantiza la entrega al menos una vez a los receptores de salida, lo que garantiza que se generan todos los resultados, pero se pueden producir resultados duplicados. Sin embargo, la entrega exactamente una vez se puede lograr con varias salidas, como Azure Cosmos DB o Azure SQL.

Registros duplicados

Debido a la garantía de entrega al menos una vez, cuando se ejecuta un trabajo de Stream Analytics, es posible que en ocasiones se observen registros duplicados en los datos de salida. Estos registros duplicados se esperan porque los adaptadores de salida de Azure Stream Analytics no escriben los eventos de salida transaccionalmente. Este escenario de "registro duplicado" puede dar lugar si se produce una de las condiciones siguientes:

  • La instancia de Azure se actualiza mientras se ejecuta el trabajo
  • El trabajo de Stream Analytics se actualiza o se produce un problema con la conectividad o confiabilidad a la salida del trabajo.
  • La instancia de Azure que ejecuta el trabajo tiene una interrupción
  • El trabajo de Stream Analytics se inicia con la opción cuando se detiene por última vez

El consumidor de bajada de los eventos de salida debe desduplicar los eventos mediante la identidad lógica de los eventos. Por ejemplo, si va a agregar eventos por grupos en una ventana de saltos de tamaño constante, la identidad lógica del evento es los grupos y la hora de finalización de la ventana de saltos de tamaño constante. Si está ejecutando una consulta de paso a través, es posible que tenga que llevar un identificador único en el evento para desduplicar.

Salida que admite la entrega exacta una vez con Azure Stream Analytics

Azure Cosmos DB

Con Azure Cosmos DB, Azure Stream Analytics garantiza la entrega exactamente una vez. Dado que Azure Stream Analytics usa upsert, el usuario no necesita ninguna acción. Consulte más información sobre la salida de Azure Stream Analytics en Azure Cosmos DB.

SQL

Al usar la salida de SQL, los usuarios pueden lograr la entrega exactamente una vez si se cumplen los siguientes requisitos:

  • todos los eventos de streaming de salida tienen una clave natural, es decir, son identificables de forma única por un campo o por una combinación de campos.
  • La tabla SQL de salida tiene una restricción única (o clave principal) creada con la clave natural de los eventos de salida.

Esto es suficiente para evitar duplicados porque la salida de SQL respeta las restricciones colocadas en la tabla omitiendo los eventos que provocan una infracción de restricción única.

tabla de Azure

Todas las entidades de una tabla de Azure Storage se identifican de forma única mediante la concatenación de los RowKey campos y PartitionKey . Entidades upserts de Azure Stream Analytics, por lo que el valor de una entidad de tabla será el evento de salida más reciente con la combinación correspondiente RowKey/PartitionKey . Por lo tanto, para lograr la entrega exactamente una vez, asegúrese de que cada evento de salida tenga una combinación única RowKey/PartitionKey . Si esto se hace, los eventos duplicados sobrescribirán las versiones anteriores. (El campo definido por Timestamp el sistema, que es la hora de la última modificación de la entidad, seguirá cambiado en este caso).

Consulte también

Administración de hora