# 架构设计基本原则

# 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
上次更新: : 7 months ago