大型網站技術架構讀書筆記

大型網站架構發展歷程javascript

一、應用服務和數據服務分離。
二、使用緩存改善網站的性能
三、使用集羣改善網站的併發處理能力。
四、數據庫讀寫分離
五、使用反向代理和CDN加速網站的訪問速度
六、使用分佈式文件系統和分佈式數據庫
七、使用NoSql數據庫和搜索引擎
八、業務拆分
九、分佈式服務

大型網站的架構模式css

一、分層。分層是業務系統中最多見的一種架構模式,將系統在橫向維度上切分紅幾個部分,每一個部分負責相對比較單一的職責,而後經過上層對下層的依賴和調用組成一個完整的系統
    
二、分割。分層是對軟件的橫向切分,而分割是在縱向方面對軟件進行切分

三、分佈式。對大型網站而言,分層和分割的最終目的是爲了方便切分後個模塊的分佈式部署。
    分佈式面臨的問題:
    1)分佈式意味着服務調用必須經過網絡,這可能會對性能形成嚴重的影響
    2)服務器越多,服務宕機的機率越大
    3)數據一致性難以保證
    4)開發管理維護困難
    經常使用的分佈式方案:
    1)分佈式運用和服務。
    2)分佈式靜態資源
    3)分佈式數據存儲
    4)分佈式計算
    
四、集羣。集羣部署,經過負載均衡實現故障轉移,提升服務的可用性

五、緩存。經過緩存加速數據的訪問和處理速度
    經常使用的緩存方式有:
    1)CDN。內容分發網絡,部署在距離用戶終端最近的網絡服務商,能夠用來緩存一些靜態資源,快速返回給用戶
    2)反向代理。前端框架的一部分,部署在網站前端,當用戶請求到達數據中心時,最早訪問的就是反向代理服務器,
    3)本地緩存。入redis,將熱點數據緩存到本地緩存中,加速訪問響應速度
    4)分佈式緩存
    
六、異步。異步是系統之間解耦的重要手段,將一個業務分紅多個階段,各階段之間經過共享數據的方式異步執行
    異步執行的優勢:
        1)提升系統的可用性。若是後端消費者服務宕機,消息會堆積在消息服務中,不會影響系統的可用性
        2)加速網站響應速度。生產服務器將業務請求處理完成後寫入到消息服務器,而後直接返回,不須要等待消費者服務處理完成,減小響應延遲
        3)消除併發訪問高峯。
        
七、數據冗餘。

web前端優化策略html

一、減小http請求。主要手段:合併css、合併javascript、合併圖片
二、使用瀏覽器緩存
三、啓用壓縮。在服務端對文件進行壓縮,在瀏覽器短進行解壓,從而較少同窗傳輸的數據量
四、css放在最上層,javascript放在最下層
五、較少cookie傳輸太大的cookie會嚴重影響數據傳輸
六、cdn加速。cdn可以緩存通常的靜態資源,如圖片、文件、css、javascript等
七、反向代理。

應用服務器優化策略前端

一、分佈式緩存。緩存高頻訪問的熱點數據
    一下狀況不適合使用緩存
    1)頻繁修改的數據。若是數據被頻繁修改,會出現數據寫入到緩存中還將來得及讀取就已經失效的狀況,此時使用緩存會增長系統負擔
    2)沒有熱點的訪問。若是訪問不遵循二八定律,那麼緩存沒有意義
    3)數據不一致與髒讀。通常緩存會設置必定的有效時間,一旦超過有效時間,就要從新從數據庫中加載,所以運用要容忍必定時間的數據不一致性。若是運用要求數據的強一致性,可能不適合使用緩存
二、異步操做。使用異步可改善響應延遲,同時能夠減少高峯期數據庫壓力
三、使用集羣。將併發訪問的請求分發到多臺服務器上,避免一服務器由於負載壓力過大而相應緩慢。
四、代碼優化。
    1)多線程。在多線程編程時須要注意幾點:將對象設計爲無狀態的;使用局部變量;併發訪問資源時使用鎖
    2)資源複用。資源複用有兩種模式:單例和對象池
        單例:spring構造對象默認使用單例模式
        對象池:數據庫鏈接池
    3)數據結構。
    4)垃圾回收

RAID(廉價磁盤冗餘陣列)java

