系統架構設計(三):質量屬性

常見分類

一般來說,質量屬性可以分為以下幾類:

類別常見質量屬性
性能相關響應時間、吞吐量、資源利用率、實時性、可擴展性
可用性相關可用性、高可用性(HA)、可靠性、容錯性、恢復性
可維護性相關可維護性、可測試性、可擴展性、可配置性
安全性相關認證、授權、加密、完整性、審計
可用性體驗相關易用性、國際化、多語言支持、可訪問性
可部署性相關可部署性、可升級性、可回滾性
其他可移植性、互操作性、合規性、節能性

性能(Performance)

定義

系統響應請求的速度,處理數據的能力,系統在壓力下的表現。

影響

  • 用戶體驗(卡頓、延遲)
  • 系統容量(能接多少并發)
  • 成本控制(性能差就要加機器)

設計策略

  • 負載均衡(如 Nginx)
  • 緩存設計(本地緩存、分布式緩存)
  • 異步處理(消息隊列MQ)
  • 數據庫優化(索引、分庫分表、讀寫分離)
  • 限流、降級、熔斷

常見模式

  • CQRS(Command Query Responsibility Segregation)
  • 數據預計算(如排行榜)
  • 寫緩沖(Write-back cache)

可用性(Availability)

定義

系統能持續正常對外提供服務的能力,通常用「99.9%」、「五個9」來衡量。

影響

  • 業務連續性
  • 用戶信任度

設計策略

  • 高可用架構(雙機熱備、主備切換)
  • 容災設計(跨機房部署、跨云部署)
  • 自動故障轉移(Auto Failover)
  • 心跳檢測+健康檢查
  • 灰度發布、滾動升級

常見模式

  • 冗余(Redundancy)
  • 集群(Cluster)
  • 冗錯處理(Fault Tolerance)

可靠性(Reliability)

定義

系統能在特定時間段內,持續正確運行,無故障出錯。

影響

  • 數據一致性
  • 服務穩定性

設計策略

  • 冪等性設計(重復請求不會出錯)
  • 重試機制(帶指數退避)
  • 服務超時+超時重試
  • 分布式事務控制(TCC、SAGA)

常見模式

  • 三權分立架構(隔離控制、數據、業務)
  • 最終一致性(如BASE理論)

可維護性(Maintainability)

定義

系統容易修改、擴展、排查、修復的能力。

影響

  • 研發效率
  • 上線速度
  • Bug修復時間

設計策略

  • 良好的模塊化(高內聚,低耦合)
  • 代碼規范、架構規范
  • 日志可追蹤、統一監控
  • 統一異常處理機制
  • 自動化測試

常見模式

  • 微服務(Microservices)
  • 分層架構(Layered Architecture)
  • 插件式架構(Plugin Architecture)

安全性(Security)

定義

保護系統資源免受未授權訪問或破壞的能力。

影響

  • 法規合規(GDPR、等保)
  • 公司信譽

設計策略

  • 身份認證(OAuth2.0、JWT)
  • 權限控制(RBAC、ABAC)
  • HTTPS加密
  • 防護策略(防SQL注入、防XSS、防CSRF)
  • 審計日志記錄

常見模式

  • 零信任架構(Zero Trust Architecture)
  • 最小權限原則(Principle of Least Privilege)

可擴展性(Scalability)

定義

系統在業務增長、用戶量增加時,能夠順利擴展的能力。

影響

  • 系統生命周期
  • 成本控制

設計策略

  • 水平擴展(scale-out)優先
  • 無狀態設計(Stateless)
  • 動態伸縮(Auto Scaling)
  • 分布式計算(MapReduce、Spark)

常見模式

  • 微服務架構
  • 分布式緩存(Redis Cluster)

可測試性(Testability)

定義

系統能夠被有效地驗證和驗證改動是否正確的能力。

影響

  • 質量保障
  • 迭代速度

設計策略

  • 單元測試(Unit Test)
  • 接口測試(API Test)
  • 自動化測試(CI/CD集成測試)
  • Mock、Stub測試
  • 分層測試(金字塔測試模型)

常見模式

  • TDD(Test Driven Development)
  • Mocking Pattern

