这是我参与「第五届青训营 」伴学笔记创作活动的第6天
复杂度的6个来源:
- 高性能
1.1.任务分配:不同的任务分配到不同的机器上执行。
1.2任务分解:把复杂的业务系统拆分成小而简单的组成部分。但拆分过细会已指数级别增加系统间的调用 ,反而会让系统性能下降。
2.高可用
2.1.本质上都是用冗余来实现高可用。
2.2计算高可用
2.3存储高可用
2.4高可用状态决策:判断系统当前的状态是否正常,选举主节点。
3.可扩展性
3.1.利设计模式,代码封装易变的,系统分层,抽象。
3.2对未来的需求有预测
4.低成本
5.安全
6规模
架构设计三原则:
1.合适原则:合适优于业界领先。
1.1没那么多人,却想干那么多活,是失败原因。
1.2没有过我的积累,想一步登天,是失败原因。
1.3.没有那么卓越的业务场景,却幻想录光一闪为天才。
2.简单原则:简单优于复杂
2.1结构复杂,组成系统的组件过多,组件多就越有可能出现组件故障。定位问题比较难
2.2逻辑的复杂性,就是业务本身复杂。
3.演化原则:演化优于一步到位
3.1,windows也不是一开始设计就是win10系统。要根据情况不断迭代演进。
软件设计流程:
1.识别复杂度:正确分析出了复杂性,后续的架构设计方案才不会偏离方向。架构的复杂度主要来源于“高性能”“高可用”“可扩展”“业务复杂性”等几个方面,要将主要的复杂度问题列出来,然后根据业务、技术、团队等综合情况进行排序,优先解决当前面临的最主要的复杂问题。
2.设计备选方案
2.1备选方案的数量3~5个。
2.2备选方案的差异要比较明显
2.3备选方案的技术 不要只局限已经熟悉是技术。
2.4备选方案不易过细,太浪费时间和精力。