【互聯網架構】高併發策略,與高並行的比較

單個或多個線程,依次或是切換執行
  • 併發:有處理多個任務的能力,不必定同時。(一個CPU輪流)
  • 並行:有同時處理多個任務的能力(多個CPU同時)nginx

    共同點:能夠是多個線程
    不一樣點:
  • 並行:多個線程同時被多個CPU執行
  • 併發:多個線程被一個CPU輪流切換着執行數據庫

    例子
  • 你吃飯吃到一半,電話來了,你一直到吃完了之後纔去接,這就說明你不支持併發也不支持並行
  • 你吃飯吃到一半,電話來了,你停了下來接了電話,接完後繼續吃飯,這說明你支持併發
  • 你吃飯吃到一半,電話來了,你一邊打電話一邊吃飯,這說明你支持並行服務器

Node.js事件循環機制使用了高併發策略,採用了單線程模型處理,不會爲每個接入請求分配一個線程,而是用一個主線程處理全部的請求,而後對I/O操做進行異步處理,避開了建立、銷燬線程以及在線程間切換所需的開銷和複雜性。

總結: 高併發是互聯網分佈式系統架構師設計中必須考慮的因素之一,它一般是指,經過設計保證系統可以並行處理不少請求。
提升系統併發能力的方式,方法論上主要有兩種:垂直擴展與水平擴展。架構

垂直擴展:

能夠經過提高單機硬件性能,或者提高單機架構性能,來提升併發性。
但單機性能老是有限的。併發

水平擴展----互聯網分佈式架構設計高併發終極解決方案

互聯網分層架構中,各層次水平擴展的實踐又有所不一樣:異步

  • 反向代理層能夠經過「DNS輪詢」的方式來進行水平擴展
  • 站點層能夠經過nginx來進行水平擴展
  • 服務層能夠經過服務鏈接池來進行水平擴展
  • 數據庫能夠按照數據範圍,或者數據哈希的方式來進行水平擴展

各層實施水平擴展後,可以經過增長服務器數量的方式來提高系統的性能,作到理論上的性能無限。分佈式

相關文章
相關標籤/搜索