可部署性(Deployability)

定義

系統新版本發布、回滾的便利性和穩定性。

影響

  • 發布風險
  • 運維成本

設計策略

  • 容器化(Docker/K8s)
  • 灰度發布、藍綠部署
  • 無停機部署(Zero Downtime Deployment)
  • 回滾機制

常見模式

  • DevOps流程
  • GitOps部署模式

其他質量屬性(補充)

質量屬性簡單說明
可移植性(Portability)系統能否輕松運行在不同環境上
國際化(Internationalization)是否支持多語言、多幣種
節能性(Energy Efficiency)系統資源利用率,能耗控制
合規性(Compliance)是否符合行業規范、法律要求
互操作性(Interoperability)能否與第三方系統集成

質量屬性與架構設計映射表

質量屬性對應的架構設計實踐 / 策略
性能(Performance)- 負載均衡(Nginx、HAProxy) - 緩存(Redis、本地緩存) - 異步處理(MQ、異步編程) - 數據庫優化(讀寫分離、分庫分表) - 前端性能優化(CDN、懶加載)
可用性(Availability)- 雙活部署、主備切換 - 心跳檢測+健康檢查 - 容災設計(跨機房、跨地域) - 負載均衡故障轉移
可靠性(Reliability)- 冪等設計 - 自動重試+超時處理 - 日志追蹤 - 容錯機制(如斷路器模式)
可維護性(Maintainability)- 模塊化設計(DDD、清晰邊界) - 單一職責原則(SRP) - 自動化測試覆蓋 - 標準化日志/監控體系
安全性(Security)- 身份認證(OAuth2.0、SSO) - 接口鑒權(JWT、API Key) - 數據加密(傳輸+存儲) - 防護措施(防SQL注入/XSS/CSRF) - 最小權限原則
可擴展性(Scalability)- 無狀態服務(Stateless) - 微服務架構 - 服務拆分+數據庫拆分 - 動態水平擴展(Auto Scaling)
可測試性(Testability)- 單元測試、集成測試、端到端測試(E2E) - 測試金字塔設計 - Mock/Stub/Spy技術 - 接口可模擬
可部署性(Deployability)- 容器化部署(Docker/Kubernetes) - 藍綠部署、灰度發布 - 自動化部署(CI/CD流水線) - 快速回滾機制
可移植性(Portability)- 容器編排(K8s、Docker Compose) - 云中立設計(避免廠商鎖定) - 抽象平臺層(Platform Abstraction)
節能性(Energy Efficiency)- 資源彈性伸縮(如按需啟動實例) - 低功耗算法優化 - 服務按量自動關停/啟用
互操作性(Interoperability)- 標準化接口(RESTful、gRPC) - API網關(API Gateway) - 使用開放標準(OAuth、OpenID、SOAP等)

常用設計模式與質量屬性快速對照表

設計模式主要改善的質量屬性
負載均衡(Load Balancer)性能、可用性
微服務架構(Microservices)可擴展性、可維護性
熔斷器模式(Circuit Breaker)可靠性、可用性
分層架構(Layered Architecture)可維護性、可擴展性
事件驅動架構(EDA)性能、可擴展性
服務注冊與發現(Service Discovery)可擴展性、可部署性
零信任安全(Zero Trust)安全性
讀寫分離(Read/Write Splitting)性能、可靠性

常見系統對應質量屬性優先級表

