2017-06-08 4 views
0

私は、顧客のために多数の製品の在庫を管理するステートフルサービスに取り組んでいます。各顧客は、自分のパーティションにこのステートフルサービスのインスタンスを持つテナントグループに属します。したがって、Id 10のテナントとId 11のテナントが同じパーティション内にある可能性があります(仮定します)。Azure Service Fabricは、パーティション間でステートフルなサービス状態を共有していますか?

各テナントは、Id = 100(たとえば)のアイテムのインベントリにアクセスできます。この商品を購入するたびに、このテナントの在庫が存在するかどうかを確認し、そうでなければ呼び出しアプリケーション(この場合は信頼できる俳優)に通知し、彼に知らせます。

しかし、私はアイテムIDのキーと在庫数で信頼できる辞書を保管していたことに気付きました。私は、サービスが別々のパーティションに属していても、同じオブジェクトにアクセスしていることに気付きました。これらのサービスが異なるパーティションに属していても、それらは同じ基本状態を維持していますが、これは本当ですか?

もしそうなら、この情報をActorレベルに直接格納する方が理にかなっていますか?私は俳優レベルで信頼できるコレクションを見ていないので、俳優によって呼び出されるステートフルサービスを構築しましたが、私の以前のAkka実装では、この状態をActorレベルで保存します。

誰かが似たようなことを実装していると私は不思議です。

ありがとうございます!

Anup Marwadi

答えて

0

なし、状態が異なるパーティション間で共有されていません。それは目的を破るだろう。大規模なデータセットを分割して管理しやすくします。

テナントごとにアプリケーションインスタンスを作成してマルチテナントを実装することを検討してください。このようにしてテナント間でデータを共有することは決してできず、簡単にテナントをバックアップ/オン/オフボードすることができます。

Thisの記事では、サービスパーティションを非常にうまく説明しています。

+0

ありがとうございます。私はそれも考えましたが、テストを開始したときに何かが正しく見えませんでした。確認するためにコードを確認する必要があります。私はあなたの投稿を続けます。 –

+0

こんにちは、私はついにその問題が何かを理解しました。私のローカル展開では、パーティション数は1に設定されていました.2番目の要求でパーティションキーが異なっていても、同じパーティションになります。パーティション数を10に増やした後、状況はもっと良く見え始めました。ありがとうございました。 –

関連する問題