5

サービス指向アーキテクチャで分散トランザクションが意味を持つのはいつですか?

4

2 に答える 2

2

分散トランザクションは、SOA 環境で頻繁に使用されます。複数のサービスを呼び出す複合サービスがある場合、基になるサービス呼び出しは単一のトランザクションとして処理する必要があります。ビジネス プロセスでは、ステップのロールバックを許可する必要があります。基盤となるリソースで許可されている場合は、2 フェーズ コミットを使用できますが、多くの場合、それは不可能です。このような場合、失敗したステップの前に呼び出されたサービス/リソースに対して、補正アクションを実行する必要があります。つまり、成功したステップを逆の順序で元に戻します。
架空の例: 通信会社は、6 つのサービス コールを顧客に提供する新しい VoIP 製品をプロビジョニングします。

  1. 在庫を照会して、顧客が適切な機器を持っていることを確認します
  2. 仲介によるお客様の機器の構成
  3. 新しい構成でインベントリを更新する
  4. 評価エンジンを設定して顧客の CDR をカウントする
  5. 請求ソフトウェアを設定して、正しい料金プランで顧客に請求する
  6. プロビジョニング プロセスの結果で CRM システムを更新する

上記の 6 つの手順は、1 つのトランザクションの一部である必要があります。たとえば、インベントリの更新に失敗した場合、顧客の機器構成を元に戻す必要がある場合があります。

于 2010-04-04T12:36:21.493 に答える
1

それらが理にかなっている場合ではありません。トランザクション (分散されているかどうかに関係なく) は、一貫性を保証するために、任意の選択ではなく必要に応じて実装されます。別の方法は、最終的な一貫性を確保するために調整プロセスを実装することです。

古典的な銀行の例 (口座 A から口座 B へのお金) では、トランザクションの一貫性は非常に重要です。一部の在庫システム (在庫の確認、在庫の減少、顧客への販売) では、在庫レベルが保証されているのではなく、ほぼ正確であっても問題ない場合があります。その場合、失敗 (在庫の減少、販売の失敗) を無視すると、後で調整することで対処できます。

于 2010-05-27T02:26:33.833 に答える