1

WCF を使用してクライアントと通信するクライアント サーバー アプリを設計中です。負荷が高くなり、分散型の設計が必要になる可能性があります。そのために、アプリケーションをいくつかのサービスに分割しました。リクエストを処理するために N 個のサービスを実行できます。

  • ログインサービス
  • ゲームサービス
  • ルームサービス

ログイン サービスは、ロード バランサを持つことができます。次に、実行中のゲーム サービスの 1 つに要求を送信します (異なるマシンで N 個のゲーム サービスが実行されている可能性があります)。

私が理解しようとしているのは、ログイン サービスがゲーム サービスについてどのように認識できるかということです。(この時点で非常に高いレベルで) 2 つの解決策を考えることができます。

1) ゲーム サービスが起動すると、それが誰で、どこにあるかを示すレコードがデータベースに作成され、ログイン サービスはそこをチェックしてすべてのサービスを見つけます。これには問題があり、サービスがドロップされ、リストが最新の状態に保たれているようです。

2)新しいサービスが参加すると、ログインサービスに接続し(それがどのように起こるかはわかりません。それを見つける方法について何らかのハードコーディングを推測します)、そのサービスに登録します。次に、ログイン サービスは DHT またはそれらのリストを保持して、要求のルーティング先を認識できるようにします。

私は分散アプリの世界全体に不慣れで、物事を行う良い方法を見つけようとしています。このプロジェクトは、部分的には私自身の知識と利益のためのものですが、実用的なアプリに発展することを願っています.

ありがとう

4

1 に答える 1

2

これはサービスバスに最適なアプリケーションだと思います。それをあなたのサービスが存在するプラットフォームにしましょう。バスは、ネットワークとそのホストの実際の物理構成を抽象化するレイヤーを提供し、スケーラビリティを可能にします...それはすべて基盤にあります.

バスを使用すると、サービス全体、またはより要点を言えば、ビジネス上の問題全体で通信するための pub/sub アプローチを進めることができます。

サービスのマニフェストを保持するための #1 のデータベース アプローチは避け、代わりにその情報をバスの実行構成に保持します。pub/sub アプローチと、それに含まれる可能性のあるルーティング情報を使用すると、適切なアプローチを取る必要があります。

NServiceBusまたはMassTransitを見てください。

于 2010-01-13T19:19:16.083 に答える