1. 架构的目的
架构设计的目的主要是为了解决系统复杂度带来的问题。
1) 架构设计应从分析识别目前系统的复杂性问题为出发点
2) 架构设计并非要面面俱到,不需要每个架构都具备高性能,高可用,高扩展,而是要识别出复杂点然后针对性的解决问题
3) 只有理解每个架构方案背后需要解决的复杂点,才能对比自己的业务复杂点,参考相似的方案
2. 系统复杂度的来源
2.1 高性能
系统高性能带来的复杂度主要体现在两方面:
1)单机为了追求高性能带来的复杂度;
2)多台计算机(集群)为了高性能带来的复杂度;
2.2 高可用
本质上都是通过冗余达到高可用,但是带来了多机状态的复杂性。
常见的状态决策方式:独裁式;协商式;民主式;
2.3 可扩展性
为设计具有良好可扩展的系统,需要达成两个条件:正确预测变化,完美封装变化;
同时需要是恶疾变化层和稳定层之间的接口。
2.4 低成本
通过新技术方案达到低成本,很多时候会增加系统的复杂性
2.5 安全
需要支撑功能上的安全和架构上的安全
2.6 规模
规模带来复杂度的主要原因就是量变引起质变
3. 架构设计的原则
1) 合适原则:合适优于业界领先;
2) 简单原则:简单优于复杂;
3) 演化原则:演化优于一步到位;
4. 架构设计的流程
1)识别复杂度
2)设计备选方案;
3)评估和选择备选方案;
4)详细方案设计;