解決高併發的常見策略
阿新 • • 發佈:2019-02-13
一個運營的系統在正式上線後將會遇到各種層級的高併發請求,因此我們必須對此做出相應的策略和技術解決方案,首先我們需要認清系統的高併發由3個層面導致:
1.傳輸層
大量使用者對系統請求後,將會造成網路頻寬和Web伺服器的I/O瓶頸。
2.計算層
接收大量使用者請求進行計算,將會造成業務伺服器和業務支撐伺服器的瓶頸。
3.儲存層
傳輸層和計算層將會產生大量的資料,資料量暴增,將會導致資料庫和儲存上的瓶頸。
針對以上將會造成的系統高併發瓶頸,我們需要採用不同的技術手段解決。
從總體上來看
1.首先需要解決網路頻寬和Web請求的高併發,需要合理的加大伺服器和頻寬的投入,並且需要充分的利用系統中軟體、硬體的快取機制,將能快取的內容都進行快取儲存,減少計算層和儲存層的壓力。
2.其次需要對業務伺服器和業務支撐伺服器進行合理的分層,並且採用平行計算和分散式演算法對大量計算進行處理,並且在開發的過程中需要採用Java SDK中併發包(Concurrency)進行編碼實現。
3.儲存層需要採用分散式檔案伺服器和列式的儲存伺服器進行構建,支撐海量資料的存放和讀取,並且還要對關係型資料進行深層次的配置引數優化。
4.我們還需要清楚的認識到,將來根據系統執行的狀態以及平臺中不同的業務場景循序漸進的進行調整和優化。
對於大型系統來說,採用的技術是涉及面非常廣,從硬體到軟體、程式語言、資料庫、WebServer、防火牆等各個領域都有了很高的要求。在面對大量使用者訪問、高併發請求方面,基本的解決方案集中在這樣幾個環節:將會使用高效能的伺服器、高效能的資料庫、高效率的程式語言、還有高效能的Web容器。 但是除了這幾個方面,還沒法根本解決面臨的高負載和高併發問題,所以需要將計算和負載的壓力分載到每個計算機上,使用不同的伺服器叢集機組進行分散式和平行計算,面對所產生的壓力,下面這張圖清晰的描述了,我們對系統中不同的計算瓶頸採用的不同解決手段,如圖所示: