0

私は本質的に情報ストリームを処理し、その後条件に基づいて電子メールを送信するステートレスサービスを設計しています。私はサービスファブリックでこれをホストしたいが、障害が発生した場合は複数のアクティブな状態でアクティブにする。ただし、「プライマリ」から送信される電子メールを制限するにはどうすればよいだろうか。サービスファブリックを使用したサービスアーキテクチャ

アクティブ/アクティブは、パーティション化されたステートフルサービスにのみ有効ですか? サービスがアクティブ/パッシブでなければならない場合、サービスはアクティブな状態になったらどのようにして知りますか?

答えて

1

SF内でleader election(使用できる)の組み込みメカニズムはありません。 blob leaseを使用できます。 リーダは、リースを取得した人になり、「生きている」ときにリフレッシュする必要があります。クラッシュした場合、それはリースを失い、別のインスタンスがそれを取得できます。 これは外部依存関係を導入し、システムの全体的な可用性を低下させます。

同様のことを行うステートフルサービスを作成することもできます。

0

私はカップルの理由のためにステートフルサービスとなります。

  • あなたは一つだけが「主」のメールを処理したいです。
  • プライマリがダウンした場合のために、 バックアップ/レプリカが必要です。これはデフォルトで ステートフルサービス
  • ステートレス サービスの複数のインスタンスでは困難です。 複数のインスタンスで処理されたストリームのストリームがある場合。電子メールを送信するための条件が 「プライマリ」ノードで発生していない場合はどうなりますか?次に、データ/状態を「プライマリ」ノードに転送する別のメカニズムが必要です。
0

別の方法として、データストリームを処理するステートレスワーカーのプールを用意し、電子メールを送信するたびに別のサービス(ServiceRemoting/Rest/ServiceBus /その他の通信チャネルを介して)このサービスは電子メールの実際の送信を処理します。

この電子メール送信サービスがステートフルであれば、問題がある場合は重複を処理できます。

関連する問題