從服務端視角看高併發難題
所謂伺服器大流量高併發指的是:在同時或極短時間內,有大量的請求到達服務端,每個請求都需要服務端耗費資源進行處理,並做出相應的反饋。
從服務端視角看高併發
服務端處理請求需要耗費服務端的資源,比如能同時開啟的程式數、能同時執行的執行緒數、網路連線數、 cpu、I/O、記憶體等等,由於服務端資源是有限的,那麼服務端能同時處理的請求也是有限的。高併發問題的本質就是:資源的有限性
高併發帶來的問題
服務端的處理和響應會越來越慢,甚至會丟棄部分請求不予處理,更嚴重的會導致服務端崩潰。
高併發處理的基本思路
1)從客戶端看
儘量減少請求數量,比如:依靠客戶端自身的快取或處理能力 。
儘量減少對服務端資源的不必要耗費,比如:重複使用某些資源,如連線池客戶端處理的基本原則就是:能不訪問服務端就不要訪問
2)從服務端看
增加資源供給,比如:更大的網路頻寬,使用更高配置的伺服器,使用高效能的 Web伺服器,使用高效能的資料庫
請求分流,比如:使用叢集 ,分散式的系統架構
應用最佳化,比如:使用更高效的程式語言 ,最佳化處理業務邏輯的演算法,最佳化訪問資料庫的SQL
基本原則:分而治之,並提高單個請求的處理速度
高併發處理的基本手段
1)客戶端發出請求層面,常見的手段有:
l 儘量利用瀏覽器的快取功能,減少訪問服務端,比如: js、css、圖片等
l 可以考慮使用壓縮傳輸的功能,減少網路流量,也會提高傳輸速度
l 考慮使用非同步請求,分批獲取資料
2)前端接收客戶端請求層面,常見的手段有:
l 動靜分離,部分靜態資源可以直接從 Nginx返回
l 按請求的不同,分發到不同的後端進行處理,比如:負載均衡、業務拆分訪問等
l 前面再加上一層來做多個 Nginx的負載均衡,比如:LVS、F5等
l 還可以在更前面使用 CDN服務
l 還可以對動態內容進行快取,儘量減少訪問後端服務
3)Web伺服器層面,常見的手段有:
l 使用最新的 JVM,並進行配置最佳化
l 對 Web伺服器進行配置最佳化,比如:調整記憶體數量、執行緒數量等
l 提供多個能提供相同服務的 Web伺服器,以實現負載均衡
l 仔細規劃 Web伺服器上部署的應用規模
l 對 Web伺服器進行叢集
4)Web應用層面,常見的手段有:
l 動態內容靜態化
l Java開發最佳化
l 最佳化處理業務邏輯的演算法
l 合理高效的利用快取
l 最佳化訪問資料庫的 Sql,可以考慮利用儲存過程等資料庫的能力
l 合理使用多執行緒,加快業務處理
l 部分業務可以考慮記憶體資料庫,或者是進行純記憶體處理
l 儘量避免遠端呼叫、大量 I/O等耗時的操作
l 合理規劃事務等較為耗資源的操作
l 合理使用非同步處理
l 對部分業務考慮採用預處理或者預計算的方式,減少實時計算量
l 內部系統間的業務儘量直接呼叫、直接處理,減少 WebService、工作流等
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555587/viewspace-2218527/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遊戲服務端的高併發和高可用遊戲服務端
- Python_服務端效能高併發測試Python服務端
- 高併發服務端分散式系統設計概要服務端分散式
- 京東搶購服務高併發實踐
- 個人筆記-服務端高併發分散式架構演進之路筆記服務端分散式架構
- 解決跨海高併發崩潰難題?so easy
- 從全域性視角看資料結構資料結構
- 從數學的視角看社交網路
- 高併發服務的幾條優化經驗優化
- 產業安全專家談 | 從攻防兩端視角看DDoS的應對策略產業
- 從獨立開發者視角看F2P遊戲的發行遊戲
- Go語言高併發與微服務實戰專題精講——遠端過程呼叫 RPC——服務端註冊實現原理分析Go微服務RPC服務端
- 從位元組碼視角看java字串的拼接Java字串
- 上帝視角看 TypeScriptTypeScript
- 非同步任務處理系統,如何解決業務長耗時、高併發難題?非同步
- 【廈門】招聘golang後端開發工程師(高併發高效能後臺服務框架)Golang後端工程師框架
- 【高併發】高併發環境下構建快取服務需要注意哪些問題?我和阿里P9聊了很久!快取阿里
- 從 Clickhouse 到 Apache Doris,慧策電商 SaaS 高併發資料服務的改造實踐Apache
- 模板,從服務端到客戶端服務端客戶端
- 從客戶端向服務端發起請求(3種)客戶端服務端
- 基於 Python 自建分散式高併發 RPC 服務Python分散式RPC
- RabbitMQ/高併發面試題MQ面試題
- JVM視角看物件建立JVM物件
- 訂單視角看支付
- 前端視角看視訊處理前端
- 淘寶從百到千萬級併發情況下服務端架構的演進過程服務端架構
- 快速構建高併發微服務微服務
- 【社招】【小米】golang服務端(高階)研發工程師Golang服務端工程師
- 高併發後端設計-限流篇後端
- 從工程視角看邁向資料網格架構的六大問題架構
- 用開發者視角看Microsoft EdgeROS
- IM即時通訊設計 高併發聊天服務:伺服器 + qt客戶端(附原始碼)伺服器QT客戶端原始碼
- 10分鐘,學會從上帝視角看產品資料
- 極驗高併發驗證服務背後的技術實現
- 鴻蒙高併發環境下的服務狀態監控系統鴻蒙
- [翻譯]微服務設計模式 - 5. 服務發現 - 服務端服務發現微服務設計模式服務端
- Java高併發系列——檢視閱讀Java
- 服務端開發小感服務端