Serviço do SQL Server Broker com Active - replicação ativa no lugar

2

Atualmente, temos dois datacenters no modo Ativo - Ativo e usando a replicação SQL entre os dois datacenters (com um pequeno atraso). Estou desenvolvendo um novo processo que usará o SQL Server Broker Service (ativador externo) para processar uma fila de tarefas com base no tempo.

Atualmente, há 1.200 empregos e cada um deve ser agendado uma vez a cada 15 minutos. Por isso, usei BEGIN CONVERSATION TIMER para agendar os trabalhos e um ativador externo para recuperar a mensagem da fila. Em teoria (e com alguns testes limitados), tudo parece funcionar corretamente.

Então, minha pergunta está relacionada à replicação SQL - neste cenário,

  1. Será que queremos as tabelas de fila replicadas?
  2. Eles podem ser replicados?
  3. Como posso dividir os trabalhos (de maneira um pouco uniforme) entre os datacenters sem o risco de executar o mesmo trabalho duas vezes?

Não estou muito claro sobre esse cenário e queremos evitar a execução do mesmo trabalho duas vezes. Eu pesquisei e pesquisei (principalmente na Google), mas não consigo encontrar nada de relevante na minha situação. Qualquer esclarecimento / orientação sobre esta questão seria muito apreciado.

TIA.

    
por Chris Gessler 20.07.2012 / 17:37

1 resposta

0

Replicar filas não é uma opção, pois elas não podem ser replicadas. Mas eu recomendo algo completamente diferente: Serviço Balanceamento de carga do corretor . Você pode ter uma bateria de serviços (no seu caso, dois) e declarar uma rota para cada um. À medida que você inicia as caixas de diálogo com esses serviços, o Service Broker carregará os diálogos entre esses serviços (eles são baseados em hash com base no conversation_id). Portanto, se você tiver 1000 trabalhos para agendar e, digamos, 10 estações de trabalho que podem executar esses trabalhos, você criaria um serviço executor em cada estação de trabalho (por exemplo, serviço 'Trabalhador', todos receberão o mesmo nome) e enviará mensagens para 'Trabalhador', sem especificar qual trabalhador. O SSB fará o balanceamento de carga dos trabalhos (as mensagens) em todos os destinos possíveis, resultando em um agendador de carga balanceada. A vantagem é que tudo é configuração de tempo de implementação. Você pode adicionar mais trabalhadores sem modificar uma única linha de código no aplicativo, apenas adicionando novas rotas.

Eu recomendo que você leia o artigo ligado, já que declarar várias rotas para serviços idênticos é um pouco complicado, já que o 'broker_instance' na rota desempenha um papel crucial.

    
por 23.07.2012 / 22:33