【架構】大型網站優化技術思路

一、I/O優化

     一、增長緩存,減小磁盤的訪問次數。css

     二、優化磁盤的管理系統,設計最優的磁盤方式策略,以及磁盤的尋址策略,這是在底層操做系統層面考慮的。前端

     三、設計合理的磁盤存儲數據塊,以及訪問這些數據庫的策略,這是在應用層面考慮的。例如,咱們能夠給存放的數據設計索引,經過尋址索引來加快和減小磁盤的訪問量,還能夠採用異步和非阻塞的方式加快磁盤的訪問速度。web

     四、應用合理的RAID策略提高磁盤I/O。算法

 

二、Web前端調優

      一、減小網絡交互的次數(屢次請求合併)。數據庫

      二、減小網絡傳輸數據量的大小(壓縮),好比優化圖片大小,壓縮js,css文件大小。瀏覽器

     三、儘可能減小編碼(儘可能提早將字符轉化爲字節,或者減小從字符到字節的轉化過程。)緩存

     四、使用瀏覽器緩存。服務器

     五、減小Cookie傳輸。網絡

     六、合理佈局頁面。負載均衡

     七、使用頁面壓縮(gzip)。

     八、延遲加載頁面。

     九、CSS在最上面,JS在最下面。

     十、CDN緩存靜態內容,提升響應速度。

     十一、反向代理

     十二、頁面靜態化

     1三、異地部署

 

三、服務降級(自動優雅降級)

     拒絕服務和關閉服務

 

四、冪等性設計

      有些服務自然具備冪等性,好比講用戶性別設置爲男性,無論設置多少次,結果都同樣。可是對轉帳交易等操做,問題就會比較複雜,須要經過交易編號等信息進行服務調用有效性校驗,只有有效的操做才能繼續執行。

    (注:冪等性是系統的接口對外一種承諾(而不是實現), 承諾只要調用接口成功, 外部屢次調用對系統的影響是一致的. 聲明爲冪等的接口會認爲外部調用失敗是常態, 而且失敗以後必然會有重試.)

 

五、負載均衡技術

  • HTTP重定向負載均衡 
    當用戶發來請求的時候,Web服務器經過修改HTTP響應頭中的Location標記來返回一個新的url,而後瀏覽器再繼續請求這個新url,實際上就是頁面重定向。經過重定向,來達到「負載均衡」的目標。例如,咱們在下載PHP源碼包的時候,點擊下載連接時,爲了解決不一樣國家和地域下載速度的問題,它會返回一個離咱們近的下載地址。重定向的HTTP返回碼是302。 
    優勢:比較簡單。 
    缺點:瀏覽器須要兩次請求服務器才能完成一次訪問,性能較差。重定向服務自身的處理能力有可能成爲瓶頸,整個集羣的伸縮性國模有限;使用HTTP302響應碼重定向,有可能使搜索引擎判斷爲SEO做弊,下降搜索排名。

  • DNS域名解析負載均衡 
    DNS(Domain Name System)負責域名解析的服務,域名url其實是服務器的別名,實際映射是一個IP地址,解析過程,就是DNS完成域名到IP的映射。而一個域名是能夠配置成對應多個IP的。所以,DNS也就能夠做爲負載均衡服務。 
    事實上,大型網站老是部分使用DNS域名解析,利用域名解析做爲第一級負載均衡手段,即域名解析獲得的一組服務器並非實際提供Web服務的物理服務器,而是一樣提供負載均衡服務的內部服務器,這組內部負載均衡服務器再進行負載均衡,將請求分發到真是的Web服務器上。 
    優勢:將負載均衡的工做轉交給DNS,省掉了網站管理維護負載均衡服務器的麻煩,同時許多DNS還支持基於地理位置的域名解析,即會將域名解析成舉例用戶地理最近的一個服務器地址,這樣能夠加快用戶訪問速度,改善性能。 
    缺點:不能自由定義規則,並且變動被映射的IP或者機器故障時很麻煩,還存在DNS生效延遲的問題。並且DNS負載均衡的控制權在域名服務商那裏,網站沒法對其作更多改善和更強大的管理。

  • 反向代理負載均衡 
    反向代理服務能夠緩存資源以改善網站性能。實際上,在部署位置上,反向代理服務器處於Web服務器前面(這樣纔可能緩存Web相應,加速訪問),這個位置也正好是負載均衡服務器的位置,因此大多數反向代理服務器同時提供負載均衡的功能,管理一組Web服務器,將請求根據負載均衡算法轉發到不一樣的Web服務器上。Web服務器處理完成的響應也須要經過反向代理服務器返回給用戶。因爲web服務器不直接對外提供訪問,所以Web服務器不須要使用外部ip地址,而反向代理服務器則須要配置雙網卡和內部外部兩套IP地址。 
    優勢:和反向代理服務器功能集成在一塊兒,部署簡單。 
    缺點:反向代理服務器是全部請求和響應的中轉站,其性能可能會成爲瓶頸。

  • LVS-NAT:修改IP地址

  • LVS-TUN: 一個IP報文封裝在另外一個IP報文的技術。

  • LVS-DR:將數據幀的MAC地址改成選出服務器的MAC地址,再將修改後的數據幀在與服務器組的局域網上發送。

 6.避免重定向

 7.減小DNS查詢次數

 8. 代碼優化

提升代碼質量,減小重複代碼,使用效率更高的算法,少使用遞歸。

相關文章
相關標籤/搜索