Integração empresarial no Azure através de filas de mensagens e eventosEnterprise integration on Azure using message queues and events

Esta arquitetura de referência integra-se os sistemas de back-end empresariais, com filas de mensagens e eventos para desacoplar serviços para uma maior escalabilidade e confiabilidade.This reference architecture integrates enterprise backend systems, using message queues and events to decouple services for greater scalability and reliability. Os sistemas de back-end podem incluir software como um sistemas de serviço (SaaS), serviços do Azure, e de serviços da web existente na sua empresa.The backend systems may include software as a service (SaaS) systems, Azure services, and existing web services in your enterprise.

Arquitetura de referência para a integração empresarial com filas e eventos

ArquiteturaArchitecture

A arquitetura mostrada aqui baseia-se numa arquitetura mais simples que é mostrada na integração empresarial básica.The architecture shown here builds on a simpler architecture that is shown in Basic enterprise integration. Essa arquitetura utiliza [Logic Apps] logic-apps orquestrar os fluxos de trabalho e [gestão de API] apim criar catálogos de APIs.That architecture uses Logic Apps to orchestrate workflows and API Management to create catalogs of APIs.

Esta versão da arquitetura adiciona dois componentes que ajudam a tornar o sistema mais fiável e escalável:This version of the architecture adds two components that help make the system more reliable and scalable:

Comunicação assíncrona usando um mediador de mensagens oferece diversas vantagens em relação a fazer chamadas síncronas, diretas aos serviços de back-end:Asynchronous communication using a message broker provides a number of advantages over making direct, synchronous calls to backend services:

  • Fornece a redistribuição de carga para lidar com picos de cargas de trabalho, com o padrão de nivelamento de carga baseada na fila de.Provides load-leveling to handle bursts in workloads, using the Queue-Based Load Leveling pattern.
  • Forma fiável, controla o progresso de fluxos de trabalho de longa execução que envolvem vários passos ou várias aplicações.Reliably tracks the progress of long-running workflows that involve multiple steps or multiple applications.
  • Ajuda de desassociar os aplicativos.Helps to decouple applications.
  • Integra-se com os sistemas existentes baseados em mensagens.Integrates with existing message-based systems.
  • Permite que o trabalho em fila de espera quando um sistema de back-end não está disponível.Allows work to be queued when a backend system is not available.

O Event Grid permite vários componentes do sistema para reagir a eventos à medida que acontecem, em vez de depender de tarefas de sondagem ou agendadas.Event Grid enables the various components in the system to react to events as they happen, rather than relying on polling or scheduled tasks. Tal como acontece com uma fila de mensagens, ele ajuda a desacoplar serviços e aplicações.As with a message queue, it helps decouple applications and services. Uma aplicação ou serviço pode publicar eventos e qualquer interessados assinantes serão notificados.An application or service can publish events, and any interested subscribers will be notified. Novos subscritores podem ser adicionados sem atualizar o remetente.New subscribers can be added without updating the sender.

Muitos serviços do Azure suportam o envio de eventos para o Event Grid.Many Azure services support sending events to Event Grid. Por exemplo, uma aplicação lógica pode escutar um evento quando são adicionados novos ficheiros para um armazenamento de Blobs.For example, a logic app can listen for an event when new files are added to a blob store. Este padrão permite que os fluxos de trabalho reativos, em que o carregamento de um ficheiro ou colocar uma mensagem numa fila início a uma série de processos.This pattern enables reactive workflows, where uploading a file or putting a message on a queue kicks off a series of processes. Os processos podem ser executados em paralelo ou numa sequência específica.The processes might be executed in parallel or in a specific sequence.

RecomendaçõesRecommendations

As recomendações descritas [integração empresarial básica] basic-enterprise-integration aplicam-se a esta arquitetura.The recommendations described in Basic enterprise integration apply to this architecture. As seguintes recomendações também se aplicam:The following recommendations also apply:

Service BusService Bus

Do Service Bus tem dois modos de entrega pull ou push.Service Bus has two delivery modes, pull or push. No modelo de extração, o recetor consulta continuamente novas mensagens.In the pull model, the receiver continuously polls for new messages. Consulta pode ser ineficiente, especialmente se tiver várias filas que cada uma recebe algumas mensagens, ou se há muito tempo entre as mensagens.Polling can be inefficient, especially if you have many queues that each receive a few messages, or if there a lot of time between messages. No modelo de push, o Service Bus envia um evento através do Event Grid quando existem novas mensagens.In the push model, Service Bus sends an event through Event Grid when there are new messages. O receptor assina esse evento.The receiver subscribes to the event. Quando o evento é acionado, o destinatário recebe o lote seguinte de mensagens do Service Bus.When the event is triggered, the receiver pulls the next batch of messages from Service Bus.

