系統架構系列 - 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/內容傳遞網路
avatar-img
2會員
18內容數
test
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
林柏宇的沙龍 的其他內容
本文探討微服務架構的設計理念,包括如何解耦服務之間的依賴性,以及其在臺灣企業推行的現狀與優點。微服務架構能夠提高系統的擴展性和容錯性,解決高耦合問題,特別適合快速迭代的開發環境。文章還提供瞭解耦的實用建議,幫助開發團隊維護和測試微服務,使系統更加模組化、靈活且可維護。
在這篇文章中,我們深入探討系統架構的不同層面,尤其關注於軟體層面。文章介紹了幾種常見的架構模式,包括一體化架構、微服務架構、事件驅動架構、服務導向架構及無服務架構,並討論了其優缺點。此外,我們還探討了技術選型與性能優化的重要性,並提供實用的建議,幫助讀者在未來的軟體開發中做出更明智的選擇。
本文彙整了一些關於 SQL 效能優化的技巧,提供讀者更快的資料處理方案。包括如何清空資料表、獲取最新資料、總和資料時的可能問題以及評估 SQL 語句效能的方法。通過合理的指令使用,能夠大幅提升查詢效率並降低錯誤發生的機率。適合資料庫管理者和程式開發者作為參考。
本文介紹資料庫鎖(DB lock)的基本概念、鎖的類型及其優缺點。通過對資料庫鎖的深入探討,我們可以理解如何在多用戶環境下保護資料的一致性與完整性,並瞭解排他鎖、共享鎖、意向鎖等不同類型鎖的作用。此外,文章還分析了鎖競爭、鎖等待和死鎖等可能的問題,幫助讀者更全面地掌握資料庫鎖的運作機制。
本文介紹資料庫正規化的概念與重要性,及其三個主要階段:第一正規化(1NF)、第二正規化(2NF)和第三正規化(3NF)。透過消除重複資料及確保欄位間的關聯性,正規化能夠顯著提升資料庫的管理便捷性與效能。使用不同情境例子幫助讀者瞭解在不同情境下正規化的必要性及其應用。適合所有希望優化資料庫設計的讀者。
本文探討資料庫中的索引及其關鍵概念,涵蓋何謂索引、其類型與設立原因、索引失效情況及 B-tree 與 B+ tree 的差異,並簡要區分主鍵與外鍵的功能。瞭解索引的運作有助於提升資料查詢效率,並正確選擇適當的索引策略,以確保資料庫的高效運行。
本文探討微服務架構的設計理念,包括如何解耦服務之間的依賴性,以及其在臺灣企業推行的現狀與優點。微服務架構能夠提高系統的擴展性和容錯性,解決高耦合問題,特別適合快速迭代的開發環境。文章還提供瞭解耦的實用建議,幫助開發團隊維護和測試微服務,使系統更加模組化、靈活且可維護。
在這篇文章中,我們深入探討系統架構的不同層面,尤其關注於軟體層面。文章介紹了幾種常見的架構模式,包括一體化架構、微服務架構、事件驅動架構、服務導向架構及無服務架構,並討論了其優缺點。此外,我們還探討了技術選型與性能優化的重要性,並提供實用的建議,幫助讀者在未來的軟體開發中做出更明智的選擇。
本文彙整了一些關於 SQL 效能優化的技巧,提供讀者更快的資料處理方案。包括如何清空資料表、獲取最新資料、總和資料時的可能問題以及評估 SQL 語句效能的方法。通過合理的指令使用,能夠大幅提升查詢效率並降低錯誤發生的機率。適合資料庫管理者和程式開發者作為參考。
本文介紹資料庫鎖(DB lock)的基本概念、鎖的類型及其優缺點。通過對資料庫鎖的深入探討,我們可以理解如何在多用戶環境下保護資料的一致性與完整性,並瞭解排他鎖、共享鎖、意向鎖等不同類型鎖的作用。此外,文章還分析了鎖競爭、鎖等待和死鎖等可能的問題,幫助讀者更全面地掌握資料庫鎖的運作機制。
本文介紹資料庫正規化的概念與重要性,及其三個主要階段:第一正規化(1NF)、第二正規化(2NF)和第三正規化(3NF)。透過消除重複資料及確保欄位間的關聯性,正規化能夠顯著提升資料庫的管理便捷性與效能。使用不同情境例子幫助讀者瞭解在不同情境下正規化的必要性及其應用。適合所有希望優化資料庫設計的讀者。
本文探討資料庫中的索引及其關鍵概念,涵蓋何謂索引、其類型與設立原因、索引失效情況及 B-tree 與 B+ tree 的差異,並簡要區分主鍵與外鍵的功能。瞭解索引的運作有助於提升資料查詢效率,並正確選擇適當的索引策略,以確保資料庫的高效運行。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
本文介紹了在網站開發中如何運用狀態機的原則和設計方法。通過具體案例分析,以及狀態和數據的區分,詳細介紹了狀態機的設計原則和應用。讀者可以通過本文瞭解如何將狀態機應用於實際的網站開發中。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
在IT世界中,持續整合(CI)和持續部署(CD)已成為提高開發效率和確保高質量軟件交付的重要實踐。本文將探討CI/CD的基本概念,介紹市場上的主流工具,並提供實施這一流程的指南和最佳實踐。
Thumbnail
一、什麼是Web Service?   簡單說就是「服務」的概念,人與人間、電腦與電腦間都是一樣的,一個是人與人的一來一回交流,媒介是語言中文,另一個則是個人電腦與伺服器的交流,媒介是HTTP/Internet,那麼有了媒介,就會有共同格式才能做
在當今數位時代,「雲端平台」已成為科技領域的一個熱詞。那麼,雲端平台究竟是什麼?它如何改變我們的生活和工作方式?讓我們一起來探討這個重要的主題。 雲端平台的定義 雲端平台,是指通過互聯網提供各種計算資源和服務的基礎設施。這些資源包括伺服器、儲存空間、數據庫、網絡和軟體應用等。用戶可以根據
Thumbnail
本篇說明如何利用Kubernetes特色,將PostgreSQL DB以HA的架構來提供服務,並說明相關的實作流程與說明。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
本文介紹了在網站開發中如何運用狀態機的原則和設計方法。通過具體案例分析,以及狀態和數據的區分,詳細介紹了狀態機的設計原則和應用。讀者可以通過本文瞭解如何將狀態機應用於實際的網站開發中。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
在IT世界中,持續整合(CI)和持續部署(CD)已成為提高開發效率和確保高質量軟件交付的重要實踐。本文將探討CI/CD的基本概念,介紹市場上的主流工具,並提供實施這一流程的指南和最佳實踐。
Thumbnail
一、什麼是Web Service?   簡單說就是「服務」的概念,人與人間、電腦與電腦間都是一樣的,一個是人與人的一來一回交流,媒介是語言中文,另一個則是個人電腦與伺服器的交流,媒介是HTTP/Internet,那麼有了媒介,就會有共同格式才能做
在當今數位時代,「雲端平台」已成為科技領域的一個熱詞。那麼,雲端平台究竟是什麼?它如何改變我們的生活和工作方式?讓我們一起來探討這個重要的主題。 雲端平台的定義 雲端平台,是指通過互聯網提供各種計算資源和服務的基礎設施。這些資源包括伺服器、儲存空間、數據庫、網絡和軟體應用等。用戶可以根據
Thumbnail
本篇說明如何利用Kubernetes特色,將PostgreSQL DB以HA的架構來提供服務,並說明相關的實作流程與說明。
Thumbnail
引言 在當今的技術世界中,Kubernetes 已成為容器化應用的領導平台。作為一個高效的容器編排系統,它不僅管理著容器的部署和擴展,還提供了必要的自動化支持,以保證應用的高可用性和性能。在這個框架中,自動擴展功能起著至關重要的作用,特別是在面對不斷變化的負載和需求時。