Pergunta

Atualmente, sou responsável por colocar uma implantação de BizTalk de vários ambiente e estamos planejando implantar dois ou mais servidores BizTalk em um grupo BizTalk para fornecer alta disponibilidade e escalabilidade.

Nossa preocupação agora é como lidar com a simultaneidade para adaptadores como o WCF SQL e os adaptadores de arquivos, porque é possível que, por exemplo, seja o adaptador SQL que dois hosts de recebimento do BizTalk continuarão pesquisando na mesma tabela de banco de dados.

Inicialmente, minha ideia para o SQL é empregar dicas de bloqueio, mas não tenho certeza se há outra preocupação nisso ou se há outra solução comprovada.

Para o adaptador de arquivo, o que eu sei é que é possível definir o adaptador de recebimento para alterar o nome do arquivo do arquivo durante o processamento, para que outro host BizTalk evite pegar o arquivo, mas não tenho muita certeza se essa solução já é suficiente para lidar .

Eu apreciaria qualquer ajuda / sugestões.

Muito obrigado

Foi útil?

Solução

Dentro em geral A maioria dos adaptadores BizTalk evitará condições de corrida para você fora da caixa.

Por exemplo, o adaptador de arquivo BizTalk já implementa o bloqueio de arquivos; portanto, várias instâncias do adaptador de arquivo em hosts diferentes não lerão o mesmo arquivo.

O uso do recurso de renomeação de arquivos é explicado abaixo (do Documentação do MSDN)

Você também pode configurar o adaptador de recebimento do arquivo para renomear arquivos ao processá -los. Você deve renomear arquivos para garantir que o adaptador de recebimento não gere mensagens duplicadas se o local de recebimento for desligado e reiniciado

Existem vários adaptadores que não são seguros quando são executados em várias instâncias. Isso inclui (mas pode haver outros) os adaptadores POP3, FTP, MSMQ/MSMQT e banco de dados nos cenários de pesquisa.

Para os adaptadores, você pode usar o recurso BizTalk dos hosts em cluster. Há um post aqui explicando o uso e a configuração de um host em cluster. Esta é a maneira mais fácil de garantir que sua pesquisa SQL não produza duplicatas. Você também pode conseguir isso no nível SQL, se necessário.

Além disso, você está realmente entrando nos detalhes dos processos de negócios e precisará projetar para cada caso. Por exemplo - o que acontece se o mesmo arquivo for fornecido duas vezes por um sistema de origem?

Veja os dois seguintes, então postagens para obter mais informações sobre esse assunto:

BizTalk - Receba a leitura da porta duas vezes do banco de dados

Balanceamento de carga de rede Instâncias de biztalk

Outras dicas

Esta seção do MSDN também pode ajudá -lo:

http://msdn.microsoft.com/en-us/library/aa558765(bts.20).aspx

Obrigado pela resposta e pelos links que você forneceu. Na verdade, já li alguns deles e também fui capaz de fazer alguns testes sobre essas soluções. Para o adaptador SQL, o BizTalk Host Clustering prova ser uma boa solução, mas fará com que você não maximize a vantagem do grupo BizTalk (redundância do host) para fins de escalabilidade. Portanto, por esse motivo, decidimos evitar a solução de cluster, mas para a MessageBox, que realmente precisa do cluster para alta disponibilidade. O que estamos tentando realizar é ter um ativo / ativo ou devo dizer o balanceamento de carga por meio do BizTalk Server Group, o que significa que realmente teremos vários SQL recebem pesquisas de adaptador simultaneamente. Inicialmente, minha solução estava no nível da consulta, lidando com dicas de travamento, abaixo está a amostra do meu SP.

MERGE INTO EmployeeComp
USING (SELECT EmployeeID
FROM
[AdventureWorks].[dbo].[EmployeeComp] 
WITH (READPAST, UPDLOCK) 
WHERE
[AdventureWorks].[dbo].[EmployeeComp].[Status] = 0) e(EmployeeID)
 ON EmployeeComp.EmployeeID = e.EmployeeID
WHEN MATCHED THEN
 UPDATE SET
 STATUS = 2

OUTPUT Inserted.EmployeeID, Inserted.Name, Inserted.Status;

Você pode dar algum feedback com o SP que eu criei? Fiz vários testes com cerca de 500.000 dados sendo lidos pelo adaptador BizTalk WCF-SQL e, ao mesmo tempo, outros milhares de dados que estão sendo escritos e provam estar funcionando como o que eu esperava.

Embora a solução pareça estar bem, mas ainda não tenho certeza de quais são os impactos nesse tipo de solução, talvez você possa me lançar alguma luz com isso também?

Também estava pensando que, se é possível usar o SQL Server Service Broker deste artigo. http://blogs.msdn.com/adapters/archive/2008/06/30/using-the-wcf-sql-adapter-to-read-messages-from-ssb-queues-and-submit-them-to- biztalk.aspx

No momento, ainda estou checando com isso e ainda não tenho certeza se é possível resolver isso.

Muito obrigado

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top