最全架构设计实践方法论(二)

最全架构设计实践方法论:技术架构

  1. 微服务技术
    1.设计原则:
               分层原则:上层服务可调用下层服务,下层服务不可调用上层服务,只能通过MQ通知上层服务一些事件发生
               分组原则:紧密相关的服务构成一组,组内所有服务通过一个API网关暴露服务
              单一原则:外部服务只能通过gateway调用组内服务
              服务自治理原则
              轻量级通讯原则
              接口明确原则
              考虑团队结构
              服务粒度适中
               以业务模型接入
              演进式拆分
               避免环形依赖和双向依赖
              有利于服务弹性伸缩
               前后端分离
              服务无状态
               restful风格通信
              敏捷开发
              边界清晰
             领域驱动设计
            复用
            高内聚、低耦合
            易维护、安全
    2.微服务优点:
      易于开发和维护
      启动较快
      局部修改容易部署
      技术栈不受限
      按需伸缩
     DevOps
    3.微服务缺点:
    运维要求较高
    分布式的复杂性
    接口调整成本高
    重复劳动

    4.springcloud 深入(后续单独深入说明。。)
    5.springcloudalibaba深入(后续单独深入说明。。)
    6.SOA最佳实践(后续深入单独说明。。。)
  2. 软件开发指导思想
    局部性能优化
    缓存
    抽象
    分层
    异步调用
    分而治之
  3. 软件设计设计模式原则:solid
    单一原则(SRP):一个类只有一个发生变化的原因。eg:门面模式->zuul
    开闭原则(OCP):一个实体:类、模块、函数,对修改关闭,对扩展开放
    里氏替换原则(LSP):子类可扩展父类,但不能修改父类。eg:装饰模式->jdbctemplate
    迪米特法则(LD):降低类之间的耦合。强调模块或者类或系统之间的解耦.eg:门面模式
    接口隔离原则(ISP):客户端不应该依赖它不需要的接口;类间的依赖关系应建立在最小的接口上;接口分离
    依赖倒置原则(DIP):依赖接口编程不依赖实现实现;抽象不依赖细节,细节依赖抽象
    合成复用原则:代码复用
  4. 软件架构风格(后续单独说明。。。)
  5. 模块划分的指导思想与方法(EDD方法)
    指导思想

         系统思维:关注边界、联系、通讯
         金字塔原理:纵向结构(自定向下,自底向上);横向结构:演绎归纳;相互独立完全穷尽(MECE原则);
         自定向下:水平切分思路(分层);垂直切分思路(功能模块)
         自底向上:先识别类,后归纳出模块,采用用例驱动设计
         拍脑袋靠经验和灵感

    模块划分-EDD方法(模块划分4步骤法
         研究需求
        粗粒度分层
        细粒度划分模块
        用例驱动模块划分的结构评审与优化

       场景和用例是驱动设计评审的核心思想

    模块划分常用工具:
    功能树
    分层架构
    用例驱动
    业务流程驱动
    模块化(组件化)
    清单目录

    细粒度模块划分技巧:
    分层细化
    分区
    通用模块分离
    通用机制框架化
  6. 业务建模:领域驱动DDD
    1.ddd总结


    2.从事件风暴到代码落地过程
    最全架构设计实践方法论(二)_第1张图片
    3.ddd实战:
    最全架构设计实践方法论(二)_第2张图片
    最全架构设计实践方法论(二)_第3张图片
    最全架构设计实践方法论(二)_第4张图片
  7. 常用算法解读(后续单独深入)
  8. 常见设计模式解读(后续单独深入)
  9. 经典开源中间件解读(后续单独深入)
  10. 数据中台与数据仓库(后续单独深入)
  11. 容器化(后续单独深入。。)
  12. Devops(后续单独深入)
  13. 软件架构师具备的思维与素养

    思维:抽象、分层、分治、演化、归纳、结构化、系统、全局统筹思维模型;
    专业素养
:良好的沟通协作
、技术领导力、
影响力、
项目管理、
多领域知识
问题穿透能力
、业务理解、技术广度、技术深度、丰富经验、动手能力、算法、美学、数学素养、文档阅读、总结归纳能力

你可能感兴趣的:(架构设计,架构设计,软件架构)