2

.Net でスケーラブルなマルチスレッド ソケット プッシュ サーバーを設計し始めたところです。これは、最初はノードあたり 10,000 クライアントを処理します。これを設計することは非常に複雑になる可能性があるため、すべての専門家がガイド、リソース、ベスト プラクティスなどを提供してくれると本当に助かります。

私はソケットプログラミングについてあまり知らないので、誰かがオープンソースプロジェクトを提案してくれると本当に助かります...ググったのですが、良い解決策が見つかりませんでした.

これは、そのようなサーバーを設計したい他の人にも役立ちます。

[参考までに、このサーバーには .Net 4.0 を使用する予定です]

Async Socket とそのPinning 関連の問題に関する多くの情報を読んでいます。その問題は .Net 4.0 でもまだ存在しますか?

高度なありがとう...

4

3 に答える 3

5

妥当なハードウェア上で .Net を使用した 10k の同時接続はそれほど問題にはならないはずですが、いつものように、サーバーで実際に行っていることと、各接続が互いにどの程度分離されているかによって異なります。結局のところ、「ノードごとに 10,000 のクライアントを処理する」と言っても、各ノードのハードウェア要件、各接続で出入りするデータの量、および各接続で発生する可能性のある CPU の量を定義しないと、ほとんど意味がありません。その仕事をする必要があります。ここで、これらのあいまいで手を振るスケーラビリティの質問について話します: http://www.serverframework.com/asynchronousevents/2010/12/one-million-tcp-connections.html

でも:

まず、非同期ソケット API を見て、スレッド化の問題をほとんど無視する必要があります。.Net の非同期ソケットがスレッド化を処理し、I/O 完了ポート (非常にスケーラブルなカーネル オブジェクト) を使用してスレッド化を管理します。

また、非同期送信を使用している場合、TCP フロー制御が開始されると、完了するまでに時間がかかる可能性があることに注意してください。こちらを参照してください。

と...

次に、0 日目からスケーラビリティをテストし、開発中ずっとテストを続ける必要があります。その理由については、http ://www.serverframework.com/asynchronousevents/2010/10/how-to-support-10000- に書いています。 or-more-concurrent-tcp-connections---part-2---perf-tests-from-day-0.html

于 2011-01-11T08:41:04.993 に答える
0

「スケーラブル」と「マルチスレッド」は相反すると言う人もいるかもしれません。そのような決定を下す前に、デザイン空間を調査する必要があります。スケーラビリティが必要な場合は、スレッドを 1 つだけ使用することもできますが、それは何を提供しているかによって異なります。

于 2011-01-11T04:05:23.927 に答える
0

スケーラビリティは最優先事項の 1 つであり、安定性も前提としていますが、Erlang が適していることがわかりました。耐障害性と拡張性に優れています。さまざまなオプションを調査する時間があれば、少なくともそれを検討することをお勧めします.

于 2011-01-11T04:29:46.147 に答える