《大型網站技術架構:核心原理與案例分析》讀書筆記 - 網站的技術升級路線

本文描述網站從小到大演變過程中的技術升級路線;

1.初始架構

一臺服務器,應用、DB、文件都在一塊,使用經典的LAMP模式構建整個站點; 
優點很明顯,開發部署都簡單,船小好掉頭,做不起來也虧不了多少;

2.應用服務與數據分離

隨着訪問量的增長,出現問題了:web性能變差,數據存儲空間不夠 
這時候需要更多的服務器,首要任務是將數據庫分離出來,單獨佔用一臺服務器,如果文件讀寫多,需要增加文件服務器;不同的服務器對硬件的要求也不盡相同: 
應用服務器需要處理大量業務邏輯,這需要更強的CPU; 
數據庫服務器需要快速磁盤檢索和數據緩存,這需要更快的硬盤和更大的內存; 
文件服務器需要存儲用戶上傳的文件,需要更大的硬盤;

3.使用緩存改善網站性能

訪問量持續增長,web性能再次變差; 
考慮使用緩存改善網站性能;web的訪問規律:80%業務訪問集中在20%的數據上;使用緩存,數據庫壓力得到有效緩解; 
緩存可通過以下方式增加: 
增加應用服務器本地緩存,這個最直接,也最簡單; 
增加遠程分佈式緩存集羣;當本地的內存不足以放下需要緩存的數據時,就只有通過分佈式; 
使用類似Memcached之類的開源緩存產品,緩存更多的數據;

4.應用服務器集羣化

隨着網站的成長,單一應用服務器成爲網站瓶頸; 
解決方案:應用服務器集羣化提高網站併發處理能力; 
做成集羣的關鍵是增加負載均衡服務器來調度應用集羣

5.數據庫讀寫分離

問題:當增加緩存之後,隨着訪問量的持續增長,數據庫再次出現問題:數據庫負載壓力過高 
解決方案:數據庫讀寫分離 
利用數據庫主從熱備功能,實現讀寫分離;讀寫分離的細節這篇文章講的很清楚了,就不多說,有需要的請參考:http://www.cnblogs.com/qlee/archive/2011/04/08/2009738.html

6.使用反向代理和CDN

問題:網站做大,全國甚至全球各區域的訪問量都來了,但是各區域的訪問速度差別巨大; 
解決方案:使用反向代理和CDN 
CDN和反向代理基本原理都是緩存,CDN部署在網絡提供商的機房,用戶請求最近的節點訪問;而反向代理則部署在網站的中心機房;

7.使用分佈式FS和分佈式DBS

問題:應用集羣如果將session管理做好,或做成無狀態的應用集羣,可達到線性伸縮;而數據庫的壓力卻不是很好解決; 
解決方案:使用分佈式數據庫拆分,可使用的方法有: 
單表拆分:將不同的表放到不同的庫中,從而降低單個數據庫的結點的負載;這樣帶來的問題就是不同庫中的表無法做join操作; 
另一種方法就是按業務拆分,將屬於同一業務的表劃分到一個庫中,從而有效降低數據庫負載,同時在業務邏輯實現上不至於過於複雜;

8.使用NoSQL和搜索引擎

問題:出現海量數據存儲和檢索的需求 
解決方案:使用NoSQl產品分佈式部署來支持海量數據的查詢和存儲;

9.業務拆分

按照業務來劃分子系統,按產品線劃分系統,通過分佈式服務來協同工作;

附:思維導圖

卓越亞馬遜地址: 《大型網站技術架構》 

wKiom1XPQZmxBamOAALeWHcTs6o700.jpg


   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章