超シンプルな高性能 HTTP サーバー

超シンプルな高性能 HTTP サーバー

私は URL 短縮 Web アプリケーションを構築しており、高速で信頼性の高いサービスを提供するために最適なアーキテクチャを知りたいです。

異なるマシンで 2 つの別々のサービスを実行したいと思います。

  • 最初のマシンには、Apache、nginx などのアプリケーション自体がインストールされます。
  • 2 番目にはデータベースが含まれます。
  • 3 番目は、短縮 URL 請願書の処理を担当する者になります。

アップデート:

このサービスは URL 短縮サービスではありません。単にそのように説明した方が簡単だっただけです。

必要なのは、1 つの HTTP クエリを受信して​​データベースにレコードを挿入するマシン 1 台だけです。このマシンで、この単純なタスクを非常に効率的に実行する必要があります。システムは Linux (ディストリビューションはまだわかりません) で実行され、言語やテクノロジは何でも構いません。このサービスには Yaws、Tornado、Snap のいずれかを使用することを考えていましたが、まだわかりません。その部分のアーキテクチャを計画する時期です。データベースは Hadoop 上に構築されます。

3 台目のマシンでは、1 種類の http 要求 (GET www.domain.com/shorturl) を受け入れるだけで済みますが、この要求は非常に高速に実行され、十分に安定している必要があります。

答え1

本当にもう1つのURL短縮サービスが必要だと思いますか?非常に多くの周りにたくさんあります... たまたま非常に短く適切なドメイン名を取得できなかったら、あなたのサイトが誰にも注目されないと思います。もちろん、これは私の個人的な意見です。

とにかく、技術的な部分に移ります。

  • 申請書はどの言語で作成する予定ですか?
  • どのオペレーティング システムで実行する予定ですか?
  • 無料ソフトウェアと商用ソフトウェアのどちらを使用しますか?

これを知らなければ、あなたの質問に答えることは困難です。

ここで意味を成す唯一の答えは、「Java を疫病のように避ける」ことです。Java アプリケーション サーバーは多くのアプリケーションには過剰であり、このような単純なアプリケーションには間違いなく過剰です。

ここでは Linux/Apache/MySQL/PHP を使用します...もしもちろん、プロジェクトを開始するのに十分な理由を思いつくことはできます。


編集:

わかりました。これで少しは理解できましたが、できるだけシンプルに始めるという提案はそれからスケールアップの心配は依然として有効です。アプリケーションが本当に単純なら、どんなまともなウェブサーバー/言語/データベースの組み合わせでも処理できるはずです。たくさん最新のハードウェアでは 1 秒あたりのリクエスト数は です (ただし、Java は避けることを強くお勧めします)。

パフォーマンスが最優先であれば、C で書かれた CGI アプリケーションを使用します。それ最も高速なソリューションであり、どのインタプリタやVM言語よりも桁違いに高速です。データベースへの単純なINSERTやSELECTを実行することは、それで難しい。しかし、LAMPはあなたのニーズには十分すぎると思います...実際に動作しますフェイスブックそれをご存知ですか?

答え2

これらは単にデータを記録しているだけですか、それとも何か興味深いものも返していますか? ログを記録するだけであれば、Apache を使用して Apache ログを Hadoop に送るだけです。何らかのデータを返す必要がある場合、返されるデータをどのように取得するのかがまったくわかりません。

それでも、あらゆるリクエストに対して静的ファイルを返すように設定された Apache は非常に高速です。

答え3

まず、これは URL 短縮サービスではないとおっしゃっていますが、似たようなサービスであれば、RDBMS はこのデータを保存するには最悪の方法です。2 つのデータの間には実際の関係がないため、フラットなストレージ エンジンが必要です。Mongo (または実際のソリューション スペースに応じて Couch) を検討してください。

解決策については注意してください時期尚早な最適化. これについては、いろいろとクレイジーな方法があります。質問されたので、私がすぐに思いつく最もクレイジーな方法は、Varnishを起動し、すべてのページをVCLで記述し、バックエンドのmemcacheに接続して対応するデータを保存および取得することです。しかし、現実的には、バカな明らかに異常な負荷がかかっていない限り、狂気の沙汰です。

関連情報