6

特定のタスクのユーザー間でプッシュされたコンテンツを追跡するアプリケーションを作成しています。WebSocketを使用して新しいコンテンツを送信することを考えています。これは、その特定のタスクで現在アプリを使用しているすべてのユーザーが利用できるためです。

私はこれをRailsで書いていますが、クライアント側のアプリはiOS上にあります(おそらくAndroidでも使用される予定です)。このWebSocketソリューションは適切に拡張できない可能性があります。私は、WebSocketとある種のポーリングソリューションを使用することを決定する際に、いくつかのアドバイスと考慮事項を求めています。

Ruby on Railsサーバー(Herokuなど)は、同時に開く多数のWebSocketをサポートしますか?議論のために百万の接続を考えてみましょう。誰かが私にそのようなものを提供できる資料はありますか?

このように設計した場合、サーバーホスティングのコストははるかに高くなりますか?

何百万ものWebSocketを同時に維持することさえ可能ですか?これは最良の設計上の決定ではないかもしれないと私は感じています。

これは、適切なRailsAPIでの私の最初の試みです。アドバイスをいただければ幸いです。どうも。

4

2 に答える 2

3

Rubyを使用したWebSocketを介した数百万の接続では、クラスタリングを使用して異なるインスタンス間で接続を分散し、すべてのデータ処理を処理しない場合、実際の接続はわかりません。
ここでの問題は、データのシリアル化と逆シリアル化です。

また、サーバーからクライアントにデータをプルする必要がある頻度を調査する必要があります。また、AJAXを使用して定期的にチェックするだけの価値がある場合は、接続を常時処理する必要があります。なぜなら、接続を処理してからそれを使用しない場合、それはリソースの浪費です。WebSocketはTCPレイヤー上に構築されており、すべての接続がOSにとって「安価」ではなく、再び利用可能なデータを要求することは簡単なプロセスではありません。何百万もの接続があるため、最先端のテクノロジーを使用しないとほとんど不可能です。世界中。

Erlangは何百万もの接続を処理できると思いますが、詳細はわかりません。接続も1つですが、もう1つはデータの処理と接続間の相互作用です。これは、処理アルゴリズムが重い場合は、クラスタリングソリューションの水平スケーリングオプションを調べる必要があるため、確認する必要があります。

于 2012-05-15T09:36:39.943 に答える
3
  • チャットを実装している場合は、WebSocketを使用してください。
  • リアルタイムで一方向メッセージを実装している場合は、サーバー送信イベントを使用します。
  • 数時間ごとに送信される一方向メッセージを実装している場合は、APNSを使用してください。

ことわざは電話を手に取り、WebSocket/サーバー送信イベントを使用します。ポケットに電話を入れ、APNSを使用します。

APNSは、wifiのディップ、tcp / ipソケットのハング、およびその他の多くの問題を軽減します。本当に便利です。完了するまでに少し時間がかかる場合があります。しかし、繰り返しになりますが、WebSocketがかかる可能性があります

iOSの最近のバージョンでは、クライアントにポップアップメッセージを表示せずにAPNSをクライアントに送信できるため、サーバーに詳細情報を要求できます。いくつかのバックグラウンド実装とともに、それは本当に物事を改善します。

可能であれば、完全に匿名のクライアントを実装しないでください。クライアントがアプリを再インストールしたかどうかを検出するのは非常に難しいです。したがって、クライアントに重複を送信することになります。それを考慮に入れる必要があります。

APNSをルビーに実装するのは簡単に見えますが、衝動を避けて、グーグルとアップルの両方をサポートする既存の宝石/サービスを使用することをお勧めします。最初に思われるよりも実装するのははるかに難しいです。

WebSocketを使い続けることにした場合は、 https://github.com/wandenberg/nginx-push-stream-moduleのようなnginxでWebSocketを利用するのが理にかなっているかもしれません。

ASIDE:速度が重要な場所でSMSを使用すると、非常にコストがかかります。電話番号あたり月額$1は、1秒あたり1メッセージの最大レートのみを送信します。したがって、1秒あたり100メッセージを送信する= $100/月とメッセージ料金。50メッセージ/秒=$50/月の割合で100メッセージに注意してください。ただし、1,000通のメッセージを送信する場合は、20秒かかります。

幸運を

于 2014-11-22T03:36:27.133 に答える