我將如何支持每小時 100,000 個請求?
我知道這個問題有點奇怪,但我很幸運有一個想法,當我試圖與一家公司達成協議時,我需要一些數字來使用。我想知道在 Rackspace 的雲伺服器之類的東西上執行一個大量使用 PHP 並每小時收到 70,000 到 100,000 個請求的網站要花多少錢。我不知道我需要多少台伺服器或每台應該有多少 RAM。網站上會有相當數量的圖片(最初幾周可能有 10,000 張左右),並且該網站執行在大約 2,500 行 PHP 程式碼上。我想我應該註冊某種 CDN,儘管CDN In A Box這是我所聽說的全部內容,我不確定對於已經在雲平台上的站點是否有必要。我顯然以前從來沒有做過這樣的事情,所以我只是想估計一下我對這個龐大的網站需要什麼……另外,我使用了一個數據庫,我想知道它是如何工作的 - 我會專門做一個嗎?執行數據庫的雲伺服器還是我需要將數據庫放入每個雲伺服器中?提前致謝…
首先,對於現代硬體和軟體堆棧而言,每小時 10 萬個請求根本算不上什麼,前提是程式碼寫得併不差。結果是每秒只有約 28 個請求,您的手機可能能夠提供服務:)
現在,至於您的設置,您將需要至少兩台機器,或者以實時/實時負載平衡方式設置,或者以實時/待機情況設置。這將使您能夠快速處理硬體故障、數據損壞、配置錯誤等。
如果您認為您的站點的增長速度可能比您現在計劃的要快得多,那麼您可能希望採用非常常見的三層系統。在這裡,您有一台或多台數據庫伺服器僅執行該工作,一台或多台應用程序伺服器執行您的程式碼,一台或多台 Web 伺服器僅執行請求前端。此模型允許您更快地線性擴展,但顯然需要您將這些拆分設計到您的程式碼中。順便說一下,無論您使用的是物理平台、虛擬平台還是基於雲的平台,此模型的工作原理都無關緊要——儘管由於使用這些平台獲得的 IO 速率較低,數據庫盒在虛擬/雲環境中降級最多且速度最快。
最重要的是,如果您打算製作大量靜態文件講義,例如圖像/影片等,那麼 CDN就很有意義。它們當然不是免費的,因此您需要進行數學計算以確定將內容保留在“內部”或將它們發送到 CDN 是否更有意義,有很多可供選擇(akamai 和聚光燈是飛躍的兩個記住良好的聲譽),但只有您可以根據 ave.bytes-per-request 與 number-of-requests 與 cost-per-byte/MB 來決定內部和外部傳遞。
最後一件事,進行備份——正確的備份,而不僅僅是快照,並將其中的一些保留在異地,並每隔一段時間對離線硬體進行測試恢復以檢查它們是否有效。說真的,你不會相信我們在這個網站上看到有多少使用者沒有正確備份,沒有將其中一些使用者帶離現場或從未測試過 - 我們再也見不到他們,他們的業務失敗或他們得到了被解僱 - 所以請認真對待:)
如果您需要更多幫助並且正在尋找幫助您成長的人,請回來查看我們的“職業”網站(通常在頁面底部有一個連結),因為它充滿了來自該網站的人,並且我們的姊妹網站(stackoverflow - 適用於編碼人員)可能在您所在的地區並很樂意與您合作。
祝你好運。