Resistencia de StreamInsight

 

Cuando una interrupción del sistema provoca el cese del procesamiento de eventos por parte de una aplicación StreamInsight, normalmente existen requisitos para la calidad y la oportunidad de la salida de la aplicación tras la recuperación.

  1. Se desea que el contenido de los flujos de salida coincidan con lo que habrían sido si no se hubiera producido la interrupción.

  2. Se desea que la duración de la interrupción sea lo más breve posible.

La edición Premium de StreamInsight proporciona una característica de comprobación de puntos que puede guardar periódicamente el estado de las consultas en el disco. Puede usar esta característica junto con las características relacionadas de los orígenes y los receptores para lograr la equivalencia del flujo de salida después de la recuperación tras una interrupción. Como los orígenes creados correctamente solo reproducen los eventos perdidos desde que se capturó el último punto de control, el período de tiempo dedicado a la recuperación es mínimo.

En este tema

  • Puntos de comprobación

  • Tres niveles de resistencia

  • Límites máximos

  • Eventos y estado que no se pueden guardar mediante la comprobación de puntos

  • Reproducción por orígenes

  • Eliminación de duplicados por receptores

  • Más información

Puntos de comprobación

Una operación de punto de comprobación de StreamInsight convierte en persistente el estado de una consulta en disco de una forma coherente. Después de una interrupción, la consulta se puede restaurar al estado en el momento del punto de comprobación.

La comprobación de puntos por sí misma no garantiza que el flujo de eventos que produce una consulta en ausencia de una interrupción será equivalente al flujo de eventos producido en el caso de que se produzca una interrupción. Dos problemas pueden afectar a la equivalencia:

  • Los eventos se pueden perder. Un punto de comprobación no captura los eventos recibidos por StreamInsight después del punto de comprobación y los eventos que se producen entre una interrupción y su recuperación. Estos eventos se deben presentar al servidor de nuevo para que se incluyan en la salida de consulta. La solución de este problema necesita la participación de los orígenes que son capaces de reproducir los eventos perdidos.

  • Los eventos se pueden duplicar. Los eventos producidos por StreamInsight después del último punto de control antes de la interrupción se producirán de nuevo durante la recuperación de la interrupción cuando los orígenes reproduzcan los eventos del modo previsto. La solución de problema necesita la participación de los receptores que son capaces de eliminar estos eventos duplicados.

El registro de puntos de comprobación es el conjunto de los archivos que contienen la información de punto de comprobación persistente. El registro se guarda en un directorio que se especifica al configurar el servidor para la resistencia. Este directorio debe estar reservado para que solo lo use StreamInsight y no se debe modificar. Además, debe ser único para cada instancia de StreamInsight.

En este tema

Tres niveles de resistencia

Con StreamInsight se pueden alcanzar tres niveles de resistencia. La selección de un nivel depende de los requisitos y de la capacidad para cambiar las aplicaciones, los orígenes y los receptores existentes.

  1. Retención de estado. Puede usar puntos de control para guardar el estado de las consultas sin realizar cambios en los orígenes o en los receptores. Este nivel de resistencia no garantiza que el flujo resultante después de la recuperación de una interrupción sea equivalente al flujo si no se hubiera producido ninguna interrupción, porque se han perdido los eventos que se han producido después de que se capturó el último punto de comprobación y los eventos que se han producido durante el error. No obstante, esto puede ser aceptable en situaciones en las que no se necesitan resultados equivalentes y donde la salida correcta aproximadamente se puede conseguir con una entrada parcial.

  2. Salida completa. Puede garantizar que no se perderá ningún evento mediante el cambio de orígenes para que puedan reproducir eventos. El flujo de salida de una consulta recuperada será equivalente de forma lógica a un superconjunto del flujo de salida de una consulta no interrumpida y los eventos serán duplicados de los eventos del flujo no interrumpido.

  3. Salida equivalente. Puede garantizar una salida equivalente de forma lógica mediante el cambio de orígenes y también mediante el cambio de receptores para eliminar eventos duplicados.

En este tema

Límites máximos

El límite máximo es el tiempo de aplicación máximo visto hasta un punto específico en el flujo de eventos. Cuando se solicita un punto de comprobación, StreamInsight captura un punto de comprobación en el siguiente cambio de marca de límite superior en cada una de las entradas.

