高并發:一種系統運作過程中的一種“短時間内遇到大量操作請求”的情況,主要web系統集中大量通路收到大量請求,如12306搶票、雙11等,
該情況的發生會導緻系統在該段時間内執行大量操作,例如對資源的請求、資料庫的操作等。
高并發處理名額:
- 響應時間:系統對請求做出相應的時間
- 吞吐量:機關時間内處理的請求數
- 每秒查詢率QPS: 每秒相應請求數
- 并發使用者數:同時承載正常使用系統功能的使用者數量
高并發:-->秒殺系統等會導緻在短時間内執行大量請求操作,若處理不好,不僅降低使用者體驗(請求響應時間過長),同時可能導緻系統當機
- 多線程:多線程可以了解為處理高并發的一種程式設計方法 --->為了提高jvm的執行效率,java提供了多線程機制提高資料處理效率
- 多線程并發技術:線程池、線程狀态、線程間協作、悲觀鎖與樂觀鎖、共享資料通路的阻塞同步(synchronized與ReentrantLack)、非阻塞同步(CAS與原子數)
- 高并發技術方案:提高并發度
3.1 分布式緩存(redis、memcached等):結合CDN來解決圖檔檔案等通路
3.2 消息隊列:rabbitMQ、kaflka、activeMQ等,解決大量消息的異步處理
3.3 分庫分表讀寫分離:解決大資料查詢問題
3.4 資料庫垂直拆分:
3.5 應用拆分:一個工程被拆分為多個工程部署,利用dubbo解決多工程之間的通信
3.6 sql與nosql組合:
重要的是整體架構的設計、資料庫的設計和優化、緩存系統等
有幾個常用的措施:
1、對常用功能建立緩存子產品
2、網頁盡量靜态化
3、使用單獨的圖檔伺服器,降低伺服器壓力,使其不會因為圖檔加載造成崩潰
4、使用鏡像解決不同網絡接入商和不同地域使用者通路差異
5、資料庫叢集圖表散列
6、加強網絡層硬體配置,硬的不行來軟的。
7、終極辦法:負載均衡
大流量、高并發網站主要考慮的是可伸縮性,當使用者量、流量增大的時候,可以通過增加機器來分擔壓力;
大流量,高并發的網站主要的壓力應該是在資料庫的io操作上,優化查詢語句,
合理使用索引,減少sql語句執行的時間,主從複制、讀寫分離
建立叢集:将讀寫或計算操作分攤到多态機器上