2

私は現在、複数環境の BizTalk 展開を担当しており、高可用性とスケーラビリティを提供するために BizTalk グループに 2 つ以上の BizTalk Server を展開することを計画しています。

たとえば、SQL アダプターの場合、2 つの BizTalk 受信ホストが同じ DB テーブルでポーリングを続ける可能性があるためです。

当初、SQL に対する私の考えはロック ヒントを使用することでしたが、これに関して他に懸念があるかどうか、または他の実証済みの解決策があるかどうかはよくわかりません。

ファイル アダプターの場合私が知っていることは、処理中にファイルのファイル名を変更するように受信アダプターを設定して、他の BizTalk ホストがファイルを取得しないようにすることです。 .

ヘルプ/提案をいただければ幸いです。

どうもありがとう

4

3 に答える 3

7

一般に、ほとんどの BizTalk アダプターは、すぐに使用できるように競合状態を回避します。

たとえば、BizTalk ファイル アダプターは既にファイル ロックを実装しているため、異なるホスト上のファイル アダプターの複数のインスタンスが同じファイルを読み取ることはありません。

ファイル名変更機能の使用法を以下に説明します ( MSDN ドキュメントより)

また、ファイルを処理するときにファイルの名前を変更するようにファイル受信アダプターを構成することもできます。受信場所がシャットダウンされて再起動された場合に、受信アダプターが重複したメッセージを生成しないように、ファイルの名前を変更する必要があります。

複数のインスタンスで実行すると安全ではないアダプターがいくつかあります。これらには、ポーリング シナリオの POP3、FTP、MSMQ/MSMQT、およびデータベース アダプターが含まれます (ただし、他にもある場合があります)。

これらのアダプターでは、クラスター化されたホストの BizTalk 機能を使用できます。クラスター化されたホストの使用法と構成を説明する投稿がここにあります。これは、SQL ポーリングで重複が生成されないようにする最も簡単な方法です。必要に応じて、SQL レベルでこれを実現することもできます。

それを超えると、実際にビジネス プロセスの詳細に入り込み、それぞれのケースに合わせて設計する必要があります。たとえば、ソース システムから同じファイルが 2 回提供された場合はどうなるでしょうか。

この件に関する詳細については、次の 2 つの SO 投稿を参照してください。

BizTalk - DB からポート読み取りを 2 回受信する

ネットワーク負荷分散 Biztalk インスタンス

于 2010-02-01T20:20:17.843 に答える
0

回答とリンクを提供していただきありがとうございます。実際、私はすでにそれらのいくつかを読んでおり、それらのソリューションに関するいくつかのテストを行うこともできました. SQL アダプターの場合、BizTalk ホスト クラスタリングは優れたソリューションであることが証明されていますが、スケーラビリティの目的で BizTalk グループ (ホストの冗長性) の利点を最大限に活用できません。そのため、高可用性のためにクラスタリングが本当に必要な 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 についてフィードバックをいただけますか? 約 500,000 のデータが BizTalk WCF-SQL アダプターによって読み取られ、同時に別の数千のデータが書き込まれるといういくつかのテストを行ったところ、期待どおりに機能していることが証明されました。

解決策は問題ないようですが、この種の解決策に何が影響するかはまだわかりませんが、これについても光を当てることができますか?

また、この記事の 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-ビズトーク.aspx

現在、私はまだそれをチェックしており、これをどのように解決できるかはまだわかりません.

どうもありがとう

于 2010-02-02T04:11:35.357 に答える
0

MSDN のこのセクションも役立ちます。

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

于 2010-02-01T20:24:55.073 に答える