我是網站可伸縮領域的新手。你能向我推薦一些使網站可擴展到大量用戶的技術嗎?撰寫可伸縮網站的技巧
回答
如果您希望您的網站擴展到單個服務器的能力之外,那麼您需要仔細規劃。設計,以下將是可能的: -
- 使它可以讓你的數據庫可以在一個單獨的服務器上。這通常不會太難。
- 確保您的所有靜態內容都可以移動到CDN,因爲這通常會將大量負載從您的服務器上卸下。
- 準備在硬件上花費很多錢。更多的RAM和更快的磁盤幫助LOT。
- 當您需要將數據庫或php從單個服務器分割到多個服務器時,它會變得更加困難,因此,從代碼,數據庫架構,服務器配置以及任何您可以想到的任何其他內容儘可能地放下最後一步。
除此之外,你所能做的只是壓力測試你的網站,找出瓶頸在哪裏,並嘗試去設計它們。
- 在重負載下測試您的網站。
- 監控所有統計
- 查找瓶頸
- 修復瓶頸
- 回到1
好運
你可能想看看這個資源 - highscalability.com。
使用固體OOP技術開發您的網站。您將需要您的站點是模塊化的,因爲並非所有的性能瓶頸在一開始都是顯而易見的。隨着流量的增加,隨時準備重構部分網站。我寫的第一句話會幫助你更輕鬆,更安全地做到這一點。此外,使用測試驅動的開發,因爲重構意味着新引入的錯誤,良好的TDD在抓住它們進入生產之前很好。
儘可能將服務器端代碼中的客戶端代碼儘可能分開,因爲如果您的網站流量證明了這一點,它們可能會從不同的服務器提供服務。
閱讀文章(例如閱讀YSlow提示)。
GL
很相似:How Is PHP Done the Right Way?
可擴展性是不小的主題,當然更多的材料相比,可以合理地覆蓋在一個單一的問題。
例如,對於某些類型的應用程序,聯接(在SQL中)不會擴展,這會引發各種緩存和分片策略。
Beanstalk是高性能PHP站點中的另一種可伸縮性和性能工具。作爲memcache(不同類型)。
按重要性排序:
如果你運行PHP,使用操作碼緩存像APC。 (這足以在下一代PHP中內置)
使用YSlow或Google Page Speed來識別瓶頸。 (這將顯示您的網站會影響客戶端和服務器性能的結構性問題。)
確保您的Web服務器爲靜態內容(圖像,Javascript,CSS)發送適當的Expires標頭,以便瀏覽器可以緩存它正確。 (YSlow也會對此提出警告。)
使用HTTP加速器,例如Varnish。 (This picture說,這一切 - 他們已經到位有一個HTTP加速器。)
許多人提到的工具,用於識別瓶頸,這當然是必要的。如果不知道速度緩慢,你就無法花費大量時間來加速某些事情。但是你需要知道的另一件事是你的目標可伸縮性在哪裏。花費幾個月的時間花費幾個月的時間,使您的網站擴展到與Twitter相同的用戶數量是否物有所值?在產品需求方面,您是否有已知的交易率或響應延遲或用戶數量?如果是這樣,請將這些數字作爲優化策略的目標。如果沒有,找到那些出之前追逐表現大鼠下來的洞。
可擴展性的最大問題通常是像DBMS這樣的共享資源。問題的產生是因爲DBMS通常無法放鬆一致性保證。
如果您希望在使用類似MySQL的東西時增加可伸縮性,則必須更改模式設計以放鬆一致性。例如,您可以將數據庫架構分開,使其具有用於寫入的標準化數據模型,以及用於90%讀取操作的複製只讀非標準化部分。只讀數據可以分佈在多個服務器上。
提高數據庫可伸縮性的另一種方法是對數據進行分區,例如,將數據分成每個部門的數據庫,並將它們集中在ORM或DBMS中。
除了其他建議,考慮拆分您的網站幾個層次,如multitier architecture。如果操作正確,則可以使用每層一臺服務器。
- 1. 高可伸縮性技術堆棧
- 2. 重寫plot.factor的技巧?
- 3. 亞馬遜網站鏈接由用戶撰寫的網站
- 4. 從網站調用Outlook撰寫郵件?
- 5. Python中的可伸縮聊天站點
- 6. 縮短PHP代碼的技巧?
- 7. 在CSS的負邊界:很好的教程和技巧網站?
- 8. 幫助/技巧提高我的ASP.NET MVC 2網站的性能
- 9. 編寫好的python代碼的技巧
- 10. C#代碼縮小工具和技巧
- 11. 製作通用移動網站的技巧
- 12. 的大O符號寫作技巧
- 13. 好的軟件和編寫可執行規格的技巧
- 14. 國際用戶網站數據庫設計技巧
- 15. 腳本技巧
- 16. nVidia SLI技巧
- 17. CSS hacks(技巧)
- 18. 簡單的CSS技巧 - 有可能嗎?
- 19. 用於可視化數據的技巧
- 20. IIS可伸縮性
- 21. 在NOSQL可伸縮網站架構中,這些方法可以編寫無連接的查詢嗎?
- 22. 集成Facebook的「撰寫新消息」彈出到我的網站
- 23. 泊塢窗,撰寫網絡
- 24. 如何在網站上的文本框中撰寫並提交
- 25. 撰寫Metasploit模塊/漏洞的文獻或網站?
- 26. 在不使用會話的情況下創建可伸縮的ASP.Net MVC網站
- 27. aho corasick的可伸縮性
- 28. Cytoscape.js的可伸縮性
- 29. Oracle Forms的可伸縮性
- 30. 的Eclipse Ganymede黑客,提示,技巧,技巧和最佳實踐
同意,我只是補充說,緩存可能是您在創建大型網站時應該做的第一件事。 – usoban 2009-07-12 17:27:01
是的。確保MySQL的緩存功能設置良好,併爲您的代碼使用強大的緩存。在其他答案中提到的幾個很好。 – 2009-07-12 17:35:23