系统架构设计(三):质量属性

常见分类

一般来说,质量属性可以分为以下几类:

类别常见质量属性
性能相关响应时间、吞吐量、资源利用率、实时性、可扩展性
可用性相关可用性、高可用性(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.mzph.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…