架构设计思路

码影弦歌者
• 阅读 2301

架构设计思路

前言

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

  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年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
4年前
PB级海量数据服务平台架构设计实践
基于PB级海量数据实现数据服务平台,需要从各个不同的角度去权衡,主要包括实践背景、技术选型、架构设计,我们基于这三个方面进行了架构实践,下面分别从这三个方面进行详细分析讨论:实践背景该数据服务平台架构设计之初,实践的背景可以从三个维度来进行说明:当前现状、业务需求、架构需求,分别如下所示:当前现状收集了当前已有数据、分工、团队
《社区人员管理》实战案例设计&个人案例分享
设计是一个让人梦想成真过程,开始编码、测试、调试之前进行需求分析和架构设计,才能保证关键方面都做正确
BichonCode BichonCode
5年前
软件工程
一、软件工程学概述1.1软件的生命周期1.定义:软件的产生直到报废或停止使用的生命周期。1.分为三个时期:软件定义、软件开发、运行维护(软件维护)。1.软件定义时期分为三个阶段:问题定义、可行性研究和需求分析、1.开发时期分为四个阶段:总体设计、详细设计、编码和单元测试、综合测试。1.维护时期主要是使软件持久地满足用户的需要,
wanQQ wanQQ
4年前
数据库系统概论学习笔记Day02
数据库系统概论学习笔记Day02ER模型的数据库设计设计阶段数据库设计者必须与应用的用户进行交互以理解应用的需求,把它们以用户能够理解的高层的形式表示出来,然后再将需求转换为更低层次的设计。需求分析:此阶段是完整的描述未来数据库用户的需求。数据库设计者需要和应用领域的专家和用户进行深入♂沟通。这一阶段产出的是用户需求规格说明概念设计:设计者选用
Wesley13 Wesley13
4年前
InfoQ 趋势报告:架构和设计领域技术演变详解
https://www.infoq.cn/article/R7lWXd0R4VFf3E0bB\38本文概述了我们对当前“架构和设计”领域的看法,这个领域侧重于基础设施模式、技术框架模式的实现,以及软件架构师必须掌握的设计流程和技能。关键要点:我们看到了“演化式架构”设计需求的增长,这种架构建立在可替换性设计和关注“胶水”
Easter79 Easter79
4年前
Tedis:基于 TiKV 构建的 NoSQL 数据库
作者介绍:陈东明,饿了么北京技术中心架构组负责人,负责饿了么的产品线架构设计以及饿了么基础架构研发工作。曾任百度架构师,负责百度即时通讯产品的架构设计。具有丰富的大规模系统构建和基础架构的研发经验,善于复杂业务需求下的大并发、分布式系统设计和持续优化。个人微信公众号dongming\_cdm。Tedis(https://github.
互联网高可用架构探讨 | 京东云技术团队
在互联网架构设计中,高可用是必不可少的环节,要从网络架构、服务架构、数据架构以及软硬件架构等多方面来分析设计,是架构师必备的技能之一。