天天看點

高并發場景

高并發:一種系統運作過程中的一種“短時間内遇到大量操作請求”的情況,主要web系統集中大量通路收到大量請求,如12306搶票、雙11等,

        該情況的發生會導緻系統在該段時間内執行大量操作,例如對資源的請求、資料庫的操作等。

高并發處理名額:

  1. 響應時間:系統對請求做出相應的時間
  2. 吞吐量:機關時間内處理的請求數
  3. 每秒查詢率QPS: 每秒相應請求數
  4. 并發使用者數:同時承載正常使用系統功能的使用者數量

 高并發:-->秒殺系統等會導緻在短時間内執行大量請求操作,若處理不好,不僅降低使用者體驗(請求響應時間過長),同時可能導緻系統當機

  1. 多線程:多線程可以了解為處理高并發的一種程式設計方法 --->為了提高jvm的執行效率,java提供了多線程機制提高資料處理效率
  2. 多線程并發技術:線程池、線程狀态、線程間協作、悲觀鎖與樂觀鎖、共享資料通路的阻塞同步(synchronized與ReentrantLack)、非阻塞同步(CAS與原子數)
  3. 高并發技術方案:提高并發度

           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語句執行的時間,主從複制、讀寫分離

        建立叢集:将讀寫或計算操作分攤到多态機器上

繼續閱讀