Compartilhar via


Qual a função do Service Broker?

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

O Service Broker ajuda os desenvolvedores a criar aplicativos assíncronos, livremente acoplados, nos quais componentes independentes trabalham em conjunto para realizar uma tarefa. Esses componentes de aplicativo trocam mensagens que contêm as informações necessárias para concluir a tarefa. Este tópico descreve os seguintes aspectos do Service Broker:

  • Conversas

  • Ordenação e coordenação de mensagens

  • Programação assíncrona transacional

  • Suporte para aplicativos acoplados de maneira flexível

  • Componentes do Service Broker

Conversas

O Service Broker é projetado com base em funções básicas de enviar e receber mensagens. Cada mensagem é parte de uma conversa. Cada conversa é um canal de comunicação confiável e persistente. Cada mensagem e conversa têm um tipo específico que o Service Broker reforça para ajudar os desenvolvedores a gravarem aplicativos seguros.

Novas instruções Transact-SQL permitem que os aplicativos enviem e recebam essas mensagens de maneira segura. Um aplicativo envia mensagens a um serviço, que é um nome para um conjunto de tarefas relacionadas. Um aplicativo recebe mensagens de uma fila, que é uma exibição de uma tabela interna.

Mensagens para a mesma tarefa fazem parte da mesma conversa. Em cada conversa, o Service Broker garante que um aplicativo receba cada mensagem exatamente uma vez, na ordem em que foi enviada. O programa que implementa um serviço pode associar conversas relacionadas para o mesmo serviço em um grupo de conversação.

Segurança com base em certificado ajuda a proteger mensagens confidenciais e controla o acesso aos serviços. Uma analogia é pensar no Service Broker como um serviço postal. Para manter uma conversa com um colega distante, você pode comunicar enviando cartas pelo serviço postal. O serviço postal classifica e entrega as cartas. Você e seu colega então recuperam as cartas das caixas postais, leem, escrevem as respostas e enviam novas cartas até que a conversa termine. A entrega da carta acontece de forma assíncrona enquanto você e seu colega lidam com outras tarefas.

Dois usuários trocam correspondência por meio de um serviço postal.

Os programas podem usar o Service Broker como um serviço postal para dar suporte a conversas assíncronas com outros programas. As mensagens do Service Broker funcionam como cartas. Um serviço Service Broker é o endereço em que a agência postal entrega as cartas. As filas são as caixas postais que mantêm as cartas depois que elas são entregues. Os aplicativos recebem as mensagens, agem nas mensagens e enviam as respostas.

Quando um aplicativo envia uma mensagem para um serviço do Service Broker, ela é isolada dos detalhes de implementação do aplicativo na outra extremidade da conversa. O aplicativo que recebe pode ser dinamicamente reconfigurado ou substituído por um novo código sem afetar o aplicativo que envia. O aplicativo que recebe pode até mesmo ser desativado temporariamente; o único impacto será que o Service Broker continuará adicionando novas mensagens à fila até que o aplicativo receptor seja reiniciado.

Ordenação e coordenação de mensagens

O Service Broker controla a fila, uma técnica de programação de banco de dados comum, diferentemente dos produtos tradicionais em dois aspectos fundamentais:

  • As filas do Service Broker são integradas ao banco de dados.

  • As filas coordenam e ordenam as mensagens relacionadas.

Fila integrada significa que a manutenção e administração regular do banco de dados também inclui o Service Broker. Normalmente um administrador não tem nenhuma tarefa de manutenção rotineira relacionada ao Service Broker.

A estrutura do Service Broker fornece uma interface Transact-SQL simples para enviar e receber mensagens combinadas com um conjunto de garantias fortes para entrega e processamento de mensagens. O Service Broker garante que um programa receba cada mensagem em uma conversa somente uma vez, na ordem na qual a mensagem foi enviada, e não na ordem na qual a mensagem entrou na fila. Produtos de fila tradicionais fornecem mensagens na ordem em que foram inseridas na fila. Isso requer um aplicativo para determinar a ordem e o agrupamento das mensagens. O Service Broker garante que dois leitores de fila não possam processar mensagens da mesma conversa ou do mesmo grupo de conversas relacionadas simultaneamente.

As conversas do Service Broker têm dois lados. O lado que inicia a conversa é chamado iniciador; o outro lado é chamado destino. Cada lado tem um serviço; o serviço iniciador e o serviço de destino. Cada serviço tem uma fila de mensagem associada.

Abaixo, uma ilustração da troca de mensagens em um diálogo típico:

  • No iniciador:

  • Um programa começa a conversa.

  • O programa cria uma mensagem que contém os dados necessários para executar uma tarefa.

  • O programa envia a mensagem ao serviço de destino.

  • No destino:

    • A mensagem é colocada na fila associada ao serviço de destino.

    • Um programa recebe a mensagem da fila e executa o trabalho.

    • O programa responde enviando uma mensagem ao serviço iniciador.

  • No iniciador:

    • A mensagem de resposta é colocada na fila associada ao serviço iniciador.

    • Um programa recebe a resposta e a processa.

