.Netサーバークラスタリング手法
-
03-07-2019 - |
質問
メッセージフローの以下の手順と同様に機能するマルチサーバークラスタフレームワークを開発したい。
クライアントから
- ゲートウェイサーバーがメッセージを受信しました
- ゲートウェイサーバーはACKメッセージ(UDP)を送信します
- メッセージは、ファクトリを介してバイナリからオブジェクトにカスタムデシリアライズされます
- メッセージはクラスター内のセカンダリサーバーにルーティングされ(構成ベース)、WCFを介してセカンダリサーバーにオブジェクトを送信します
- メッセージはセカンダリサーバーで処理されます。
サーバーから
- セカンダリサーバーはメッセージを作成し、ゲートウェイサーバーに送信します
- ゲートウェイサーバーバイナリはメッセージをシリアル化します
- ゲートウェイサーバーはバイナリをクライアントに送信し、ACKメッセージ(UDP)を待機します
サーバーは、同じアプリケーション内のローカル(WCFが初期化される)または他のシステムのいずれかで、サービスを指すように.configファイルを介して構成されます。
このようなアーキテクチャを作成するために働いた人はいますか?もしそうなら、あなたが遭遇した問題のいくつかは何ですか?
編集
システムは既存のプロトコルのサーバー側になるため、クライアントからサーバーへのプロトコルは基本的に変更できませんが、状態管理(クライアントはすべての呼び出しでセッションを送信します)、暗号化、サーバールーティング、パケット保護。
編集
誰かが.Netでクラスタリングを使用するオープンソースプロジェクトへのリンクを提供することさえできますか?
解決
編集誰かがリンクを提供することもできます を使用するオープンソースプロジェクトへ .Netでのクラスタリング?
このサンプルアプリケーションをご覧ください。サイトによると...
実証済みのテクノロジー サービス指向のn層設計 ASP.NETおよびWCF
- UI、ビジネスサービス、およびDBアクセスの明確な分離
- パフォーマンスのための設計とチューニング
- 動的クラスタリングによる水平方向のスケーラブル
- クラスター化されたサービスノードの集中構成管理
他のヒント
長時間実行されるトランザクションでセッション状態を維持することは、大きなハードルになる可能性があります。負荷分散ソリューションが、あるサーバーで開始され、別のサーバーで完了するセッションを考慮または収容できることを確認する必要があります。これは、ブラウザ/クライアントのCookieや共通データベースサーバーのエントリなどの外部ソースを介して状態を共有することで実現できます。あるいは、ハードウェア負荷分散ソリューションの多くは、「スティッキーセッション」を使用します。クライアントが常に同じサーバーに戻るようにします(たとえばIPアドレスに基づいて)