En este tema

Eventos y estado que no se pueden guardar mediante la comprobación de puntos

Para comprender los requisitos previos para la salida que es completa y equivalente después de la recuperación de una interrupción, resulta útil reconocer los eventos y el estado que no se pueden guardar mediante la comprobación de puntos de StreamInsight. Estos eventos y este estado deben ser persistente por separado para que estén disponibles después de la recuperación de una interrupción.

Eventos o estado que no se pueden guardar mediante la comprobación de puntos Solución
Eventos que llegan después del último punto de comprobación y antes de la interrupción Para que estén disponibles para la reproducción después de la recuperación de una interrupción, estos eventos deben ser persistentes en un almacén de datos.
Eventos que llegan durante la interrupción Para que estén disponibles después de la recuperación de una interrupción, estos eventos deben ser persistentes en un almacén de datos.
Conocimiento de eventos que se han producido como salida después del último punto de comprobación y antes de la interrupción Para admitir la eliminación de eventos duplicados por receptores después de la recuperación, estos eventos se deben conservar en un almacén de datos.
Cualquier estado que se mantiene mediante orígenes o receptores personalizados Para que esté disponible después de la recuperación tras una interrupción, los orígenes o receptores personalizados deben conservar este estado en un almacén de datos.

En este tema

Reproducción por orígenes

Cuando una aplicación de StreamInsight se reinicia tras una interrupción, la llamada para inicializar un origen de resistencia proporciona la marca de límite superior para el origen. Se espera que el origen reproduzca su flujo de entrada desde su límite superior.

La correcta reproducción por parte de todos los orígenes garantiza que la salida sea completa.

Por lo tanto, la salida que es completa tiene los siguientes requisitos:

  • Un origen que usa la marca de límite superior proporcionada para identificar los eventos que se deben reproducir.

  • La disponibilidad después de la recuperación de todos los eventos que se han producido después de que se hubiera capturado el último punto de comprobación antes de la interrupción.

  • La disponibilidad después de la recuperación de todos los eventos que se han producido durante la interrupción.

  • La correcta reproducción de estos eventos por parte de todos los orígenes.

  • Comprobación de puntos y la recuperación del estado de consulta.

En este tema

Eliminación de duplicados por receptores

Para identificar la ubicación del punto de comprobación en el flujo de salida, la llamada para inicializar un receptor de resistencia proporciona el límite superior y un desplazamiento del marcador del punto de comprobación desde el límite superior.

Si una consulta se reproduce correctamente, el estado de consulta interno será el del último punto de comprobación y los eventos que se han producido después de que se tomara el último punto de comprobación volverán a producirse tras el reinicio. Esto significa que cualquier evento que se haya producido como salida después del último punto de control pero antes de la interrupción se producirá por segunda vez durante la recuperación. Se trata de los duplicados que el receptor debe quitar. El modo de quitarlos depende del receptor; por ejemplo, las copias duplicadas se pueden omitir.

La correcta eliminación de los duplicados por parte de todos los receptores (después de la correcta reproducción por parte de todos los orígenes) que la salida sea equivalente.

Por lo tanto, la salida que es equivalente tiene los siguientes requisitos además de los enumerados anteriormente para la salida completa:

  • Un receptor que usa la marca de límite superior y el desplazamiento proporcionados para identificar los eventos que se deben quitar u omitir.

  • La disponibilidad después de la recuperación de todos los eventos que se han producido después de que se hubiera capturado el último punto de comprobación antes de la interrupción. (Esta ubicación en el flujo se identifica mediante el límite máximo y un desplazamiento que se proporcionan al receptor cuando se vuelva a crear después de la recuperación).

  • La correcta eliminación de eventos duplicados por parte de todos los receptores.

En este tema

Más información

Para obtener más información acerca de la compilación, supervisión y solución de problemas de aplicaciones StreamInsight resistentes, vea los siguientes temas:

Para obtener una muestra de código completa de una aplicación resistente que incluya reproducción y anulación de duplicación, vea StreamInsight 2.1 Muestra de comprobación de puntos en la página de muestras de StreamInsight en Codeplex.

En este tema