架构设计思路

简介: 前言我们一般在做架构设计的时候,会经历过三个阶段:需求分析、概要设计和详细设计。需求分析阶段: 主要梳理所有用例(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. 最大响应时间

参考

  • 分布式服务架构原理、设计与实战
目录
相关文章
|
1月前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
76 4
|
5月前
|
敏捷开发 Java 测试技术
「架构」模型驱动架构设计方法及其运用
本文探讨了MDA在软件开发中的应用,从需求分析到测试,使用UML建模功能需求,通过PIM设计架构,自动生成代码以减少错误。MDA提升了可维护性、可扩展性和可移植性,通过工具如Enterprise Architect和Eclipse MDT支持自动化转换。虽然有挑战,如模型创建和平台转换,但结合敏捷方法和适当工具能有效解决,从而提高开发效率和软件质量。
606 0
「架构」模型驱动架构设计方法及其运用
|
消息中间件 缓存 架构师
【老猿说架构】系统架构设计原则和步骤
【老猿说架构】系统架构设计原则和步骤
365 0
【老猿说架构】系统架构设计原则和步骤
|
监控 安全 Java
高性能服务器设计思路和方案
高性能服务器设计思路和方案
152 0
|
缓存 运维 负载均衡
什么才是真正的架构设计?架构君给你解释的一清二楚。
什么才是真正的架构设计?架构君给你解释的一清二楚。
716 0
什么才是真正的架构设计?架构君给你解释的一清二楚。
|
缓存 开发框架 前端开发
架构:第九章:架构设计(为什么要这么设计,解决了什么问题)
架构:第九章:架构设计(为什么要这么设计,解决了什么问题)
207 0
|
Java 应用服务中间件
架构:第六章:系统架构
架构:第六章:系统架构
146 0
架构:第六章:系统架构
|
缓存 运维 架构师
架构之道:分离业务逻辑和技术细节
架构之道:分离业务逻辑和技术细节
522 1
架构之道:分离业务逻辑和技术细节
|
消息中间件 存储 测试技术
关于架构设计的易变性,应该如何理解呢?
通常情况下,我们的架构设计图大概率会如下图这个样子了,首先声明一点,这其实并没有什么不妥的,这也是很典型的分层设计啦~
关于架构设计的易变性,应该如何理解呢?