模块一学习笔记、总结
一.架构相关基础概念
系统/子系统:关联、规则、能力、分层
模块/组件
系统从逻辑角度拆分为模块,实现职责分离,便于人员分工
系统从物理角度拆分为组件,实现单元复用
框架/架构
软件框架:组件规范/软件产品
软件架构:结构、准则、描述 (MVP|前端 微服务|后端)
MVC 既是框架也是架构
4R 架构
顶层结构 Rank
组成角色 Role
角色关系 Relation
运作规则 Rule:软件架构不断变化、持续运行
分层架构:可扩展的架构模式
架构分层:自顶向下,逐步细化
二.架构图
分类:系统(后端)、应用、部署(组件)、业务、物理、逻辑
画法
1.4+1 架构视图
UML 类图、状态图:逻辑视图(系统为用户提供的功能)
UML 序列图、活动图:处理视图(系统处理过程)
UML 包图:开发视图(程序员)
UML 部署图:物理视图(系统工程师)
UML 用例图:场景视图(用户)
单体系统-》分布式系统:95 年诞生,描述能力不足
绑定 UML:丑(抽象)
理解困难
2.大厂常见架构图介绍和画法
业务:业务分组管理,颜色标识业务状态
客户端、前端:整体架构设计、架构培训,颜色区分角色,连线标识关系
系统:整体架构设计、架构培训,颜色区分角色,连线标识关系
复杂:功能示意图、交互示意图
应用(后端由哪些应用组成):项目开发、测试;部署发布;子域架构设计
系统架构和应用架构在复杂度不高时可以通用
部署(物理视图、部署图):总体架构设计、运维规划和优化,用图标代替区块
3.系统序列图
静态架构:role relation
动态架构:rule
序列图
三.面向复杂度架构设计
面向模式
DDD
面向风险
面向复杂度:顺应了软件复杂度的发展趋势,通过软件架构设计技术降低软件系统的复杂度
四.架构设计 3 原则
3 原则:合适原则、简单原则、演化原则
需求-(判断)->复杂度-(拆解)->备选架构-(取舍)->架构方案(4R)-(实现)->需求
判断、拆解、取舍均需要遵循架构设计 3 原则(合适、简单、演化)
五.外包学生管理系统
高性能、高可用、可扩展、成本、安全
可扩展:业务需求比较复杂
数据高可用:数据不要全部丢失
合适:
团队技术水平、开发成本低、系统运维成本低
简单:
无系统拆分,部署维护简单
不需要微服务基础设施
演化原则:
一次性交付,无需考虑后期演化
学生数量固定,架构够用很多年
MongoDB 开发效率更高
六.学生管理系统云平台
功能需求
平台需求
高可用、高性能
隔离各个学校数据
高性能:定量估算用户量(逐步产生用户,不符合演化原则)
高可用:东南西北 4 大区(不符合演化原则、简单原则)
可扩展:功能需求多变(合适原则)
其他:高校期间隔离(合适原则)
架构 1:
功能映射为微服务
库隔离:独立为每个学校建库
数据安全:MySql 主备复制+每日备份
架构 2:
学校隔离设计:每个学校的功能微服务部署在独立的 Docker 集群中服务、数据都隔离
架构 3:双机房服务隔离数据不隔离
架构 4:双机房服务、数据双隔离
备选架构 1
2:不符合简单原则,复杂度高(Ngnix 请求识别、负载均衡,Docker 集群搭建)
3:不符合演化原则,成本高
4:不符合简单、演进原则
评论