轉自:https://blog.csdn.net/qq_42427219/article/details/88956874
如何解決多並發的問題
1.負載均衡
負載均衡將是大型網站解決高負荷訪問和大量並發請求采用的終極解決辦法。
(1)單個重負載的運算分擔到多台節點設備上做並行處理,每個節點設備處理結束后,將結果匯總,返回給用戶,系統處理能力得到大幅度提高。
(2)大量的並發訪問或數據流量分擔到多台節點設備上分別處理,減少用戶等待響應的時間,這主要針對Web服務器,FTP服務器,企業關鍵應用服務器等網絡應用。

2.數據庫集群
就是利用至少兩台或多台數據庫服務器,構成一個虛擬單一數據庫邏輯映像,向單數據庫系統那樣,向客戶端提供透明的數據服務。

3.庫表散列(分庫分表)
采用Hash算法把數據分散到各個分表中,這樣IO更加均衡。

4.圖片服務器分離
對於Web服務器來說,不管是Apache,IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站
都會采用的策略,他們都有獨立的圖片服務器,甚至很多台圖片服務器。這樣的架構可以降低提供頁面訪問請求的服務器系統壓力,並且可以保證
系統不會因為圖片問題而崩潰,在應用服務器和圖片服務器上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支持,
盡可能少的LoadModule,保證更高的系統消耗和執行效率。
5.鏡像
鏡像是大型網站常采用的提高性能和數據安全性的方式,鏡像的技術可以解決不同網絡接入商和地域帶來的用戶訪問速度差異,
比如ChinaNet和EduNet之間的差異就促使了很多網站在教育網內搭建鏡像站點,數據進行定時更新或者實時更新。
自動把整個數據庫或其中的關鍵數據復制到另一個磁盤上,每當主數據庫更新時,DBMS會自動把更新后的數據復制過去,即DBMS自動保證
鏡像數據與主數據的一致性。
出現介質故障時,可由鏡像磁盤繼續提供數據庫的可用性,同時DBMS自動利用鏡像磁盤進行數據庫的修復,不需要關系系統和重裝數據庫副本。
數據庫鏡像還可以用於並發操作。即當一個用戶對數據庫加排他鎖修改數據時,其他用戶可以讀鏡像數據庫,而不必等待該用戶釋放鎖。
數據庫鏡像是通過復制數據實現的,頻繁地復制自然會降低系統運行效率,因此在實際應用中用戶往往只選擇對關鍵數據鏡像,如對日志文件鏡像,
而不是對整個數據庫進行鏡像。

6.緩存
Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。在使用web語言開發的時候,各種語言基本都有自己的緩存模塊和方法。
7.HTML靜態化
靜態化的html頁面效率最高、消耗最小,所以我們可以盡可能使我們的網站上的頁面采用靜態頁面。但是對於大量內容並且頻繁更新的網站,我們無法全部手動去挨個實現,於是出現了我們常見的信息發布系統CMS,像我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發布系統來管理和實現的,信息發布系統可以實現最簡單的信息錄入自動生成靜態頁面,還能具備頻道管理、權限管理、自動抓取等功能。
除了門戶和信息發布類型的網站,對於交互性要求很高的社區類型網站來說,盡可能的靜態化也是提高性能的必要手段,將社區內的帖子、文章進行實時的靜態化,有更新的時候再重新靜態化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網易社區等也是如此。
同時,html靜態化也是某些緩存策略使用的手段,對於系統中頻繁使用數據庫查詢但是內容更新很小的應用,可以考慮使用html靜態化來實現,比如論壇中論壇的公用設置信息,這些信息目前的主流論壇都可以進行后台管理並且存儲再數據庫中,這些信息其實大量被前台程序調用,但是更新頻率很小,可以考慮將這部分內容進行后台更新的時候進行靜態化,這樣避免了大量的數據庫訪問請求。

8.CDN加速技術
CDN的全稱是內容分發網絡。其是通過在現有的Internet中增加一層新的網絡架構,將網站的內容發布到最接近用戶的網絡“邊緣”,使用戶可以就近取得所需的內容,提高用戶訪問網站的響應速度。
CDN網絡是在用戶和服務器之間增加Cache層,主要是通過接管DNS實現,將用戶的請求引導到Cache上獲得源服務器的數據。緩存服務器從實際IP地址得得到內容以后,一方面在本地進行保存,以備以后使用,另一方面把獲取的數據返回給客戶端,完成數據服務過程。

