2016-05-14 4 views
3

Microsoft Azure Service Fabricの新機能です。私はSFでホストされている一種のソーシャルネットワークを持っていると思っています。各ユーザはこのシステムのアクタです。その後、いくつかのものが人気を集めています。私は、その場合、多くの人がその人の一人の人を見て、彼の俳優のために多くの入力書き込み操作がビューカウンタを増やしていることを意味します。それは、現在の「人気のある」俳優に負荷が上がることを意味し、彼はすべての要求を処理しなければならず、死ぬことはありません。私の質問は次のとおりです:操作が多すぎる場合の信頼できるアクターの動作

  1. この「人気のある」俳優へのすべてのリクエストはどこにどのように表示されましたか?
  2. 要求のキューですか?そしてもしそうなら、俳優が倒れていれば、このキューはどうなりますか?

答えて

3

人気のある俳優がボトルネックになります。アクターはシングルスレッドなので、一度に1つの要求しか処理できません。単一のユーザーに対する同時要求を処理する必要がある場合は、Reliable Servicesを直接使用します。

アクターに送信されたメッセージはキューに入れられますが、信頼性はありません。アクターが別のノードにフェイルオーバーすると、そのキューは失われます。

詳細情報については、こちらを同時実行上のセクションを参照してください。https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-actors-introduction/

+0

私はあなたのことをよく理解していません。あなたはsignleユーザーにリクエストを処理する必要がある場合は、Reliable Servicesを直接使用するように指示しました。しかし、それはまさに私の目標です。私は、APIゲートウェイステートレスサービスを持っています。これは、アプリケーション内のすべてのユーザーにサービスを提供するステートフルマイクロサービスにリクエスト(ユーザー情報を取得)をプロキシします。そして、すべてのユーザーが俳優として発表しました。提案は、すべてのユーザーをステートフルな信頼できるサービスの中に直接格納する必要があり、それらをアクターとして提示しないことを意味しますか? – matterai

+0

良い記事がありますhttps://acom-swtest-2.azurewebsites.net/en-us/documentation/articles/service-fabric-reliable-actors-pattern-distributed-networks-and-graphs/?rnd=1私は解決策を得ようとしています。これは、以下で説明するのと同じモデルを使用します。何が私はそれから逃しましたか? – matterai

1

異なるアクターに読み書きを中断することを検討します。このようにして、「人気のある」俳優の読み込みは、書き込み操作を実行している間は決してブロックされません。また、何かを待ち行列に入れようとしている場合は、読み込み要求ではなく、書き込み要求を待ち行列に入れたいと思うように思えます。

Azure Storage Queueを使用している場合は、ポーラーがキューからメッセージを抜き取ることができ、予期しない結果やエラーが発生した場合は、エラーまたはポイズンキューとみなされます。

+0

私はそれが正しいアプローチであることを確認していません。たとえば、何百万人ものユーザーが「人気のある」俳優からの読書操作を行う可能性を許容することができますか? – matterai

0

Azure Storage Queueを使用する予定がある場合、クラウドデザインパターンCQRS(コマンドクエリ責任分担)の使用を検討することがあります。このようにして、私たちは俳優を気にしなくても、より良いことをデザインすることができます。キューがまだ値を保持しているアクタがダウンしているとしましょう。また、再びアップしたときに処理されます。アクターがクラッシュした場合に処理されている間に、ハーフクックされる可能性があります。したがって、キューメッセージはすぐに削除されず、特定の期間表示されなくなります。正常に処理されたキューメッセージのみを削除します。

サービスファブリッククラスタを自動スケールして、より多くの負荷を処理することもできます。

関連する問題