RAID技術主要是爲了磁盤的訪問延遲,加強磁盤的可用性和容錯能力
一、raid0,數據寫入緩衝區時,更具磁盤數量將數據分紅N份,這些數據同時併發寫入磁盤,使得總體寫入速度是一塊磁盤的N倍。讀取時也同樣,所以RAID0具備極快的讀取和寫入速度,可是因爲 不作數據備份,一塊磁盤損壞,數據完整性即遭到破壞
二、RAID1。數據寫入時,將數據寫入兩塊磁盤,這樣任意一塊磁盤損壞都不會破壞數據的完整性
三、RAID10。結合RAID0和RAID1,將全部磁盤平均分紅兩份,數據同時寫入兩份磁盤。磁盤利用率低
四、RAID3。在數據寫入時,將數據分紅n-1份,併發的寫入n-1份磁盤,並在第n塊磁盤記錄校驗數據,任何一塊磁盤損壞均可以利用其餘n-1塊磁盤的數據修復。缺點是第n塊磁盤更容易損壞
五、RAID5。和RAID3相似,可是校驗數據不在固定寫入第n塊磁盤,而是螺旋的寫入到每塊磁盤中
六、RAID6。和RAID5相似,可是數據寫入n-2塊磁盤,並螺旋式的在兩塊磁盤寫入校驗信息

數據的一致性web

強一致性:各個副本的數據在物理儲存中老是一致的
用戶一致性:數據在各物理副本上可能不一致,可是在用戶訪問的時候經過糾錯和校驗機制,保證用戶獲得的是一個一致且正羣的數據
最終一致性:即物理機上的數據多是不一致的,終端用戶訪問的數據也多是不一致的,但系統通過一段時間的自我恢復和修正,數據最終會達到一致性

應用服務器集羣的伸縮性設計redis

一、http重定向負載均衡。利用http重定向協議實現負載均衡。即客戶端統一訪問一臺重定向負載均衡器,由負載均衡器計算獲得後端服務器具體的ip地址返回給客戶端,客戶端自動從新經過ip請求具體的服務器
    優勢是簡單,缺點是客戶端須要請求2次才能完成一次訪問,重定向服務器自身的處理能力可能成爲性能瓶頸
    
二、DNS域名解析負載均衡。客戶端經過域名訪問DNS服務器,DNS服務解析域名獲取具體後端ip返回給客戶端,客戶端自動根據ip從新請求具體的後端服務

三、反向代理負載均衡。客戶端請求到反向代理服務器,反向代理服務器路由到具體的後端服務而後轉發請求,後端服務處理完請求以後將結果返回給反向代理服務器,而後反向代理服務器再將結果返回給客戶端

四、ip負載均衡。用戶請求落在負載均衡服務器,負載均衡服務器根據負載均衡算法獲得後端服務ip,而後服務均衡服務器將請求轉發到後端,相似於反響代理負載均衡

五、數據鏈路層負載均衡。客戶端請求到負載均衡服務器,負載均衡服務器路由到後端服務,後端服務處理完請求後直接將結果返回到客戶端,也稱做直接路由

經常使用的負載均衡算法:算法

輪詢:全部請求一次被分發到各個服務器上
加權輪詢:在輪詢的基礎上根據權重將請求路由到各個服務器上,使得高性能的服務器有機會處理更多請求
隨機:請求隨機分配到不一樣的服務器上
最少鏈接:請求分發到最少處理鏈接的服務器上
源地址散列:經過散列算法,將相同地址的請求落到同一個服務器上

網站的安全spring

一、XSS攻擊
    XSS即跨站點腳本攻擊,指黑客經過篡改網頁,注入惡意的html腳本,在用戶瀏覽網頁時,控制用戶瀏覽器進行惡意操做的一種攻擊方式
    防護方式:對用戶輸入的危險字符進行轉意、對用戶請求添加httpOnly屬性,避免被攻擊腳本竊取cookie
    
二、sql注入
    攻擊者在http請求中構造惡意sql命令,從而使數據庫sql執行時,惡意sql被一塊兒執行
    防護:參數綁定或者字符轉意

三、CSRF攻擊
    CSRF跨站請求僞造:攻擊者銅鼓跨站請求,以合法用戶的身份進行非法操做
    防護:表單token、驗證碼、來源檢查

經常使用的加密手段:sql

一、單向散列:如MD五、SHA加密
二、對稱加密:指加密和解密使用的是同一個祕鑰。如DES算法、RC算法等
三、非對稱加密:指加密和解密用的不是同一個祕鑰,其中對外界公開的稱爲公鑰,另外一個只有用戶本身知道,被稱爲私鑰。如RSA算法
相關文章
相關標籤/搜索