Compartir a través de


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 adaptadores de entrada y salida para lograr la equivalencia del flujo de salida después de la recuperación después de una interrupción. Debido a que los adaptadores de entrada creados correctamente solo reproducen los eventos perdidos desde que se capturó el último punto de comprobación, el periodo 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

  • Reproducir mediante adaptadores de entrada

  • Eliminación de duplicados mediante adaptadores de salida

  • 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 después 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 problema requiere la participación de los adaptadores de entrada con capacidad para reproducir los eventos perdidos.

  • Los eventos se pueden duplicar. Los eventos producidos por StreamInsight después del último punto de comprobación antes de la interrupción se producirán de nuevo durante la recuperación de la interrupción cuando los adaptadores de entrada reproduzcan los eventos del modo previsto. La solución de problema requiere la participación de los adaptadores de salida con capacidad para 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 lo use StreamInsight y se debe tratar como opaco.

[ARRIBA]

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 y los adaptadores existentes.

  1. Retención de estado. Puede usar los puntos de comprobación para guardar el estado de las consultas sin realizar cambios en los adaptadores de entrada o salida. 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. 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 adaptadores de entrada por eventos de reproducción. 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 adaptadores de entrada y también mediante el cambio de adaptadores de salida para eliminar los eventos duplicados.

[ARRIBA]

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 límite máximo en cada una de las entradas.

[ARRIBA]

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 mediante adaptadores de salida después de la recuperación, estos eventos deben ser persistentes en un almacén de datos.

Cualquier estado que se mantiene mediante adaptadores de entrada o de salida

Para que esté disponible después de la recuperación de una interrupción, los adaptadores de entrada o salida personalizados deben hacer que este estado sea persistente en un almacén de datos.

[ARRIBA]

Reproducir mediante adaptadores de entrada

Cuando una aplicación StreamInsight se reinicia después de una interrupción, la llamada al método Create del generador de adaptadores de entrada proporciona el límite máximo para el generador de adaptadores. (El generador de adaptadores debe implementar la interfaz IHighWaterMarkInputAdapterFactory o IHighWaterMarkTypedInputAdapterFactory para recibir esta información). Se espera que el adaptador de entrada reproduzca su flujo de entrada desde el límite máximo.

La reproducción correcta por parte de todos los adaptadores de entrada garantiza que la salida sea completa.

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

  • Un generador de adaptadores de entrada que implemente la interfaz IHighWaterMarkInputAdapterFactory o IHighWaterMarkTypedInputAdapterFactory.

  • 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 reproducción correcta de estos eventos por parte de todos los adaptadores de entrada.

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

[ARRIBA]

Eliminación de duplicados mediante adaptadores de salida

Para identificar la ubicación del punto de comprobación en el flujo de salida, la llamada al método Create del generador de adaptadores de salida proporciona el límite máximo y un desplazamiento desde este límite máximo. (El generador de adaptadores debe implementar la interfaz IHighWaterMarkOutputAdapterFactory o IHighWaterMarkTypedOutputAdapterFactory para recibir esta información). Este desplazamiento es necesario porque la ubicación en el flujo de salida correspondiente al punto de comprobación puede estar en cualquier punto del flujo.

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 se producirán tras el reinicio. Esto significa que cualquier eventos que se haya producido como salida después del último punto de comprobación pero antes de la interrupción se producirán por segunda vez durante la recuperación. Se trata de los duplicados que el adaptador de salida debe quitar. El modo de quitarlos depende del adaptador de salida; por ejemplo, las copias duplicadas se pueden omitir.

La eliminación correcta de los duplicados por parte de todos los adaptadores de salida (después de la reproducción por los adaptadores de entrada) garantiza 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 generador de adaptadores de salida que implemente la interfaz IHighWaterMarkOutputAdapterFactory o IHighWaterMarkTypedOutputAdapterFactory.

  • 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 generador de adaptadores de salida cuando se crea).

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

[ARRIBA]

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 la muestra de comprobación de puntos en la página de muestras de StreamInsight en Codeplex.

[ARRIBA]