私は現在、クラウド全体を把握しようとしています。また、Stackoverflow で同様の質問をたくさん読んでいます。
私が構築しようとしているのは、高 I/O ストレージ サービスのようなものです。FTP を介して大量のデータ (50 から 100 メガビット/秒を常に話している) を取得し、その後、受信したデータの一部に対して後処理を実行します。
アプリケーションは現在、Windows Azure VPS にデプロイするために C# で作成されています。私は、最大レベルの制御とセキュリティのために、独自の単純な FTP サーバーを作成しています (独自の認証プロセスのように)。これは問題ではありません。私はソケット サーバーと高性能 .NET アプリケーションにかなり慣れてきたからです。
ただし、常に単一のインスタンスとして実行されます。VPS サーバーで実行されている単一の Windows サービス / コンソール アプリケーションのパフォーマンスをさらに引き出すことが常に求められてきました。
今回は事実に直面しなければなりません。その VM がどれほど大きくなっても、データが増加する場合、データはサーバーの I/O キャパシティをすぐに圧倒する可能性があります (データは顧客によって生成されるため、顧客が増える = データが増える!)。
では、クラウドで負荷分散を行うにはどうすればよいでしょうか? 「クラウド サービス」と「クラウド ワーカー」などについて読んだことがありますが、1 つのサービスからストレージを使用し、データベースを 1 つのサービスから使用する場合、それは非常に複雑になり、価格設定が非常に曖昧に見えると思います。帯域幅やその他のものを考慮しながら、別のサービスと 3 番目のタイプのサービスからの作業。私が知っていて、自信を持って作業できる環境では、シンプルに保ちたいと思っています。だからVPSです。
しかし、どのように負荷分散を行うべきですか? これは初めてのことで、非常に野心的なプロジェクトであることはわかっていますが、とにかく学びたいだけです!
要約すると、Windows Azure VPS で実行されている C# で記述されたカスタム FTP アプリケーションの負荷分散です。アプリケーション/サービスのすべてのインスタンスは、同じストレージとデータベースにアクセスできる必要があります。インスタンス間の通信は必要ありません。
だから、あなたが得たものをすべて私に投げつけてください。:)