Esse ciclo se repete até que o iniciador termine a conversa porque não tem mais solicitações a enviar ao destino.

O Service Broker dá suporte a configuração de prioridades de 10 (alto) a 1 (baixo) para cada conversa. Isso garante que o trabalho de baixa prioridade não atrapalhe o de prioridade mais alta. Os sistemas do Service Broker podem ser configurados para oferecer diferentes níveis de serviço. Para obter mais informações, confira Prioridades de Conversa.

O Service Broker controla as tarefas mais difíceis envolvidas na gravação de aplicativos de mensagens. Essas tarefas difíceis incluem a coordenação da mensagem, a entrega segura da mensagem, o bloqueio e a inicialização de leitores de fila. Isso permite que os desenvolvedores de banco de dados se concentrem em como resolver problemas de negócios.

Programação assíncrona transacional

Na infraestrutura do Service Broker, a entrega de mensagem entre aplicativos é transacional e assíncrona. Como a transferência de mensagens do Service Broker é transacional, se uma transação for revertida, todas as operações do Service Broker na transação serão revertidas. Isso inclui operações de envio e recebimento. Na entrega assíncrona, o Mecanismo de Banco de Dados controla a entrega enquanto o aplicativo continua em execução. Para aprimorar a escalabilidade, o Service Broker fornece mecanismos para iniciar automaticamente programas que processam uma fila, quando há trabalho útil a ser efetuado pelo programa. Para obter mais informações, confira Ativação do Service Broker.

Programação assíncrona ajuda os desenvolvedores a gravar aplicativos que usam fila. Muitos aplicativos de banco de dados incluem tabelas que funcionam como filas de trabalho a ser realizado quando assim permitirem os recursos. As filas podem entregar dois benefícios a aplicativos de banco de dados:

  • Um aplicativo pode responder imediatamente a um usuário interativo depois de colocar sua solicitação de trabalho em uma fila. O aplicativo não precisa esperar que todo o trabalho associado à solicitação seja concluído antes de responder. A solicitação enfileirada será processada quando os recursos estiverem disponíveis. Isso permite que o banco de dados continue respondendo a usuários interativos e use eficientemente os recursos disponíveis.

  • O trabalho envolvido em uma única solicitação pode, às vezes, ser dividido em várias unidades de trabalho, processadas como transações separadas. Nesse caso, um aplicativo de banco de dados pode iniciar cada unidade de trabalho colocando uma solicitação em uma fila. O Service Broker estende essa ideia, permitindo que os aplicativos se espalhem em várias instâncias do Service Broker em computadores separados.

A codificação de aplicativos para ordenar e processar os itens corretamente é frequentemente complicada. Os desenvolvedores podem usar a funcionalidade do Service Broker incorporada ao Mecanismo de Banco de Dados para simplificar a codificação necessária para implementar com sucesso as filas de bancos de dados.

Suporte para aplicativos acoplados de forma flexível

O Service Broker dá suporte a aplicativos com acoplamento flexível. Aplicativos acoplados de forma flexível são compostos de vários programas que enviam e recebem mensagens independentemente um do outro. Tais aplicativos devem conter as mesmas definições de mensagens de troca e devem definir a mesma estrutura geral para a interação entre os serviços. No entanto, os aplicativos não precisam ser executados ao mesmo tempo, na mesma instância do SQL Server ou compartilhar detalhes de implementação. Um aplicativo não precisa saber o local físico ou a implementação do outro participante na conversa.

Componentes do Service Broker

O Service Broker tem três tipos de componentes:

  • Componentes de conversa. Grupos de conversação, conversas e mensagens formam a estrutura do runtime de um aplicativo do Service Broker. Aplicativos trocam mensagens como parte de uma conversa. Cada conversa faz parte de um grupo de conversa e um grupo de conversa pode conter várias conversas. Cada conversa do Service Broker é um diálogo. Um diálogo é uma conversa onde exatamente dois participantes trocam mensagens. Para obter mais informações sobre os componentes de conversa, confira Arquitetura de conversa.

  • Componentes de definição de serviço. Esses são componentes de design que especificam a estrutura básica das conversas que o aplicativo usa. Eles definem o tipo de mensagem para o aplicativo, o fluxo da conversa para o aplicativo e o armazenamento do banco de dados para o aplicativo. Para obter mais informações sobre os componentes de definição de serviço, confira Arquitetura de serviço.

  • Componentes de rede e segurança. Esses componentes definem a infraestrutura usada para trocar mensagens entre instâncias do Mecanismo de Banco de Dados. Para ajudar os administradores de banco de dados a gerenciar ambientes alterados, o Service Broker permite que os administradores configurem esses componentes independentemente do código de aplicativo. Para obter mais informações sobre os componentes de rede e segurança, confira Rede e segurança remota.

Componentes de definição de serviço, componentes de rede e componentes de segurança são parte dos metadados do banco de dados e da instância do SQL Server. Grupos de conversa, conversas e mensagens fazem parte dos dados que o banco de dados contém.

Confira também