Sesión 5: 4h37m30s
Tenga en cuenta los puntos siguientes al implementar el patrón de saga:
- El patrón de saga inicialmente puede ser desafiante, ya que requiere una neuva forma de pensar sobre cómo coordinar una transacción y mantener la coherencia de los datos para un proceso empresarial que abarque varios microservicios.
- El patrón de saga es especialmente difícil de depurar y la complejidad crece a medida que los participantes aumentan.
- NO SE PUEDEN REVERTIR LOS DATOS porque los participantes de la saga confirman los cambios en sus bases de datos locales.
- La implementación debe ser capaz de controlar un conjunto de posibles errores transitorios y proporcionar idempotencia para reducir los efectos secundarios y garantizar la coherencia de los datos. La idempotencia significa que la misma operación se puede repetir varias veces sin cambiar el resultado inicial.
- Es mejor implementar la observabilidad para supervisar y realizar un seguimiento del flujo de trabajo de la saga.
- La falta de aislamiento de los datos de los participantes impone desafíos de durabilidad. La implementación de la saga debe incluir contramedidas para reducir las anomalías.
Pueden producirse las siguientes anomalías si no se toman las medidas adecuadas:
- Pérdida de actualizaciones, cuando un patrón de saga escribe sin leer los cambios realizados por otro patrón de saga.
- Lecturas de datos sucios, cuando una transación o una saga lee las actualizaciones realizadas por una saga que todavía no ha completado dichas actualizaciones.
- Lecturas aproximadas/no repetibles, cuando diferentes pasos de la saga leen datos diferentes porque se produce una actualización de datos entre las lecturas.
Entre las contramedidas sugeridas para reducir o evitar anomalías se incluyen:
- El bloqueo semántico, un bloqueo de nivel de aplicaicón en el que una transacción de compensable de una saga utiliza un semáforo para indiciar que hay una actualización en curso.
- Las actualizaciones conmutativas que se pueden ejecutar en cualquier orden y generar el mismo resultado.
- Visión pesimista, es posible que una saga lea datos sucios mientras otra saga ejecuta una transacción compensable para revertir la operación. La visión pesimista reordena la saga para que los datos subyacentes se actualicen en una transacción reintentable, lo que elimina la posibilidad de una lectura de datos sucios.
- El valor de relectura comprueba que los datos no se hayan modificado y, a continuación, actualiza el registro. Si el registro ha cambiado, los pasos se anulan y la saga puede reiniciarse.
- Un archivo de versión registra las operaciones en un registro a medida que llegan y las ejecuta en el orden correcto.
- Por valor usa el riesgo empresarial de cada solicitud para seleccionar dinámicamente el mecanismo de simulataneidad. Las solicitudes de bajo riesgo favorecen a las sagas, mientras que las solicitudes de alto riesgo favorencen a las trancciones distribuidas.
Cuando usar SAGA
- Use el patrón de SAGA cuando necesite:
- Garantizar la coherencia de los datos en un sistema distribuido sin acoplamiento estricto.
- Revertir o compensar si se produce un error en una de las operaciones de la secuencia.
- El patrón de saga es menos adecuado para:
- Transacciones estrechamente acopladas
- Transacciones de compensación que se producen en participantes anteriores.
- Dependencias cíciclicas.
No comments:
Post a Comment