# 講講項目中你是如何處理高並發的?


講講項目中你是如何處理高並發的?

計算機/cs技術知識點

高並發?

高並發是互聯網分布式系統架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時並行處理很多請求。
高並發相關常用的一些指標有響應時間(Response Time),吞吐量(Throughput),每秒查詢率QPS(Query Per Second),並發用戶數等。
1 響應時間:系統對請求做出響應的時間。例如系統處理一個HTTP請求需要200ms,這個200ms就是系統的響應時間。
2 吞吐量:單位時間內處理的請求數量。
3 QPS:每秒響應請求數。在互聯網領域,這個指標和吞吐量區分的沒有這么明顯。
4 並發用戶數:同時承載正常使用系統功能的用戶數量。例如一個即時通訊系統,同時在線量一定程度上代表了系統的並發用戶數。

處理高並發問題的常見方法有如下幾種:

1. 使用靜態頁面

盡量將可以使用靜態頁面的地方使用靜態頁面,減少頁面的解析時間,能夠緩解服務器壓力並降低數據庫數據的頻繁交換。
實現靜態頁面的方法由很多:
* freemarker 
* Thymeleaf

2.緩存方面

將一些有時效性或經常訪問的數據存儲在專門用於緩存的應用程序中,減少數據庫的訪問壓力。常見的緩存技術有:
* 本地緩存:Cache
* 分布式緩存:Redis

3. 優化數據庫方面(對於一個優秀的應用,sql優化是必須做的)
* 優化數據庫查詢語句,復雜的SQL語句不要使用ORM框架自動生成而是手動編寫,同時優化數據庫的表結構,如加入索引等.
* 數據庫讀寫分離,主數據庫服務器負責寫,從數據庫服務器負責讀,通過主從復制來保證數據的完整性。
* 分表分區
* 對數據庫服務器進行硬件升級
* 表的設計要符合三大范式
* 添加適當的存儲過程,觸發器和事務等.
4.負載均衡

我們知道可以通過集群以支持高並發和大數據量,而集群之間的分工就需要依靠負載均衡技術。
負載均衡是指將請求划分給多個操作單元也就是分開部署的服務器上,即將收到請求按照一定規則分發給其它專門處理的處理服務器進行處理

5.動靜分離

一般有兩種:
1 圖片服務器分離:因為請求訪問服務器上的圖片資源是非常耗費服務器資源的,所以我們可以單獨部署圖片服務器,將壓力轉移並分擔風險。
2 將靜態資源全部存放在 CDN 服務器上或者 nginx 服務器上,提高用戶訪問靜態代碼的速度,降低對后台應用訪問。
* CDN:能實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等信息將請求重新導向離用戶最近的服務節點上。
* nginx:高性能的HTTP服務器和反向代理服務器

6.多用異步請求,少用同步請求。(需要返回結果執行下一步的必須使用同步請求)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM