5

私たちはホームページにいくつかのコードを実装しています。これは、すべてのユニークなビジターの geoip ルックアップに依存しており、geoip Web サービス (Maxmind) にクエリを実行するか、データベースをダウンロードしてローカルにクエリを実行するかを選択できます。サーバーは現在 512MB の Linode インスタンスであり、1 日あたり約 1500 の一意しか受信しませんが、トラフィックの急増時に何が起こるか心配しています.

ローカル ルックアップの方が高速であることは明らかですが、データベースに負荷がかかると、追加の http 要求を処理するよりも RAM/CPU を大量に消費することは確かです。明らかに、サーバーのメモリをアップグレードすることは、ローカルに行くことが最善の方法であれば簡単に達成できます.1秒あたりの接続数が一定以上になると、Web APIよりもローカルデータベースにクエリを実行すると、サーバーが使用できなくなる可能性が高くなると思います(もちろんWeb API サーバーが http 要求を処理できることを確認します)。

時折発生するトラフィック フラッドをサービス拒否なしで処理するための最も堅牢で長期的なソリューションとなるソリューションについての意見をいただければ幸いです。

編集:これをもう少し定量化するために、サーバーが毎秒最大 200 の接続を処理できる必要があるとしましょう。各接続には、単一の DB クエリまたは http 要求が必要です。

4

4 に答える 4

1

見つけるための最良の方法は、負荷テストを実行して、何が最も効果的かを自分で確認することです。しかし、私の直感では、1 秒あたり 200 クエリはそれほど多くなく、好きな方法で簡単に処理できると思います。

ローカルの方が安価で (クエリごとのコストがかからない)、1 つのサーバーの方が更新が簡単なため、GIS データベースを備えたローカル サーバーを使用することに傾倒します。また、必要に応じて、2 番目のサーバーを追加するか、サード パーティのサーバーを構成することでスケールアップできます。

ここで、このセットアップの実際のテスト番号をいくつか見つけました :は、4 つのクライアントが 1 つのサーバーにクエリを実行するネットワーク設定です。1 つのクライアントについて、彼は 2000 クエリ/秒と 1 ミリ秒未満のレイテンシーを報告しています。これらの数値に到達するために、彼は mysql に組み込まれている gis 機能を使用していることに注意してください。また、これは 2007 年のことなので、パフォーマンスはさらに向上しているはずです。

コードをモジュール化して構成可能にします。もちろん、これはプログラミング言語に依存しますが、LookupService インターフェイスを作成して、必要に応じて残りのコードを変更せずにさまざまな実装を作成できるようにします。実装が Web サービスを呼び出す場合は、エンドポイントを簡単に構成できるようにします。サービスが maxmind と同じURI スキームと応答 json を使用している場合、ローカル サーバーから maxmind に自由に切り替えて、再び戻すことができます。

于 2015-01-06T08:37:08.507 に答える
0

プロバイダーは、クエリによって Web サービスに料金を請求します。彼らのウェブサイトで宣伝されている料金によると、200 q / sで、1時間あたり72ドルを支払うことになります。この金額で何十台ものモンスター専用サーバーが手に入る!

于 2014-12-31T06:31:40.713 に答える
0

私の職場では、ローカル バージョンの Maxmind データベース (.dat ファイル) を使用しており、そのファイルに対して常に (1 日に約 50 万回以上) 問題なくクエリを実行しています。次に、情報をセッションにキャッシュするので、同じユーザーの情報を何度もクエリする必要はありません。また、Maxmind データベースを使用して、そのユーザーの半径 10、25、または 50 マイル以内に表示される広告を検索する広告ツールもあります。

あまりにも多くのリクエストに API を使用することはお勧めしません。そうしないと、警告なしに切断され、地理情報がなくなってしまう可能性があります。また、サーバーがダウンすると、地理情報がなくなります。

于 2015-01-02T00:23:47.667 に答える