教学目标


  1. 理解架构设计复杂度模型
  2. 理解可扩展架构的复杂度本质
  3. 掌握可扩展架构的“拆分”和“封装”手段

鸡蛋篮子第一法则:如果一个篮子数不清,拆分到多个篮子再数!

目录


  1. 架构设计复杂度模型
  2. 可扩展复杂度模型
  3. “拆分”复杂度分析和设计
  4. “封装”复杂度分析和设计

1 架构设计复杂度模型

架构设计复杂度模型

【架构实战营】模块二 1.如何设计可扩展架构?_架构设计

架构复杂度应对之道

【架构实战营】模块二 1.如何设计可扩展架构?_复杂度_02

架构设计环

【架构实战营】模块二 1.如何设计可扩展架构?_封装_03

2 可扩展复杂度模型

可扩展定义

【架构实战营】模块二 1.如何设计可扩展架构?_复杂度_04

可扩展复杂度模型

【架构实战营】模块二 1.如何设计可扩展架构?_架构设计_05

3 可扩展架构设计- 拆分

鸡蛋篮子理论第一法则 - 拆分法则

【架构实战营】模块二 1.如何设计可扩展架构?_架构设计_06

拆分复杂度模型

【架构实战营】模块二 1.如何设计可扩展架构?_架构设计_07

拆分粒度 - 两个复杂度

【架构实战营】模块二 1.如何设计可扩展架构?_封装_08

拆分粒度 - 平衡的艺术

【架构实战营】模块二 1.如何设计可扩展架构?_架构设计_09

拆分粒度不合理的案例 - UC用户中心

【架构实战营】模块二 1.如何设计可扩展架构?_架构_10

4 可扩展架构设计 - 封装

封装复杂度模型

【架构实战营】模块二 1.如何设计可扩展架构?_复杂度_11

预测的艺术

【架构实战营】模块二 1.如何设计可扩展架构?_复杂度_12

封装的技巧

【架构实战营】模块二 1.如何设计可扩展架构?_复杂度_13

封装案例 - 美团MazeGO规则引擎

【架构实战营】模块二 1.如何设计可扩展架构?_架构_14

封装案例 - OSGi微内核

【架构实战营】模块二 1.如何设计可扩展架构?_架构设计_15

封装案例 - Linux VFS抽象层

【架构实战营】模块二 1.如何设计可扩展架构?_复杂度_16

封装案例 - 设计模式

【架构实战营】模块二 1.如何设计可扩展架构?_复杂度_17

本节思维导图

【架构实战营】模块二 1.如何设计可扩展架构?_封装_18

随堂测验

【判断题】


  1. 如果需求只是写个“hello world”,肯定不需要什么架构设计
  2. 可扩展既可以是指支持修改的能力,也可以是添加资源提升性能的能力
  3. 架构设计的时候,单个子系统越简单越好
  4. 拆分的时候可以先粗粒度拆,后面再按照演化原则继续拆
  5. 预测的时候尽量目光放长远一些,这样可以设计更有前瞻性的系统
    【思考题】
    微信和支付宝复杂度对比,哪个更复杂,为什么?