如何画好架构图

架构图

如何画好一张架构图
j架构,即是一组构件的结构、构件间的相互关系,以及对这些构件的设计和随时间演进的过程进行治理的一些原则和指导策略。

架构 = 要素 + 结构 + 连接。
结构——明确系统有哪些构件组成
连接——各个组成部分如何协作来实现业务请求
规范——约束规范和指导原则:保证系统有序,高效、稳定运行

架构图分类

从不同的视角,有业务架构、应用架构、技术架构、代码架构、数据架构等。

  • 业务架构图:业务规划、业务模块、业务流程等 (子领域)
  • 应用架构:微服务拆分的应用和层次划分 (限界上下文和分层架构)
  • 技术架构:涉及哪些组件以及它们之间的联系
  • 代码架构:应用内部包图、类图
  • 某个领域:实体图、时序图、状态图、用例图等等

架构图核心要素:分层、分模块、分功能

横向分层,纵向切分模块。

分层
目的是为了解耦。层级需要有逻辑上的关联,如下层为上层服务或者提供能力支撑。

分模块
是在同一逻辑层中,有哪些独立模块。一个模块代表一个完整的业务或者同类型的业务聚合。每个模块之间相互独立,且模块之间也会存在依赖或者关联。

分功能
在同一个模块内,将比较具有代表性,用户比较关注的功能抽象出来。

在画架构图前,有必要对整个业务体系进行系统性思考,将穷举所有涉及到的应用、功能、系统、模块、能力、平台罗列出来。然后进行提炼、归纳、分类、总结,然后分类构建代替框架思路,最后按照分层、分模块、分功能的维度将具体的内容填充。

业务/产品架构图

业务架构是从业务、产品视角,描述整个平台、或某个产品的实现。包括业务规划,业务模块、业务流程,对整个系统的业务进行拆分,对领域模型进行设计,把现实的业务转化成抽象对象。

业务架构原则

业务架构原则结合实际业务来制定,例如参考电商平台业务:

  1. 将业务平台化
  • 业务平台化,相互独立,例如交易平台、物流平台、支付平台、广告平台等。
  • 基础业务下沉、可复用:例如用户、商品、类目、促销、时效等。
  1. 将核心业务和非核心业务分离
    将电商系统的核心业务和非核心业务如主交易服务和通用交易服务分离,将核心业务精简(利于稳定),并将非核心业务多样化。
  2. 隔离不同类型的业务
  • 交易平台的作用是让买家和卖家签订交易合同,所以需要优先保证高可用,让用户能快速下单。
  • 履约业务对可用性没有太高要求,但要优先保证一致性。
  • 秒杀业务对高并发要求很高,应该和常规业务分离。
  1. 区分主流程和辅助流程
    要清楚哪些是电商系统的主流程,在运行时优先保证主流程的顺利完成;对辅助流程可以采用后台异步的方式,避免辅助流程的失败影响主流程的失败回流。

业务/产品模块划分

对产品功能模块的抽象划分,产品架构主要用于讲明白这个产品做什么的、需要有什么功能。

如何画产品架构图?

  1. 梳理业务流程,形成闭环:
    业务闭环:用户使用产品的闭环流程基于用户的某个需求或问题,梳理用户使用的业务流程,梳理参与此模块的用户、角色、场景,将核心流程完整的表述出来,形成闭环。

  2. 提取业务需求
    基于核心业务流程,根据用户的使用场景列出功能模块。关键是想清楚每个功能模块解决什么核心问题。

  3. 确定功能模块的逻辑关系
    基于以上梳理出来的功能模块,将类似的、相关联的功能以模块化的形式形成一张简单的矩阵图,将功能模块进行聚合分类。
    通常按照交互层(入口)、业务层(具体业务环节)、基础服务层(登录、设置等)、数据层(底层服务或数据)进行归纳整理。

示例:
在这里插入图片描述
在这里插入图片描述

业务流程图

业务/产品架构图,通常可以使用业务流程图作为补充。业务流程图主要用泳道图表达。

应用架构图

应用架构,描述应用程序的逻辑结构和组成,以及各个功能模块之间的关联和交互关系。

应用架构图可以分为应用功能/模块架构图和单个应用技术架构图。

应用架构原则

系统分解
横向分层:明确系统的层次结构设计。
纵向功能分解:系统各个层次包含的哪些应用服务。

应用功能架构图

站在整个系统的视角,描述整个系统逻辑架构。

简单来说应用功能架构需要的是体现出应用有哪些业务模块,有哪些具体的业务功能点。应用架构一般都是按照子域来画应用架构图。

示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时序图

应用架构通过时序图进行补充,描述应用程序不同模块之间的每一步调用过程。
在这里插入图片描述

技术架构图

技术架构:确定组成应用系统的实际运行组件(lvs,nginx,tomcat,php-fpm 等),这些运行组件之间的关系,以及部署到硬件的策略。

突出技术实现,重点描述系统的关键技术组件,例如分层、核心技术组件、上下游通信方式、数据流向等。

技术架构主要考虑系统的非功能性特征,对系统的高可用、高性能、扩展、安全、伸缩性、简洁等做系统级的把握。

参考的技术架构图:(图的通讯层最好是叫接入层),这是典型技术架构图(主要关注技术组件),每个层涉及到技术的点都罗列出来:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码架构图

代码分层,让不同层次的代码做不同的动作。层次清晰的代码,提高可读性,从代码结构就大概能了解到代码是如何分层,每层大概功能是什么。例如常用的 Controller、Service、Mapper/Dao 三层代码结构,其各层的代码逻辑范围。
在这里插入图片描述

数据架构图

数据架构是对存储数据(资源)的架构。描述核心数据模型设计、数据同步和备份的机制等。

其设计原则和应用架构设计大同小异,在设计时需要考虑系统的业务场景,需要根据不同的业务场景对数据进行异构设计、数据库读写分离、分布式数据存储策略等。如图是电商系统中数据架构的一个概要。

在这里插入图片描述

可以体现:
(1)数据库

  • 数据异构,例如区分订单库和商品库
  • 将访问量大的数据库做读写分离,例如订单库。
  • 将数据量大的数据库做分库分表。
  • 对重要的数据配置备库。

其他示例:
在这里插入图片描述

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值