架构

By kcersing , 11 十月, 2018

(数据 + 逻辑 = 业务)

 

架构中的银弹

 

软件开发最本质的挑战有两个:复杂和变更,而软件的价值是保证业务的响应力,

而与之相对的是开发资源的有限,而各种的软件开发方法论,也都是在研究有限的资源下,如何对应这两个挑战,寻找平衡点,实现业务目标。

 

架构的目的

 

架构设计的主要目的是为了解决软件系统复杂度带来的问题。

 

架构分析

性能,可扩展性,高可用,安全性,成本。

 

高性能:

单台计算机内部为了高性能带来的复杂度;

另一方面是多台计算机集群为了高性能带来的复杂度

任务分配

任务分解

 

高可用:

系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。

计算高可用

存储高可用

存储高可用的难点不在于如何备份数据,而在于如何减少或者规避数据不一致对业务造成的影响。

分布式领域里面有一个著名的 CAP 定理,从理论上论证了存储高可用的复杂度。也就是说,存储高可用不可能同时满足“一致性、可用性、分区容错性”,最多满足其中两个,这就要求我们在做架构设计时结合业务进行取舍。

 

高可用状态决策

独裁式

2. 协商式

3. 民主式

 

可扩展性:唯一不变的是变化

预测变化的复杂性在于:

不能每个设计点都考虑可扩展性。

不能完全不考虑可扩展性。

所有的预测都存在出错的可能性。

应对变化

第一种应对变化的常见方案是将“变化”封装在一个“变化层”,将不变的部分封装在一个独立的“稳定层”。

第二种常见的应对变化的方案是提炼出一个“抽象层”和一个“实现层”。

 

低成本

 

安全

 

规模

架构设计三原则

合适原则

合适原则宣言:“合适优于业界领先”。

简单原则

简单原则宣言:“简单优于复杂”。

演化原则

演化原则宣言:“演化优于一步到位”。

 

合适原则第一考虑,优先满足业务需求;

简单原则第二考虑,挑选简单方案快速落地验证;

演进原则第三考虑,适当预测业务发展,感觉预测不准就不预测,等真的出现问题的时候演进即可

标签