写点什么

架构实战营模块二学习总结

用户头像
吴霏
关注
发布于: 刚刚

系统复杂度的分类

质量复杂度:高性能、高可用、可扩展

业务复杂度:业务流程本身的复杂度

二者正交

DDD 不能减低质量复杂度

鸡蛋篮子理论

可扩展:拆分 法则

高性能:叠加

高可用:

1.可扩展

可扩展:系统适应变化的能力,可理解(知道改哪里)、可复用(尽量减少修改)

可伸缩:系统通过添加更多资源来提升性能的能力

可扩展分层:

架构可扩展(可理解)拆分形态、拆分粒度

应用可扩展(可理解)拆分形态、拆分粒度

代码可扩展(可复用)预测变化(规则引擎、微内核)、封装变化(OOAD,设计模式)

拆分复杂度模型:

拆分粒度(内部复杂度、外部复杂度)->拆分形态(服务、模块、插件、package)

内部复杂度:通过系统开发团队的人数来衡量(3 个人较为合理,20 人则太多)

外部复杂度:拆分后多个对象之间的关系复杂度,业务流程涉及的对象数量来衡量

(一个用户请求用 5 个子系统参与比较合理,20 个子系统参与,则外部复杂度过高)

拆分得过细,带来的外部复杂度要比内部复杂度更多

拆分粒度原则:

内外平衡、先粗后细

拆分粒度选择:见微服务

封装复杂度模型:

预测变化(时间跨度、变化方式)->封装变化(封装模型)

预测变化原则:

2 年原则、3 次法则(1 写 2 抄 3 封装)

封装技巧:

规则引擎、微内核、抽象层、设计模式

用户头像

吴霏

关注

还未添加个人签名 2019.08.29 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块二学习总结