Patrón SAGA Orchestration
Sesión 5: 4h23m
Nota: Cuando se hagan aplicaciones distribuidas no necesariamente se necestian APIs HTTP, también puede haber Listeners de los microservicios. En tu microservicio puedes tener una parte de exposición y una parte de listeners. En la nube los listeners se trabajan con workers (Azure Function, Lambda Function). En caso onpremise sería en una consola o servicio windows.
SAGA - Orquestación
Para abordar la complejidad del patrón SAGA, es bastante normal agregar un administador de procesos como administrador. El administrador de procesos es responsable de escuhar eventos y activar puntos finales. Volviendo a la muestra anterior, en lugar de que el servicio de pedido, el servicio de stock y el servicio de envío tengan que escucharse entre sí, implementamos una "gestión de procesos" y estos 3 servicios escucharán esto.
Flujo de SAGA-Orchestration
- El servicio de pedidos crea un registro de pedido de la base de datos con el estado "Verificando".
- El servicio de pedidio Solicita al Orquestador iniciar la "Transacción de pedido".
- El Orquestador envía un "Comando de actualización de stock" al servicio de stock.
- El servicio de stock actualiza el número del producto solicitado en la base de datos.
- El servicio de sotck respondeal Orquestador con el mensaje "Stock actualizado correctamente".
- El Orquestador envía un "Comando de actualización de pedidos" al servicio de pedidos con información de que el stock ya se actualizó correctamente.
- Actualización del servicio de pedidos. Registro de pedidos en la base de datos con el estado "Envío".
- El Orquestador envía un "Comando de envío de registro" al servicio de envío.
- El servicio de envío inserta un nuevo registro en la base de datos de envíos.
- El servicio de envío responde al Orquestador con el mensaje "El envío se ha registrado correctamente".
- El Orquestador envía un "Comando de actualización de pedido" al servicio de pedidos ycon información de que el envío ya se actualizó correctamente.
- El servicio de pedidos actualiza el registro de pedidos en la base de datos con el estado "Finalizar".
Hay un error con el servicio Stock
- El servicio de pedidos crea un registro de pedido en la base de datos con el estado "Verificando".
- El servicio de pedido Solicita al Orquestador iniciar la "Transacción de pedido".
- El Orquestador cenvía un "Comando de actualización de stock.
- El servicio de stock actualiza el número del producto solicitando en la base de datos. Pero hay un error.
- El servicio de stock responde con el mensaje "Agotado" al Orquestador.
- El Orquestador envía un "Comando de orden de reversión" al servicio de pedidos con información de que Stock falló en la actualización.
- El servicio de pedidos actualiza el regisgtro de pedidos en la base de datos con el estado "Error".
- El servicio de envío responde con el mensaje "Error al registrar envío" al Orquestador.
- El Orquestador envía un "Comando de pedido de reversión" al servicio de pedidos con información de que el servicio de envío fallo en el registro.
- El servicio de pedidos actualiza el registro de pedidos en la base de datos con el estado "Error".
- El Orquestador envía un "Comando de reversión de stock" al servicio de stock con información de que el servicio de envío falló en el registro.
- El servicio de stock actualiza el número del peroducto.
Comments
Post a Comment