架构设计思路

简介: 前言我们一般在做架构设计的时候,会经历过三个阶段:需求分析、概要设计和详细设计。需求分析阶段: 主要梳理所有用例(Use case)和场景,并抽象出面向系统的用户与角色,梳理出需求提供哪些功能与非功能的需求给这些用户。

前言

我们一般在做架构设计的时候,会经历过三个阶段:需求分析、概要设计和详细设计。

  1. 需求分析阶段: 主要梳理所有用例(Use case)和场景,并抽象出面向系统的用户与角色,梳理出需求提供哪些功能与非功能的需求给这些用户。
  2. 概要设计阶段:根据需求分析的产物:核心需求,对整个系统进行模块划分,并定义好模块之间的交互关系。
  3. 详细设计阶段:通过多个视图来描述系统的架构,包括但不局限于:逻辑系统、物理视图、数据视图、物理视图

非功能需求

非功能的需求主要体现在高性能、高可用、可伸缩、可扩展、安全性等维度。

非功能指标 描述
高性能 运行效率高、响应速度快、吞吐量高
可用性 缩短宕机时间、出错恢复、SLA 在线可用时间
可伸缩性 垂直伸缩、水平伸缩
可扩展性 可插拔、组件重用
安全性 数据安全、加密、防攻击
鲁棒性 容错性、可恢复性

非功能需求对应不同系统指标

非功能需求对应不同系统指标主要分为 4 部分:

  • 应用服务器
  • 数据库
  • 缓存
  • 消息队列

1. 应用服务器

应用服务器是请求的入口,所有流量都是通过应用服务器来转发的。主要关心 QPS 、RT 等指标。
容量与性能相关指标如下所示

1. 每天的请求量
2. 各接口的访问峰值
3. 平均响应时间
4. 最大响应时间
5. 请求大小
6. 网卡与磁盘 I/O 负责
7. 内存使用情况
8. CPU 使用情况

2. 数据库

部署结构相关指标

1. 复制模型
2. 失效转移策略
3. 容灾策略
4. 归档策略
5. 读写分离策略
6. 分库分表策略

容量与性能相关指标如下所示

1. 当前数据容量
2. 预估数据容量
3. 每秒读峰值
4. 每秒写峰值
5. 每秒事务峰值

3. 缓存

部署结构相关指标

1. 复制模型
2. 失效转移
3. 持久策略
4. 淘汰策略
5. 线程模型

容量与性能相关指标

1. 缓存内容大小
2. 缓存内容数量
3. 缓存内容过期时间
4. 缓存数据结构
5. 每秒读峰值
6. 每秒写峰值

4. 消息队列

部署结构相关指标

1. 复制模型
2. 失效转移
3. 持久策略

容量与性能相关指标

1. 每天平均数据增量
2. 消息保存时间
3. 每秒读峰值
4. 每秒写峰值
5. 每条消息大小
6. 平均响应时间
7. 最大响应时间

参考

  • 分布式服务架构原理、设计与实战
目录
相关文章
|
前端开发 Java Spring
架构设计的分层架构
架构设计的分层架构
|
消息中间件 Java 物联网
一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布
之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用RabbitMQ,看过的朋友都说写的比较详细,希望再总结一下目前比较流行的MQTT。所以接下来,就来介绍什么MQTT?它在IoT中有着怎样的作用?如何在项目中使用MQTT?
18614 62
一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布
|
8月前
|
存储 人工智能 自然语言处理
AI Agent与SaaS工具协同发展的未来:企业智能化的全新范式
AI Agent以自主性和智能化为核心,适合复杂任务的动态执行;而SaaS工具则注重服务的完整性和易用性,适合标准化业务需求。
488 14
AI Agent与SaaS工具协同发展的未来:企业智能化的全新范式
|
缓存 架构师 安全
架构篇:什么才是真正的架构设计?
特别特别厉害的一篇文章,今天无意中看到的,转载至CSDN的大佬hguisu的:blog.csdn.net/hguisu/article/details/78258430,谈到了作者对于架构的理解,我看完是真的受益匪浅。
|
敏捷开发 测试技术 uml
UML 在敏捷开发中的应用与实践
【8月更文第23天】统一建模语言 (UML) 是一种广泛使用的图形化语言,用于描述软件系统的设计。它通过各种图表和符号来帮助开发团队理解系统的架构、行为和交互。而敏捷开发则是一种强调快速迭代、客户反馈和持续改进的软件开发方法论。这两种看似风格迥异的方法实际上可以很好地协同工作,以提高软件项目的效率和质量。
283 4
|
数据可视化
52【软件设计】软件设计方法归纳总结
软件设计方法有:**结构化设计**(数据流图为依据)、**面向对象设计**(面向对象概念为依据);
493 0
|
设计模式 数据可视化 程序员
不会画uml?推荐使用代码画图的工具PlantUml
不会画uml?推荐使用代码画图的工具PlantUml
1006 1
|
数据采集 存储 SQL
ETL的基础知识,看完你就全明白了!
随着企业的发展,各业务线、产品线、部门都会承建各种信息化系统方便开展自己的业务。
2095 0
ETL的基础知识,看完你就全明白了!
|
iOS开发
iOS (DZMCycleScrollView)无限滚动 - 无限轮播 - ScollView
iOS (DZMCycleScrollView)无限滚动 - 无限轮播 - ScollView
216 0
iOS (DZMCycleScrollView)无限滚动 - 无限轮播 - ScollView
|
SQL 监控 专有云
分布式服务架构下的混沌工程实践
本文来自阿里巴巴高可用架构团队高级开发工程师肖长军(花名穹谷)在 GIAC(全球互联网架构大会)上的分享,包含三部分内容:(阿里巴巴中间件公众号对话框发送“混沌工程”,获取分享PPT) 混沌工程的定义、价值、原则和流程; 混沌工程如何在企业中落地,以及 ChaosBlade 和混沌实验平台 AHAS Chaos 架构设计; 结合两个具体案例介绍了分布式服务下的混沌工程实践; 大家好,我是来自阿里的肖长军,今天给大家分享混沌工程在分布式服务架构下的具体实践。
22018 109