高併發指的是某個瞬間湧入海量請求,比如促銷活動中的秒殺,搶券,搶紅包等等。由於服務器端口是有上限,web服務器連接數有上限,數據庫連接有上限,JVM內存有上限,CPU個數有上限,等等這一系列的限制,導致在這樣的一個瞬間,系統是無法迅速對海量請求中每一個均做出邏輯處理響應,爲了解決系統被打垮,並且儘量給每個請求一個合理的處理反饋,技術開發人員們摸索出了很多種應對的手段。
前臺
動靜分離
靜態化
壓縮(圖片,html,js)
異步渲染
後臺
限流
降級(hystrix)
服務化(服務拆分)
分庫分表(數據平均拆分,減少事務邊界,創建異構索引表)
異步化(MQ解耦,簡化服務調用鏈路,數據庫事務異步化,CAP理論,柔性事務)
緩存(redis,guava)
redis(lpop,lpush) lpop存入一定數量資源,lpop消費資源,只有pop到纔有機會被處理適用於秒殺場景
漏桶算法與令牌桶算法(流控)
冪等性
監控與壓測
機器性能監控
流量監控
異常監控與處理策略
jmeter壓測
TPS(每秒處理事務個數:幾個,幾十個,幾百個,幾千個,幾萬個等)
後面會針對以上每個點做詳細闡述與實踐介紹。