2016-12-30 10 views
0

サービスファブリックアプリケーションでは、アクターまたはサービスを使用します。コードブロックが各ノードで実行されるようにするにはどうすればよいでしょうか。サービスファブリック内の各ノードで何かを実行する方法

最初の考えは、インスタンスカウントが-1に設定されているサービスでなければならないということですが、インスタンス数を3に設定した場合も同様です。どのようにして、各インスタンスで何らかの操作が実行されたことを保証するサービスを設計することができます。

実行する必要のある操作を制御する状態のActorがあるとします。serviceProxyを使用して各インスタンスのメソッドを呼び出すこともできますが、それについてはわかりません。可能であるか、そうするのが適切な方法であれば?

答えて

1

のみステートレスサービスはインスタンス数に-1を与えることができるいくつかの背景情報を。特定のインスタンスをターゲットにする場合はServiceProxyを使用できません。

ステートフルサービスは、1つ以上のpartitions(データシャード)を使用して展開されます。パーティション数は、サービス展開の一部として事前に設定されており、自動的に変更することはできません。たとえば、クラスタがスケールアウトされている場合、パーティションは自動的には追加されません。

自治労働者

たぶん、あなたは(すべてのノード上の)ステートレスのサービスを実行して、制御フローを反転し、それらを作業項目のための「リポジトリ」を照会することができます。リポジトリは、作業項目をキューに格納するステートフルなサービスにすることができます。

このように、インスタンスを増やす(クラスタを拡大する)と、コードを変更することなくスループットが向上します。ステートレスサービスインスタンスは自律型ワーカーになります。 (インテリジェントオーケストレーターの俳優とは対照的に)

+0

私はこのような何かをしました。あなたが説明したように、私はサービス業務のすべての-1インスタンスを持っていました。そして、ステートフルなアクターに状態を保存しました。 –

関連する問題