私は、サーバー(別の場所で実行されている)からのコマンドを待機するために、すべてが開いた(できればHTTP)接続を維持する必要がある潜在的に数百万のクライアントで構成される分散システムを構築しています。メッセージ/コマンドの負荷はそれほど高くはありません。おそらく1メッセージ/秒/1000クライアントです。つまり、1000メッセージ/秒@100万クライアントになります。=>基本的には同時接続についてです。
要件も単純です。一方向メッセージング(サーバー->クライアント)、「チャネル」ごとに1つのクライアントのみ。
私はテクノロジーに関してかなりオープンです(xmpp / websockets / comet / ...)。サーバーとしてGoogleAppEngineを使用していますが、残念ながらそれらの「チャネル」は機能しません(クォータが低すぎてJavaクライアントがありません)。XMPPはオプションでしたが、かなり高価です。これまで私はURLFetch&pubnubを使用していましたが、接続の課金を開始したばかりです(かなりの時間)。
それで:
手頃な方法で私のためにそれを行うことができるサービスを知っている人はいますか?私が見つけたほとんどの場合、接続の制限または高額な請求があります。
そのようなサーバーを自分で実装した経験はありますか?私は実際にそれをすでに行っており、(TomcatとNIOに基づいて)かなりうまく機能しますが、大規模な負荷テスト環境を実際にセットアップする時間はまだありません(これはまだフォールバックソリューションであるため、私は好みますバトル強化されたメッセージサーバー)。1GBあたり何人のユーザーを獲得したかについての経験はありますか?厳しい制限はありますか?
私のアーキテクチャでは、msgサーバーをフラグメント化することもできますが、msg処理のCPUオーバーヘッドが最小限であるため、同時接続を最大化したいと思います。