Quando cria uma aplicação lógica para consumir mensagens do Service Bus, recomendamos que utilize o modelo de envio com integração do Event Grid.When you create a logic app to consume Service Bus messages, we recommend using the push model with Event Grid integration. Geralmente é mais rentável eficiente, porque a aplicação lógica não necessita de consultar do Service Bus.It's often more cost efficient, because the logic app doesn't need to poll Service Bus. Para obter mais informações, consulte do Azure Service Bus para descrição geral da integração do Event Grid.For more information, see Azure Service Bus to Event Grid integration overview. Atualmente, o Service Bus escalão Premium é necessária para as notificações do Event Grid.Currently, Service Bus Premium tier is required for Event Grid notifications.

Uso PeekLock para aceder a um grupo de mensagens.Use PeekLock for accessing a group of messages. Quando utiliza PeekLock, a aplicação lógica pode realizar passos para validar cada mensagem antes de a conclusão ou abandono da mensagem.When you use PeekLock, the logic app can perform steps to validate each message before completing or abandoning the message. Essa abordagem protege contra a perda acidental de mensagens.This approach protects against accidental message loss.

Event GridEvent Grid

Quando um acionador do Event Grid é disparado, significa pelo menos um Ocorreu o evento.When an Event Grid trigger fires, it means at least one event happened. Por exemplo, quando uma aplicação lógica recebe um acionadores do Event Grid para uma mensagem do Service Bus, ele deve assumir que seria disponíveis para processar várias mensagens.For example, when a logic app gets an Event Grid triggers for a Service Bus message, it should assume that several messages might be available to process.

Grelha de eventos utiliza um modelo sem servidor.Event Grid uses a serverless model. A faturação é calculada com base no número de operações (execuções de evento).Billing is calculated based on the number of operations (event executions). Para obter mais informações, consulte preços do Event Grid.For more information, see Event Grid pricing. Atualmente, não existem não existem considerações de camada para o Event Grid.Currently, there are no tier considerations for Event Grid.

Considerações de escalabilidadeScalability considerations

Para atingir maior escalabilidade, o escalão Premium do Service Bus pode aumentar horizontalmente o número de unidades de mensagens.To achieve higher scalability, the Service Bus Premium tier can scale out the number of messaging units. Configurações de escalão Premium podem ter um, dois ou quatro unidades de mensagens.Premium tier configurations can have one, two, or four messaging units. Para obter mais informações sobre o dimensionamento do Service Bus, consulte melhores práticas para melhorar o desempenho através da utilização de mensagens do Service Bus.For more information about scaling Service Bus, see Best practices for performance improvements by using Service Bus Messaging.

Considerações de disponibilidadeAvailability considerations

Reveja o SLA para cada serviço:Review the SLA for each service:

Para ativar a ativação pós-falha se ocorrer uma falha grave, considere a implementação de recuperação após desastre geográfico no Premium do Service Bus.To enable failover if a serious outage occurs, consider implementing geo-disaster recovery in Service Bus Premium. Para obter mais informações, consulte recuperação de desastre geográfico de Azure Service Bus.For more information, see Azure Service Bus geo-disaster recovery.

Considerações de segurançaSecurity considerations

Para proteger o Service Bus, utilize a assinatura de acesso partilhado (SAS).To secure Service Bus, use shared access signature (SAS). Pode conceder um acesso de utilizador aos recursos do Service Bus com direitos específicos usando autenticação de SAS.You can grant a user access to Service Bus resources with specific rights by using SAS authentication. Para obter mais informações, consulte do Service Bus autenticação e autorização.For more information, see Service Bus authentication and authorization.

Se tiver de expor uma fila do Service Bus como um ponto de final HTTP, por exemplo, para publicar novas mensagens, utilize a gestão de API para proteger a fila por fronting o ponto final.If you need to expose a Service Bus queue as an HTTP endpoint, for example, to post new messages, use API Management to secure the queue by fronting the endpoint. Em seguida, pode proteger o ponto final com certificados ou de autenticação OAuth conforme apropriado.You can then secure the endpoint with certificates or OAuth authentication as appropriate. A maneira mais fácil de proteger um ponto final está a utilizar uma aplicação lógica com um acionador de pedido/resposta HTTP como um intermediário.The easiest way to secure an endpoint is using a logic app with an HTTP request/response trigger as an intermediary.

O serviço do Event Grid protege a entrega de eventos por meio de um código de validação.The Event Grid service secures event delivery through a validation code. Se utilizar o Logic Apps para consumir o evento, validação é executada automaticamente.If you use Logic Apps to consume the event, validation is automatically performed. Para obter mais informações, consulte Event Grid segurança e autenticação.For more information, see Event Grid security and authentication.