如何学习系统架构

1.五视图法

https://www.cnblogs.com/zhangs1986/p/8707721.html

  • 逻辑架构:逻辑架构= 模块划分+接口定义(统一接口规范)+领域模型
  • 物理架构:物理架构=硬件分布+软件部署+方案优化(可伸缩性、高性能、易维护性,监控)
  • 数据架构:存储方式+数据分布
  • 开发架构:技术选型+文件划分+编译关系(模块依赖关系)
  • 运行架构:物理架构+数据流的控制(系统运行中的数据流向关系)

1.1 逻辑架构

https://cloud.tencent.com/developer/news/578444

逻辑架构着重考虑功能需求,系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分。

常用表达图形,静态图有包图、类图、对象图;动态图有序列图、协作图、状态图、活动图。

逻辑架构的核心设计任务是模块划分、接口定义、领域模型细化

常见问题:

  • 有哪些子系统或模块?系统之间是什么样的关系?
  • 对外上下游接口有哪些?对接人是谁?
  • 关键业务流程怎么实现的?用类图、序列图等方式表达出来。

1.2 物理架构

物理架构的设计着重考虑安装和部署需求,关注点是目标程序及其依赖的运行库和系统软件最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性、持续可用性、性能和安全性等要求。

常见问题:

  • 系统如何发布部署?有哪些部署环境?
  • 系统有多少台机器?
  • 系统部署怎么部署的?关注接入层,部署方式,如集群部署、分布式部署等
  • 有没有容器化?
  • 有没有多机房部署?

1.3 数据架构

数据架构的设计着重考虑数据需求,关注点是持久化数据的存储方案,不仅包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略(?什么意思)。

常见问题:

  • 数据存储在哪?用了什么数据库,如 oracle、mysql;
  • 梳理 E-R 图;
  • 数据量有多少?是否有分库分表?
  • 用了哪些 nosql 库?
  • 有哪些数据同步任务?
  • 大数据框架的使用情况如何?

1.4 开发架构

 开发架构关主要关注系统源代码、第三方 SDK、使用的框架、中间件、工具包。

常见问题:

  • 代码在哪?
  • 包怎么划分的?怎么分层?如 mvc、controller-service-dao;
  • 用了什么框架,如 ssh、dubbo;
  • 用了哪些工具包?如 apache commons、guava;
  • 用了哪些中间件?如 metaq、tair、schedulerX、Diamond;
  • 依赖哪些平台?如权限平台、流程引擎等。

1.5 运行架构

运行架构的着重考虑运行期质量属性,关注点是系统的并发、同步、通信等问题,这势必涉及到进程、线程、对象等运行时概念,以及相关的并发、同步、通信等。

常见问题:

  • 系统能支撑多少 qps?峰值 qps 多少?
  • 与上下游系统怎么交互的?rpc?http?同步还是异步?

https://z.itpub.net/article/detail/7E72A3FB29078D3AF8295C659430AA8B

 2.概念

https://blog.csdn.net/mist99/article/details/78529297

架构的定义可以概况为:为了达到某个目标(愿景),将产品分解为一系列组件、模块和交互(结构)。

重要决策即“架构”,其他的都是“设计”。

 

posted @ 2022-08-08 10:58  lypbendlf  阅读(328)  评论(0编辑  收藏  举报