# 架构设计基本原则
# 1 基本设计原则
单一职责原则:软件系统中每个元素只完成自己职责范围内的事,其它的事交给别人去做,我只是去调用
- 将软件变化同一个原因的代码放在一起,将不同原因的代码分开放
开放封闭原则:对扩展开发,对修改封闭
- 扩展:已有的对象进行封装上的变化,新的需求变化使用扩展方式完成而不是进行侵入式修改
- 修改:更改业务逻辑
组合与继承复用原则
- 继承破坏了封闭性
- 使用:迭代器、Builder(PreparedStatement)、装饰器Stream输入输出、策略模式Comparable&Comparator
里氏替换原则
迪米特法则
接口隔离原则
依赖倒置原则
# 2 架构设计的要素
架构设计要素,贯穿整个架构设计过程
- 架构设计的输入输出
- 目标
- 方法
# 3 架构设计如何规划
架构设计目标:做对正确的事
架构设计方法:架构立方体
- 功能->运行
- 应用->运行
- 逻辑->物理逻辑
架构设计输出:需要输出的工件,设计图,伪代码,word文档
- 可落地的架构和系统
需要很复杂冲击的继承关系承的击复要成绩非常
# 4 数据扩展
# 4.1 X轴水平复制
- 传统SQL,读写分享,1写多读
- NoSQL,多副本replica
- 缓存读取,横向扩展
- CAP最终一致性
- CDC便捷复制
- 数据高可用
- 存储空间浪费
# 4.2 Y轴库表分割
- 配合应用Y轴分割
- 表库享有独立的数据库集群和节点
- 微服务、康威定律
- 数据故障隔离
- 资源迭代分配
- 强一致性
- 业务耦合性
# 4.3 Z轴哈希取模
- 支持多种key:user sku spu
- 传统sql,分库分表(mycat等)
- 加速查询搜索
- 扩展无上限
- 业务角耦
- 强一致性
# 4.4 搜索引擎扩展-套娃组合
- Z:hash取模
- X:创建replica
- Y:用户搜索、产品搜索、库存搜索
# 5 组织扩展性
# 5.1 康威定律
沟通时间 n=2成本1分钟,n=3成本3分钟 n=12成本N(N-1)/12 66分钟 30:7个小时
# 5.2 披萨组织:
- 目标一致:盼着吃披萨
- 人数数量较少:6~12
- 配合应用和数据的Y轴扩展-0