高併發解決方案

         高併發是web開發中常常會遇到的問題,所以,做爲一個web開發者,應該深刻了解什麼是高併發及其高併發解決方案,我作web開發也有好長時間,web

對高併發問題也略知一二,下邊就談談高併發問題,和你們一塊兒學習,有寫的不對的地方或者有遺漏的地方,還請你們批評指正。數據庫

  一. 什麼是高併發?  緩存

     高併發說的通俗易懂點,就是大量請求訪問服務器,對服務器形成巨大壓力致使數據出錯,服務器宕機等一系列問題。舉個例子:一架飛機最多承載300旅客方可正常起飛,服務器

若是一會兒承載400旅客,超出飛機的最大承載量,會引發飛機沒法正常起飛的問題,高併發就相似於這個。面向用戶的系統常常會遇到高併發問題,好比 淘寶,天貓,京東這些session

電商網站,每一年的6.18以及雙11併發量達到上千萬甚至更高,對服務器形成巨大壓力,但不多聽到消息說某某網站雙11掛掉了,致使一件商品也沒賣出去,爲何?由於他們從硬架構

件,程序,架構,數據庫各個方面作了優化從而提高服務器的最大承受壓力。因此下邊談談如何應對高併發?併發

  二. 高併發解決方案負載均衡

    面對高併發問題,如何去提高服務器壓力?隨着併發量的增長,咱們須要一步一步的去優化它,這是一個漫長的過程,優化須要從如下幾個方面去入手:數據庫優化,架構優化,運維

程序優化(業務拆分)等方面。分佈式

  1. 數據庫優化:數據庫採用讀寫分離,A數據庫用戶讀操做,B數據庫用戶寫入操做,而後將B數據庫數據實時寫入到A數據庫,這樣能夠將原來一個數據庫承擔的壓力分擔到兩個

數據庫上。

  2. 架構優化:根據實際狀況能夠適當增長應用服務器節點,應用服務器之間採用集羣,經過nignx負載均衡,將客戶端請求分攤到幾個應用服務器上邊。同時,能夠在應用服務器與

數據庫服務器之間增長緩存服務器,根據實際狀況能夠增長多臺緩存服務器,全部的請求通過負載均衡服務器到達應用服務器後,先去緩存服務器中查找,若是命中,就從緩存中拿數據,

若是未命中,在去數據庫中查數據同時緩存到緩存服務器,下次相同請求過來時就去緩存中取數據,這樣作,能夠減小數據庫壓力,請求都去緩存服務器中拿數據。

  注:集羣環境下的web應用服務器須要注意session數據共享問題

  3. 程序優化:隨着業務量的增多,咱們須要對業務進行拆分(數據拆分),就是將一個龐大的系統按業務邏輯的不一樣,咱們拆分紅多個子系統,子系統之間經過PRC遠程通訊等方式

相互協做,使系統保持正常運行狀態。按業務將系統拆分紅若干個子系統有利有弊:

  a. 響應速度變慢,系統之間經過接口調用,響應速度變慢,但吞吐量大。

  b. 代碼的耦合度下降

  c. 某一塊邏輯出現問題,不影響整個系統運行

  d. 團隊之間的依賴性減小,能夠作到各司其職

  e. 分佈式系統部署運維難度大,成本高

  注:分佈式系統須要注意事物問題,本地事物將不能知足需求

  時間有限,就寫這麼多,寫的不完整,還能夠從不少細節方面去優化, 描述不許確的地方但願你們批評指正。

相關文章
相關標籤/搜索