系統類型質量屬性優先級(高 → 低)備注說明
支付系統(如微信支付、支付寶)安全性 > 可靠性 > 可用性 > 性能 > 可維護性安全第一(資金安全至上),然后要確保交易正確、不中斷。
電商系統(如淘寶、京東)性能 > 可擴展性 > 可用性 > 可靠性 > 安全性雙11秒殺場景,性能和擴展性壓倒一切,安全重要但次之。
實時聊天系統(如微信、Slack)可用性 > 性能 > 可靠性 > 安全性 > 可維護性保證實時溝通不中斷,秒開秒發,安全在可接受范圍內保證。
視頻監控系統(如安防攝像頭平臺)實時性 > 可用性 > 可擴展性 > 可靠性 > 性能實時流暢直播最重要,能容忍少量數據丟失(如低延時優先)。
SaaS管理系統(如企業ERP/CRM)可維護性 > 可擴展性 > 可用性 > 安全性 > 性能業務變化快,需要靈活維護、快速上線,性能一般要求不極端。
大數據平臺(如Hadoop/Spark平臺)可擴展性 > 性能 > 可靠性 > 可維護性 > 安全性處理海量數據,擴展性壓倒一切,其次是計算效率。
游戲后端(如王者榮耀服務器)性能 > 可用性 > 安全性 > 可靠性 > 可維護性游戲體驗感最重要,卡頓/延遲直接影響用戶流失。
在線教育平臺(如慕課網、學而思)可用性 > 性能 > 安全性 > 可維護性 > 可擴展性要求穩定流暢,體驗感良好,數據保護(隱私)也很重要。
IoT物聯網平臺(如智能家居中心)可靠性 > 可擴展性 > 安全性 > 性能 > 可維護性設備多、環境復雜,首先要保證設備間穩定通信。
短視頻平臺(如抖音、快手)性能 > 可用性 > 可擴展性 > 安全性 > 可維護性視頻播放流暢最重要,秒開秒播是基本要求。

總結

每個系統架構都是一場關于質量屬性的權衡和妥協。

通常選2~3個最重要的質量屬性作為設計重點,比如:

  • 金融系統:安全性 > 可用性 > 可靠性
  • 電商系統:性能 > 可擴展性 > 可維護性
  • 視頻監控系統:實時性 > 可用性 > 可擴展性

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78335.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78335.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【鋰電池剩余壽命預測】GRU門控循環單元鋰電池剩余壽命預測(Matlab完整源碼)

目錄 效果一覽程序獲取程序內容代碼分享研究內容GRU門控循環單元在鋰電池剩余壽命預測中的應用摘要關鍵詞1. 引言1.1 研究背景1.2 研究現狀與問題1.3 研究目的與意義2. 文獻綜述2.1 鋰電池剩余壽命預測傳統方法2.2 深度學習在鋰電池壽命預測中的應用2.3 研究空白與本文切入點3.…

SpringCloud原理和機制

Spring Cloud 是一套基于Spring Boot的微服務開發工具集,它提供了在分布式系統環境下構建應用程序所需的一系列工具和服務。Spring Cloud旨在幫助開發人員快速構建一些常見的微服務模式,如服務發現、配置管理、智能路由、熔斷器、微代理、控制總線等。 …

LeetCode -- Flora -- edit 2025-04-25

1.盛最多水的容器 11. 盛最多水的容器 已解答 中等 相關標簽 相關企業 提示 給定一個長度為 n 的整數數組 height 。有 n 條垂線,第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最…

有關圖的類型的題目以及知識點(2)

1、具有5個頂點的有向完全圖有20條弧。 2、若一個有向圖用鄰接矩陣表示,則第個結點的入度就是:第i列的非零元素的個數。 3、有向圖的鄰接矩陣可以是對稱的,也可以是不對稱的。 4、設N個頂點E條邊的圖用鄰接表存儲,則求每個頂點…

正則表達式的捕獲組

是正則表達式中的一個重要概念,用于提取字符串中的特定部分 捕獲組是通過正則表達式中的圓括號 () 定義的,它的作用是: 劃分和標記:將正則表達式的一部分劃分為邏輯單元。 提取數據:從字符串中提取符合組內模式的內容…

deepseek-cli開源的強大命令行界面,用于與 DeepSeek 的 AI 模型進行交互

一、軟件介紹 文末提供程序和源碼下載 deepseek-cli一個強大的命令行界面,用于與 DeepSeek 的 AI 模型進行交互。 二、Features 特征 Multiple Model Support 多模型支持 DeepSeek-V3 (deepseek-chat) DeepSeek-R1 (deepseek-reasoner)Dee…

Java—— 五道算法水題

