写点什么

模块一学习笔记、总结

用户头像
吴霏
关注
发布于: 刚刚

一.架构相关基础概念

系统/子系统:关联、规则、能力、分层

模块/组件

系统从逻辑角度拆分为模块,实现职责分离,便于人员分工

系统从物理角度拆分为组件,实现单元复用


框架/架构

软件框架:组件规范/软件产品

软件架构:结构、准则、描述 (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:不符合简单、演进原则


用户头像

吴霏

关注

还未添加个人签名 2019.08.29 加入

还未添加个人简介

评论

发布
暂无评论
模块一学习笔记、总结