Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las soluciones empresariales deben entregar mensajes de forma confiable cuando se producen cambios de datos en Dataverse. Esta arquitectura de referencia muestra cómo implementar el patrón de bandeja de salida transaccional con Dataverse para reducir el riesgo de pérdida de mensajes y ayudar a mantener sincronizados los sistemas integrados.
Tip
En este artículo se proporciona un escenario de ejemplo y una arquitectura de ejemplo generalizada para ilustrar cómo implementar la entrega de eventos confiables desde Dataverse. El ejemplo de arquitectura se puede modificar para muchos escenarios y sectores diferentes.
Diagrama de arquitectura
Flujo de trabajo
Los pasos siguientes describen el flujo de trabajo que se muestra en el diagrama de arquitectura de ejemplo:
- Se produce una operación de datos en Dataverse, como la creación o actualización de un registro de contacto. Esta operación crea una transacción de base de datos.
- Un plugin sincrónico de Dataverse se activa en respuesta a este evento y crea un registro en una tabla de bandeja de salida de Dataverse como parte de la misma transacción.
- Si el complemento se ejecuta correctamente, la transacción confirma tanto el registro de la bandeja de salida como los cambios en el registro original (por ejemplo, Contacto).
- Si se produce un error en la ejecución del complemento, el evento de datos original se revierte y Dataverse no confirma ninguna modificación de registros.
- Un complemento asincrónico se desencadena en respuesta a la creación de un registro en la tabla de bandeja de salida de Dataverse y escribe un mensaje en una cola o tema de Azure Service Bus.
- Un consumidor de mensajes escucha los mensajes para procesar y enviar a un sistema de destino.
Componentes
Dataverse es el sistema transaccional de registro de origen donde se produce el evento de datos y vive la tabla Outbox. Envía mensajes de forma asincrónica al broker de mensajes mediante un complemento.
Azure Service Bus es el agente empresarial confiable que recibe mensajes de Dataverse para su procesamiento por los sistemas receptores.
- Las colas son ideales cuando hay un único receptor de un mensaje.
- Los temas son mejores cuando muchos suscriptores pueden procesar el mismo mensaje o necesitan criterios de filtro para procesar los mensajes de forma selectiva.
Azure Monitor es una solución de supervisión completa para recopilar, analizar y responder a los datos de supervisión de soluciones locales y en la nube. Use métricas integradas de Azure Service Bus para supervisar el número de mensajes de una cola, un tema o una cola de mensajes fallidos.
Aplicación de Azure Insights se usa para la supervisión del rendimiento de las aplicaciones y se puede habilitar para que los complementos de Dataverse envíen registros de seguimiento a un área de trabajo de Application Insights.
Opciones alternativas:
- Azure Logic Apps: alternativa viable de código bajo para entregar mensajes de la tabla de bandeja de salida al bróker de mensajes si desea un control más preciso sobre cuándo desencadenar la orquestación y la entrega del mensaje (por ejemplo, microbatching).
- Azure Functions: una alternativa de código primero que proporciona la mayor flexibilidad y escala para controlar volúmenes más altos y reintentos tras fallos intermitentes.
Detalles del escenario
Las soluciones empresariales suelen necesitar intercambiar datos críticos con otros sistemas a través de mensajes. Para garantizar la coherencia entre sistemas, controle la operación de datos y la entrega de mensajes como una sola operación atómica. Sin embargo, la mayoría de los sistemas transaccionales y los agentes de mensajes rara vez admiten transacciones distribuidas, o introducen un acoplamiento estricto que conviene evitar. Sin una transacción distribuida, no hay ninguna garantía de confiabilidad porque podría producirse un fallo al enviar el mensaje al broker después de confirmar una transacción.
El patrón bandeja de salida transaccional resuelve este desafío mediante la creación de un mensaje en la misma transacción de base de datos local que actualiza los datos empresariales. A continuación, un proceso independiente puede entregar el mensaje de la tabla de bandeja de salida al broker de mensajes. Los errores intermitentes de proceso no son un problema. La tabla de la bandeja de salida almacena el mensaje para que no se pierda y el proceso vuelva a intentarlo hasta que tenga éxito.
Dataverse es una plataforma de datos de código bajo capaz y extensible con almacenamiento de datos transaccional que puede implementar este patrón para escenarios críticos de integración saliente.
Considerations
Estas consideraciones implementan los pilares de Power Platform Well-Architected, un conjunto de principios rectores que mejoran la calidad de una carga de trabajo. Obtenga más información en Microsoft Power Platform Well-Architected.
Reliability
Este patrón aumenta significativamente la confiabilidad, garantiza la entrega al menos una vez y la consistencia eventual al garantizar la consistencia transaccional. Al utilizar un intermediario de mensajes, protege los sistemas posteriores de verse sobrecargados controlando el flujo de datos entre los sistemas de origen y de destino y protege contra los problemas de disponibilidad de los sistemas posteriores.
Cuando se requiera el orden de mensajes, habilite las sesiones de Azure Service Bus en la cola o suscripción. El productor debe asignar un SessionId coherente, como el registro de Dataverse o el identificador de agregado, a los mensajes relacionados para que se procesen en orden dentro de esa sesión. Diseñe los consumidores para el procesamiento idempotente, ya que este patrón proporciona entrega al menos una vez y pueden producirse mensajes duplicados. Cuando la detección de eventos que faltan o no están en secuencia es importante, los mensajes pueden incluir un número de secuencia de nivel de aplicación. Las garantías de ordenación se aplican dentro de una sesión en lugar de globalmente, y la solución debe definir cómo los reintentos y los mensajes enviados a la cola de mensajes fallidos afectan al procesamiento posterior de esa sesión.
Security
Mediante el uso de servicios Azure, Dataverse puede autenticarse en el agente de mensajes (Azure Service Bus) a través de identidades administradas de Azure a través de la característica de identidad administrada de Power Platform. Este enfoque elimina el riesgo de almacenar credenciales confidenciales y tiempos de inactividad causados al rotar secretos.
Eficiencia en el rendimiento
El uso de un broker de mensajes como Azure Service Bus ayuda a nivelar la carga para asegurarse de que las aplicaciones posteriores no se sobrecargan durante períodos de gran volumen.
Considere la posibilidad de usar una función de Azure en lugar de un complemento asincrónico de Dataverse para enviar mensajes a Azure Service Bus si los volúmenes se vuelven muy altos. Este enfoque proporciona la mayor escala y flexibilidad para procesar un gran volumen de registros en lotes y controlar errores transitorios.
Contributors
Microsoft mantiene este artículo. Los siguientes colaboradores escribieron este artículo.
Autores principales:
- Chris Piasecki, arquitecto de soluciones
Recursos relacionados
- TechTalk: patrones de integración para Dataverse
- Implementación del patrón de bandeja de salida transaccional mediante Azure Cosmos DB
- ¿Qué es Azure Service Bus?
- Use complementos para ampliar los procesos de negocio
- Descripción general de la identidad administrada de Power Platform
- Registros de ejecución de complementos de Dataverse