3

モバイルアプリ(Androidスマートフォンとタブレット、iPhone、iPad、Blackberry用)にプッシュアプ​​リケーションを導入する予定です。

15分ごとに、新しいデータセットを取得します。このデータはMySQLデータベースに保存されます。次に、このデータがユーザーのサブスクリプションと一致するかどうかを確認します(データはロケーションベースであるため、ユーザーは1つ以上のロケーションの通知をサブスクライブします)。データが一致するすべてのユーザーは、それぞれのプラットフォームのプッシュサービスを介して通知を受ける必要があります。

サーバー容量は問題ではありません。私たちは主にPHPを使用しており、PHPを使い続けたいと考えていますが、必要に応じて他の言語を使用することもできます。

私の質問は次のとおりです。

  1. サーバー側で使用するテクノロジーについてアドバイスをいただけますか?非常に適切に拡張でき(プラットフォーム全体で多くのサブスクリプションが必要です)、理想的には一般的なプッシュゲートウェイで動作し、次のデータバッチが到着する前にすべての通知を処理するのに十分な速度である必要があります。

  2. これらの通知の配信速度に懸念があります。500.000のサブスクリプションがあり、データが50%に一致するとします。つまり、15分で250.000の通知をプッシュする必要があります。多数とプッシュ通知の経験はありますか?

どうもありがとう、マーク。

4

1 に答える 1

0

PHP は動的な Web コンテンツの生成には優れていますが、このような高パフォーマンスのバックグラウンド操作を行うための重要な機能が欠けているように感じます。マルチスレッドをサポートする言語を使用します (私の個人的な好みでは C# 4.0 を使用することになりますが、サーバー プラットフォームにも依存します)。

マルチスレッドがサポートされている場合は、データベースからデータをロードするスレッドを作成し、ロード中に他のスレッドに通知をプッシュさせることができます。必要に応じてパフォーマンスを調整できるように、取引の各部分で使用されるスレッドの量を構成できることを確認してください。

1 つのサーバーで処理できない場合は、データを複数のサーバーに分割することを検討してください。これを行う最も簡単な方法は、レコードのブロックを異なるサーバーに割り当てることだと思います。

最後に 1 つのアドバイスとして、問題をシミュレートし、ストレス テストを実行できるテスト環境を用意してください。ストレス テスト中は、500.000 という目標数にとどまらず、少なくともその 10 倍まで押し進めてください。これは、ソフトウェアの弱点を事前に見つけるのに非常に効果的です。また、メモリ、ディスク IO、ネットワーク IO、CPU などの特定のハードウェア パラメータを調整できると非常に便利です。これらのいずれかの量が少ないことをシミュレートすることで、特定の条件でソフトウェアがどのように動作するかの感触をつかむことができます. この経験は、本番環境でパフォーマンスの問題が発生した場合に役立ち、ハードウェア要件を考え出すのに役立ちます。

于 2011-07-05T07:27:38.247 に答える