私は、ゲームシステムの基本アーキテクチャを作成しています。スケーリングとフェイルオーバーのためのメッセージベースであることが必要です。また、メッセージのパブリッシャ/サブスクライバ通知にソケットを使用します。私の挑戦は:私が持っているものと一緒に行くか、nServiceBusやMassTransitのような本格的なESBを使うべきか?メッセージベースのPub/Subフェイルオーバー
これまで私がこれまで持っていたことは、少し複雑です。まず第一に、それはポーカーシステムです。
クライアントはメッセージを受信するためにソケットに接続します。メッセージは、1つまたは複数のローカルテーブルキューにディスパッチされます。 (もちろん、複数のクライアントになることができます)。
バックエンドで実行されているカード・ディーラー・クライアントも、別のソケットを介して接続します。 (複数のディーラーが存在する可能性があります)。
バックエンドで実行されるロボットクライアントは、別のソケットを介して接続します。 (複数のロボットクライアントが存在する可能性があります)。
各クライアントとディーラーは、データベースに「サブスクライバ」レコードを作成します。これは、IPが何であるか、最終的にどのテーブルに接続されているかを示します。
概要:
クライアントごとにそれぞれ異なるソケットに接続することができますが、同じテーブルに加入すること。したがって、1つのテーブルに送られるメッセージは、メッセージがテーブル単位で出力されるように、複数のソケットによって処理される可能性があります。
これを達成する方法は、メッセージテーブルとControllerMessageテーブルがあることです。 ControllerMessageテーブルは、特定のコントローラによって処理されるすべてのメッセージを追跡します。私は単純なLEFT OUTER JOINを使用して、特定のコントローラが送信する必要のあるメッセージを判断します。
システムは素晴らしいです。相手方が予期せず接続を切断したり停止したりすると、即座に非同期ソケットが通知されるため、フェールオーバーは非常に高速かつ効率的です。
しかし...自分のESBをビルドするよりも面倒ですか?私はESBが提供できるメッセージの充実と適応をいくつか行っています。コードやXSLTスキーマを作成する必要があります。
私はESBを使用して検討しますが、これはJavaベースのESBです。私はいくつかの.NET ESBがあることを知っています。 – NickV