超簡單的高效能http伺服器

超簡單的高效能http伺服器

我正在建立一個 url 縮短器 Web 應用程序,我想知道最好的架構,以便提供快速可靠的服務。

我想在不同的機器上有兩個單獨的服務。

  • 第一台機器將擁有帶有 apache、nginx 等應用程式本身。
  • 第二個將包含資料庫。
  • 第三位將負責處理短網址請求。

更新:

該服務根本不是網址縮短器。這樣解釋起來就更容易了。

我只需要一台接收一個 http 查詢並在資料庫中插入一筆記錄的機器。我需要這台機器以非常有效的方式完成這項簡單的任務。該系統將在 Linux 上運行(我還不知道發行版),並且我對任何語言或技術完全開放。我正在考慮使用 Yaws、Tornado 或 Snap 來提供該服務,但我還不知道,現在是時候規劃該部分的架構了。該資料庫將建置在 Hadoop 上。

對於第三台機器,我只需要接受一種http請求(GET www.domain.com/shorturl),但它必須非常快並且應該足夠穩定。

答案1

您真的認為還需要另一個 URL 縮短器嗎?僅有很多除非您偶然獲得了一個非常短且合適的域名,否則我認為您的網站不會被任何人注意到。當然,只是我的兩分錢。

無論如何,到技術部分:

  • 您將用什麼語言撰寫您的申請?
  • 您打算在哪個作業系統上運行它?
  • 您會使用免費軟體還是商業軟體?

即使不知道這一點,也很難回答你的問題。

這裡唯一有意義的答案是「像瘟疫一樣避免 Java」。 Java 應用程式伺服器對於許多應用程式來說是大材小用,對於如此簡單的應用程式來說肯定也是大材小用。

我會選擇 Linux/Apache/MySQL/PHP ......如果當然,我可以想出任何啟動這個專案的好理由。


編輯:

好吧,現在更有意義了;但建議從盡可能簡單的開始然後對擴大規模的擔憂仍然有效。如果您的應用程式真的那麼簡單,任何像樣的 Web 伺服器/語言/資料庫組合都應該能夠處理地段現代硬體上每秒的請求數(但我仍然強烈建議避免使用 Java)。

如果效能至關重要,我會選擇用 C 語言編寫的 CGI 應用程式;將是最快的解決方案,比任何解釋語言或 VM 語言快幾個數量級;並且讓它對資料庫執行簡單的 INSERT 和 SELECT 操作不應該所以難的。但我認為 LAMP 足以滿足您的需求......它們實際上可以運行Facebook關於它,你知道嗎?

答案2

這些只是記錄數據,還是也發回一些有興趣的東西?如果他們只是記錄日誌,那麼只需使用 apache 並將 apache 日誌放入 hadoop 中即可。如果他們必須返回某種數據,那麼我根本不清楚他們如何獲得返回的數據。

儘管如此,將 apache 設定為僅針對任何請求返回靜態檔案的速度還是相當快的。

答案3

首先,我知道你說過它不是 URL 縮短器,但如果有類似的東西,RDBMS 是儲存這些資料的糟糕方法;由於任何兩個資料之間沒有真正的關係,因此您需要一個平面儲存引擎。考慮 Mongo(或 Couch,取決於您的實際解決方案空間)。

至於你的解決方案,請注意過早優化。有很多方法可以讓你為此瘋狂;既然你問了,我能立即想到的最瘋狂的可能是啟動 Varnish,將所有頁面寫入 VCL,並讓它連接到後端的 memcache 以儲存和檢索相應的資料。但實際上,那就是狗屎除非你承受著明顯荒謬的負載,否則這很瘋狂。

相關內容