0

〜1000のクライアントを持つ高可用性WebAPI(たとえば、99.95%、https://azure.microsoft.com/en-us/documentation/articles/resiliency-disaster-recovery-high-availability-azure-applications/)アプリケーションを持つAzureホストのWebロールが指定されています。クライアントはReactJSアプリケーションです。 WebAPIアプリケーションは、特定のクライアントグループに合わせた通知をプッシュします(たとえば、すべてのクライアントユーザーがすべてのイベントに関心を持つわけではなく、> 1ユーザーが同じイベントに関心を持つ可能性があります)。SignalRとハイアベイラビリティ - サーバーが停止してもハブクライアントが復旧できますか?

SignalRのドキュメントを読んでいくつかのサンプルを再生することから、SignalR Groupsは適切なReactJSアプリケーションインスタンスに正しいイベントを流すのに役立ちます。さらに、SignalRスケールアウトプロバイダの1つを使用して、適切なWebAPIサーバインスタンスからクライアントにプッシュするようにします。

質問:「正しいWebAPI」インスタンスが利用できなくなった場合、アプリケーションはどのように復旧しますか?

ハブクライアントごとに少なくとも1つの「サーバー」が存在することを念頭に置いて、ある程度の複雑さを伴うサーバー側のアクティブ/パッシブスキームを想像することはできますが、サーバーはハブに対して(迷惑な方法で)クライアント? 1つ以上のサーバーに(グループに登録するとき)各ハブクライアントを接続させることはできますか?

アプリケーションがSignalRでどのようにこの問題を解決しましたか?

答えて

0

スケールアウトプロバイダとバックプレーンが、クライアントが不要なサーバーに対して必要とする保護機能を提供しているという明確な点は忘れてしまったと思います。クライアントは特定のサーバーに接続するのではなく、負荷分散された名前に接続します。

+0

私の元の質問はまだ立っています。私の上記の答えは正しくありません。ドキュメントの私の読書は、スケールアウトバックプレーンは、すべてのWebサーバーがすべてのクライアントについて知っていることです。しかし、それがどのようにグループが果たしているかははっきりしない。 2つのグループ、 'GroupA'と' GroupB'を持つ2つのWebマシン、 'WebA'と' WebB'、2つのクライアント 'ClientA'と' ClientB'を仮定します。 'ClientA'が' WebA'に接続して 'GroupA'に参加する場合、' WebB'は 'ClientA'上でAPIを呼び出すことができますか? 私は、WebAがClientA上でAPIを呼び出すことができると考えています。これは正しいです? –

+0

グループがスケールアウトのバックプレーンでうまく動作することがわかりました。カスタムコードは必要ありません。 ServiceBus with Groupsを使用して、各アプリケーションが適切なグループにトラフィックを送信できるWebAPIアプリケーション(OWIN)をホストするIISExpressの2つのインスタンスで確認しました。また、 'ThreadPool.QueueWorkItem'ワーカーは、両方のWebサーバーに接続していたグループ内のクライアントにトラフィックを送信することができます。 @DamianEdwards 2013のプレゼンテーション(https://channel9.msdn.com/Events/Build/2013/3-502)にいくつかのコメントが寄せられ、カスタムソリューションが必要だと私は思っていました。必要はありません。 –

関連する問題