第一題 需求: 包裝類:鍵盤錄入一些1~100之間的整數,并添加到集合中。直到集合中所有數據和超過200為止 代碼實現: import java.util.ArrayList; import java.util.Scanner;public class Test1 {public static void main(String[]…

安全編排自動化與響應(SOAR):從事件響應到智能編排的技術實踐

安全編排自動化與響應(SOAR):從事件響應到智能編排的技術實踐 在網絡安全威脅復雜度指數級增長的今天,人工處理安全事件的效率已難以應對高頻攻擊(如日均萬級的惡意IP掃描)。安全編排自動化與響應&#xf…

網絡原理 - 9

目錄 數據鏈路層 以太網 以太網幀格式 MAC 地址 DNS(Domain Name System) 完! 數據鏈路層 這里的內容也是簡單了解,除非是做交換機開發,一般程序員不需要涉及~~ 以太網 ”以太網“不是一種具體的網絡&#xf…

unity bug

發現一個奇怪的bug,就是某些unity版本打包apk時候不允許StreamingAssets里面有中文文件或者中文路徑。比如下圖這面這倆都是不行的。 解決方案:中文改為英文即可。 一般報錯信息如下: > Configure project :launcher WARNING:The option s…

【Linux網絡】打造初級網絡計算器 - 從協議設計到服務實現

📢博客主頁:https://blog.csdn.net/2301_779549673 📢博客倉庫:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正! &…

計算機視覺——對比YOLOv12、YOLOv11、和基于Darknet的YOLOv7的微調對比

概述 目標檢測領域取得了巨大進步,其中 YOLOv12、YOLOv11 和基于 Darknet 的 YOLOv7 在實時檢測方面表現出色。盡管這些模型在通用目標檢測數據集上表現卓越,但在 HRSC2016-MS(高分辨率艦船數據集) 上對 YOLOv12 進行微調時&…

?MySQL 事務隔離級別詳解

? 以下是 MySQL 支持的四種事務隔離級別及其特性,按并發安全性從低到高排列: ?1. 讀未提交 (Read Uncommitted)? ?問題?: ?臟讀 (Dirty Read)?:事務可讀取其他事務未提交的數據。?不可重復讀 (Non-repeatable Read)?&am…

如何解決IDE項目啟動報錯 error:0308010C:digital envelope routines::unsupported 問題

如何解決IDE項目啟動報錯 error:0308010C:digital envelope routines::unsupported 問題 在現代軟件開發過程中,開發人員通常使用集成開發環境(IDE)如IntelliJ IDEA、Visual Studio Code(VSCode)等進行Node.js項目開發…

2025最新Facefusion3.1.2使用Docker部署,保姆級教程,無需配置環境

Docker部署Facefusion 環境 windows10 Facefusion3.1.2 安裝 拉取源代碼 git clone https://github.com/facefusion/facefusion-docker.git 此處如果拉不下來,需要科學上網,不會的可以找我。 運行容器 將Dockerfile.cpu文件中的的From python:3.…

docker容器監控自動恢復

關于實現對docker容器監控以及自動恢復,這里介紹兩種實現方案。 方案1: 實現思路: 找到(根據正則表達式)所有待監控的docker容器,此處篩選邏輯根據docker運行狀態找到已停止(Exit)類…

HackMyVM - Chromee靶機

HackMyVM - chromee靶機https://mp.weixin.qq.com/s/hF09_24PRXpx_lmB6dzWVg

Cursor中調用本地大語言模型

引言 隨著大語言模型(LLM)技術的快速發展,越來越多的開發者希望在本地環境中運行這些強大的AI模型,以獲得更好的隱私保護、更低的延遲以及不依賴網絡連接的使用體驗。Cursor作為一款面向開發者的AI增強編輯器,提供了與本地大語言模型集成的功…

青少年CTF-貪吃蛇

題目描述: 進入賽題頁面: 按F12,查看源代碼, 可以看到是當分數大于或等于10000時,獲得flag,值已經給出,直接引用就可以,check_score.php?score${score},這里將${score}換…

亞馬遜測評老砍單?了解過全新自養號系統嗎?

以全球電商巨頭亞馬遜為例,其風控技術的進化堪稱一部永不停歇的“升級史”。然而,令人遺憾的是,不少賣家和測評服務商卻依舊沉浸在過去的“舒適區”,過度依賴指紋瀏覽器、luminati等傳統技術手段。這些曾經行之有效的工具&#xf…