2010-02-01 5 views
2

저는 현재 다중 환경 BizTalk 배포를 담당하고 있으며 BizTalk 그룹에 두 개 이상의 BizTalk Server를 배포하여 고 가용성 및 확장 성을 제공 할 계획입니다.BizTalk 그룹의 여러 BizTalk Server - 동시성을 처리하는 방법?

이제 WCF SQL 및 파일 어댑터와 같은 어댑터의 동시성을 처리하는 방법에 대해 걱정할 필요가 있습니다. 예를 들어 SQL 어댑터에서 두 개의 BizTalk 수신 호스트가 동일한 DB 테이블에서 폴링을 계속 수행 할 가능성이 있기 때문입니다.

처음에는 SQL에 대한 내 아이디어가 잠금 힌트를 사용하지만 이것에 대한 다른 우려가 있는지 또는 다른 입증 된 솔루션이 있는지 정말 잘 모르겠습니다.

파일 어댑터에 대해 알고있는 것은 다른 BizTalk 호스트가 파일을 가져 오는 것을 피할 수 있도록 처리 중에 파일의 파일 이름을 변경하도록 수신 어댑터를 설정할 수 있다는 것입니다.이 솔루션이 충분한 지 잘 모르겠습니다. 이미 동시성을 처리합니다.

나는 도움이나 제안을 부탁드립니다. 일반 대부분의 BizTalk 어댑터에서

많은 감사

답변

7

는 상자 밖으로 당신을 위해 경쟁 조건을 방지 할 수 있습니다.

예를 들어, BizTalk 파일 어댑터는 이미 파일 잠금을 구현하므로 다른 호스트에있는 파일 어댑터의 여러 인스턴스가 동일한 파일을 읽지 않습니다.

파일 이름 변경 기능의 사용이

합니다 (MSDN documentation에서) 또한 파일 을 구성 할 수 있습니다 아래에 설명되어 을 처리 할 때 파일의 이름을 변경하는 어댑터를받을 수 있습니다. 당신은 수신 위치가 종료 여러 인스턴스를 실행할 때 안전하지 않습니다 여러 어댑터가 있습니다

다시 시작되면 수신 어댑터가 중복 메시지를 생성하지 않도록 파일의 이름을 변경해야합니다. 여기에는 POP3, FTP, MSMQ/MSMQT 및 데이터베이스 어댑터가 폴링 시나리오에 포함됩니다 (그러나 다른 경우도있을 수 있음).

이러한 어댑터의 경우 클러스터 된 호스트의 BizTalk 기능을 사용할 수 있습니다. 클러스터 된 호스트의 사용 및 구성을 설명하는 게시물 here이 있습니다. 이것은 SQL 폴링이 중복을 생성하지 않도록하는 가장 쉬운 방법입니다. 필요한 경우 SQL 레벨에서이를 수행 할 수도 있습니다.

이상에서는 비즈니스 프로세스의 세부 사항에 대해 실제적으로 익숙해지고 있으며 각 사례별로 디자인해야 할 것입니다. 예를 들어, 같은 파일이 소스 시스템에 의해 두 번 제공되면 어떻게 될까요?MSDN의이 부분은 또한 당신을 도울 수

BizTalk - Receive Port reading twice from DB

Network Load Balancing Biztalk Instances

0

답변과 제공된 링크에 감사드립니다. 실제로 나는 이미 그것들 중 일부를 읽었으며 또한 그 해결책에 관한 몇 가지 시험을 할 수있었습니다. SQL 어댑터의 경우 BizTalk 호스트 클러스터링은 좋은 솔루션이지만 BizTalk Group (호스트 중복성)의 이점을 최대한 활용하지 않아 확장 성을 확보 할 수 없습니다. 이런 이유로 우리는 클러스터링 솔루션을 피하기로 결정했지만 고 가용성을 위해 클러스터링이 실제로 필요한 MessageBox를 선택했습니다. 우리가 달성하고자하는 것은 액티브/액티브입니다. 또는 BizTalk Server 그룹을 통해로드 균형 조정이라고 말하면됩니다. 즉, 여러 SQL 수신 어댑터 폴링을 동시에 수행하게됩니다. 처음에는 내 솔루션이 쿼리 힌트를 통해 잠금 힌트를 처리했습니다. 아래는 내 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; 

내가 작성한 SP에 대한 의견을 보낼 수 있습니까? BizTalk WCF-SQL 어댑터에서 읽은 약 50 만 개의 데이터로 여러 테스트를 수행 한 다음 동시에 수천 개의 데이터가 쓰여지고 예상했던대로 작동하는 것으로 나타났습니다.

솔루션은 괜찮은 것처럼 보이지만 이러한 종류의 솔루션에 어떤 영향이 있는지 아직 확실하지 않습니다. 어쩌면 당신은 나에게 이것도 함께 보여줄 수 있습니까?

또한이 기사의 SQL Server Service Broker를 사용할 수 있는지 생각 중입니다. 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

지금 당장은 여전히이 문제를 해결할 수 있는지 확실하지 않습니다.

많은 감사합니다.

+0

biztalk 그룹과 클러스터 된 호스트의 기본로드 balanding을 가질 수 있습니다. 어댑터의 클러스터 된 호스트 만 사용하고 다른 모든 클러스터되지 않은 호스트가 있습니다. 그 절차에 관해서는 살펴볼 것이지만, BizTalk 질문을 확인할 수없는 많은 SQL 전문가가 있으므로 새로운 질문으로 게시하는 것이 좋습니다. –