第一章、網絡架構及其演變過程
1.1 軟件的三大類型
單機類型、CS類型、BS類型
1.2 BS網絡傳輸分解(TCP/IP模式)
網絡接入層:將需要相互連接的節點接入網絡中,為數據傳輸提供提交。(相當於所住地方必須有快遞點)(沒有協議)
網際互聯層:找到要傳輸數據的目標節點。(告訴賣家你的地址)(IP協議)
傳輸層:實際傳輸數據。(發送快遞)(TCP協議)
應用層:使用接受到的數據。(收到快遞拆包使用)(HTTP協議1)
解決訪問速度的核心就是解決海量數據操作問題和高並發問題------>復雜的網站架構
1.4 海量數據解決方案
1.緩存和頁面靜態化
常用的緩存框架:Ehcache、Memcache、Redis。
頁面靜態化:是將程序最後生成的頁面保存起來,使用頁面靜態化就不需要每次調用都重新生成頁面了。
2.數據庫優化
表結構優化
sql語句優化
分區、分表、索引優化、使用存儲過程
3.分離活躍數據
4.批量讀取和延遲修改
原理就是減少了操作次數來提高效率。
5.讀寫分離
就是對數據庫進行集群。這樣就可以在高並發的情況下將數據庫的操作分配到多個數據庫的服務器中去處理從而降低單臺服務器的壓力。
6.分布式數據庫
分布式數據庫就是將不同的表放到不同的數據庫中然後放到不同的服務器中。數據庫集群是將多個請求分配到不同的服務器去處理,從而減輕單臺服務器的壓力,而分布式數據庫是解決單個請求本身就非常復雜的問題,它可以將單個請求分配到多個服務器去處理,使用分布式後的每個節點還可以同時使用讀寫分離,從而組成多個節點群
7.NoSql和Hadoop
hadroop是將同一個表中數據分成多塊保存到多個節點(分布式),而且每一塊數據都有多個節點保存(集群),這裏集群除了可以並行處理相同的數據,還可以保證數據的穩定性。這裏的每一個節點都不包含一個完整白哦的數據,但是一個節點可以保存多個表的數據。
1.5 高並發的解決方案
1.將應用和靜態資源分離
將圖片、視頻單獨放到相應的服務器中,使用專門的域名去訪問,如新浪的圖片保存在sinaimg.cn域名對應的服務器中。
2.頁面緩存
頁面緩存就是將應用生成的頁面緩存下來,這樣就不需要每次請求都要重新生成頁面了。使用nginx服務器或者Squid服務器。
3.集群與分布式
集群是每臺服務器都具有相同的功能,主要起分流的作用。分布式是將不同的業務放到不同的服務器中,處理一個請求可能需要用到多臺服務器,這樣就可以提高一個請求的處理速度。
集群session兩種處理方式:一種是在session發生變化時同步到其他服務器中,tomcat默認使用這種方式,通過配置實現;另外一種時用一個程序統一管理session,使用緩存來統一管理session。
4.反向代理
反向代理服務器和代理服務器:代理服務器,例如訪問Facebook直接訪問不了,這時候讓代理服務器去訪問,然後將結果返回給我們,代理服務器是我們主動使用的,它不需要有自己的域名。反向代理服務器是我們正常訪問一臺服務器,服務器自己調用了別的服務器的資源,並返回給我們,我們自己不知道,它有自己的域名。
5.CDN
CDN是一種特殊的集群頁面緩存服務器,當接受到用戶的請求後會將請求分配到最合適的CDN服務器節點獲取數據,如聯通用戶分配到聯通的節點,北京用戶分配到北京的節點,CDN的每個節點就是一個頁面緩存服務器,如果沒有緩存的頁面就從主服務器獲取,有就直接返回。
6.底層的優化
quic協議傳輸數據比TCP效率更高,比UDP安全。
第一章、網絡架構及其演變過程