更新於 2024/11/10閱讀時間約 3 分鐘

系統架構系列 - 3: 高併發、高可用與高性能

簡介

在系統架構的領域中,系統性能的現況常常是討論的焦點,其中所謂的三高——「高併發」、「高可用」與「高性能」更是不可或缺的概念。接下來,本文將對這三者進行介紹。

高併發

在網路文章與書籍中,「高併發」相關的主題經常被提及,因此這可以說是最受關注的概念之一。

高併發(High Concurrency)可以理解為承擔流量的能力,即如何應對短時間內的高流量。大多數系統在正常情況下運作良好,但在高併發情境下,情況可能就不那麼樂觀了。每個函數的處理速度、API的回傳速度、SQL的效能等,都是需要考量的因素。即使僅僅慢了0.1秒,都可能導致整個系統崩潰。

目前實現高併發的方式主要有以下幾種:

  1. 垂直擴展:直接升級伺服器等硬體設施,以提升計算速度,簡單暴力的方式。
  2. 水平擴展+負載均衡:通過負載均衡(Load Balance)將請求平均分配到多台伺服器上。[註1]
  3. 多線程:利用多線程技術同時處理多個請求。
  4. 事件驅動架構:透過事件循環和回調函數(如 Node.js)來處理大量併發請求。
  5. 緩存:利用緩存來減少對後端數據庫的請求,提高響應速度。

高可用

高可用性(High Availability, HA)是指系統能夠保持多長時間正常運行的能力,或稱低停機時間。高可用的目標在於最小化系統的停機時間,從而提升用戶體驗和服務的可靠性。

目前實現高併發的方式主要有以下幾種:

  1. 負載均衡:將請求分散到多個伺服器上,以減少單一伺服器的負擔,提升整體可用性。
  2. 灰度發布:在更新新版本時,先對部分機器進行更新,確認無誤後再更新其餘伺服器。
  3. 冗餘系統:通過使用多個伺服器或組件,確保即使某一部分出現故障,系統仍能正常運作。例如,在不同地理位置設置伺服器。
  4. 故障轉移:當主系統整個故障時,自動切換至備用系統以保持服務連續性。
  5. 監控和自動恢復:實施監控系統,及時檢測故障並自動啟動修復流程。
  6. 故障演練:利用工具進行各種故障的演練,確保應對流程的有效性。

高性能

高性能(High Performance)指的是系統或應用處理任務的能力,簡單來說,就是對用戶的體驗。一般而言,高性能包含「快速處理能力」、「高資源利用率」、「低延遲」以及「可擴展性」。

目前實現高性能的方式有以下幾種:

  1. 演算法:選擇高效的演算法和數據結構,可以有效減少計算量。
  2. 多線程:充分利用多核處理器的能力,同時執行多個任務。
  3. 緩存:使用緩存儲存頻繁訪問的數據,減少對資料庫的請求。
  4. 性能監控:實施監控工具,及時發現並解決性能瓶頸。

總結

在這篇文章中,我簡要介紹了系統架構的三高議題。在實務上,近年來越來越紅的電商、代購、限量商品等都會用到這方面的知識。若想深入了解更多詳細資料,可以參考這篇文章:高併發通用設計閱讀筆記


[註1] 以 AWS、GCP 等雲端平台來說都有提供自動化的負載均衡設定,當流量達到設定值時,系統會自動啟動新的機器以分散流量,而在流量降低時則會關閉不需要的機器。

參考資料:

  1. https://ja99-doge.github.io/2022/12/12/high_concurrency/#如何提昇系統性能
  2. https://cloud.tencent.com/developer/article/2021745
  3. https://aws.amazon.com/tw/what-is/apache-kafka/
  4. https://ithelp.ithome.com.tw/articles/10222520
  5. https://hackmd.io/@tienyulin/redis-master-slave-replication-sentinel-cluster
  6. https://zh.wikipedia.org/zh-tw/內容傳遞網路
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.