最全架构设计实践方法论:技术架构
- 微服务技术
1.设计原则:
分层原则:上层服务可调用下层服务,下层服务不可调用上层服务,只能通过MQ通知上层服务一些事件发生
分组原则:紧密相关的服务构成一组,组内所有服务通过一个API网关暴露服务
单一原则:外部服务只能通过gateway调用组内服务
服务自治理原则
轻量级通讯原则
接口明确原则
考虑团队结构
服务粒度适中
以业务模型接入
演进式拆分
避免环形依赖和双向依赖
有利于服务弹性伸缩
前后端分离
服务无状态
restful风格通信
敏捷开发
边界清晰
领域驱动设计
复用
高内聚、低耦合
易维护、安全
2.微服务优点:
易于开发和维护
启动较快
局部修改容易部署
技术栈不受限
按需伸缩
DevOps
3.微服务缺点:
运维要求较高
分布式的复杂性
接口调整成本高
重复劳动
4.springcloud 深入(后续单独深入说明。。)
5.springcloudalibaba深入(后续单独深入说明。。)
6.SOA最佳实践(后续深入单独说明。。。) - 软件开发指导思想
局部性能优化
缓存
抽象
分层
异步调用
分而治之 - 软件设计设计模式原则:solid
单一原则(SRP):一个类只有一个发生变化的原因。eg:门面模式->zuul
开闭原则(OCP):一个实体:类、模块、函数,对修改关闭,对扩展开放
里氏替换原则(LSP):子类可扩展父类,但不能修改父类。eg:装饰模式->jdbctemplate
迪米特法则(LD):降低类之间的耦合。强调模块或者类或系统之间的解耦.eg:门面模式
接口隔离原则(ISP):客户端不应该依赖它不需要的接口;类间的依赖关系应建立在最小的接口上;接口分离
依赖倒置原则(DIP):依赖接口编程不依赖实现实现;抽象不依赖细节,细节依赖抽象
合成复用原则:代码复用 - 软件架构风格(后续单独说明。。。)
- 模块划分的指导思想与方法(EDD方法)
指导思想:
系统思维:关注边界、联系、通讯
金字塔原理:纵向结构(自定向下,自底向上);横向结构:演绎归纳;相互独立完全穷尽(MECE原则);
自定向下:水平切分思路(分层);垂直切分思路(功能模块)
自底向上:先识别类,后归纳出模块,采用用例驱动设计
拍脑袋靠经验和灵感
模块划分-EDD方法(模块划分4步骤法):
研究需求
粗粒度分层
细粒度划分模块
用例驱动模块划分的结构评审与优化
场景和用例是驱动设计评审的核心思想
模块划分常用工具:
功能树
分层架构
用例驱动
业务流程驱动
模块化(组件化)
清单目录
细粒度模块划分技巧:
分层细化
分区
通用模块分离
通用机制框架化 - 业务建模:领域驱动DDD
1.ddd总结
2.从事件风暴到代码落地过程
3.ddd实战: - 常用算法解读(后续单独深入)
- 常见设计模式解读(后续单独深入)
- 经典开源中间件解读(后续单独深入)
- 数据中台与数据仓库(后续单独深入)
- 容器化(后续单独深入。。)
- Devops(后续单独深入)
- 软件架构师具备的思维与素养
思维:抽象、分层、分治、演化、归纳、结构化、系统、全局统筹思维模型;
专业素养 :良好的沟通协作 、技术领导力、 影响力、 项目管理、 多领域知识 问题穿透能力 、业务理解、技术广度、技术深度、丰富经验、动手能力、算法、美学、数学素养、文档阅读、总结归纳能力