高速シングルスレッドコメットサーバー、可能ですか?
-
28-09-2019 - |
質問
私は最近、サーバーが「最近のアクティビティ」ボックスなど、すべてのリスナーにまったく同じデータを含むイベントストリームを配信するいくつかのケースに遭遇しました。
Apacheのようなサーバーにスレッド処理を実行し、同じデータを含むすべての彗星ストリームのデータベースをクエリすることは非常に奇妙で非効率的であることがわかりました。
私がこれらのグローバル(ユーザーごとではない)ストリームに対して行うことは、データを連続的に発する単一のスレッドと、ヘッダーを出力してメインスレッドに「マージ」するすべての新しい要求の新しい(緑)スレッドを実行します。
1つのスレッドが複数のソケットを提供すること、または複数のクライアントが同じソケットを聴くことは可能ですか?
例
o =イベント
# threads received
| a b # 3
o / / # 3 -
|/_/
| # 1
o c # 2 a, b
| /
o/ # 2 a, b
o # 1 a, b, c
| # connection b closed
o # 1 a, c
このようなものは存在しますか?それは機能しますか?やることは可能ですか?
免責事項:私はサーバーの専門家ではありません。
解決
node.js-シングルスレッド、イベント駆動型サーバーをご覧ください。 JavaScriptをボーナスとして使用します。
他のヒント
ASP.NETを使用している場合、次の投稿が役立つはずです
http://beta.codeproject.com/kb/aspnet/cometasync.aspx
ちなみに、スレッドごとに複数のクライアントにサービスを提供するように彗星を実装することは可能ですが、すべてのクライアントに1つのスレッドのみが十分ではないようですか?
「非同期Webリクエスト」が彗星に適用される「非同期彗星」のようなものについて話しています。
私の意見では、このアプローチは最近とても人気があります。 深く欠陥がありました.
所属していません StackOverflow