Compartir a través de


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 una sola vez
  • Entrega exactamente una vez
  • Duplicate records

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.

Exactly-once processing

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.

Exactly-once delivery

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 que se logren funcionalidades transaccionales en el adaptador de salida.

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 pueden producirse resultados duplicados. Sin embargo, la entrega exactamente una vez se puede lograr con varias salidas, como Azure Cosmos DB o Azure SQL.

Duplicate records

Debido a la garantía de entrega al menos una vez, cuando se ejecuta un trabajo de Stream Analytics, es posible que ocasionalmente 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 descendente 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 ejecuta 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 (la base de datos de Azure Cosmos)

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 mediante 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.

Azure Table

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á modificando en este caso).

See Also

Time Management