架构设计的核心原则与基础理论
目录
架构和框架的区别是什么?
1 架构设计的目的
1.1 什么是复杂度
1.1.1 高性能
单机复杂度
集群复杂度
1.1.2 高可用
计算高可用
存储高可用
1.1.3 可扩展性
预测变化
应对变化
1.1.4 低成本
1.1.5 安全
1.1.6 规模
1.2 架构设计原则
合适原则
简单原则
演化原则
1.3 架构设计流程
1.3.1 识别复杂度
1.3.2 设计备选方案
1.3.3 评估和选择备选方案
360度环评
1.3.4 详细方案设计
架构和框架的区别是什么?
框架通常是为了实现某个业界标准或完成特定基本任务的软件组件规范。
架构是指软件系统的顶层结构
1 架构设计的目的
当软件到达一定规模的时候,就会出现一些相关的问题:
- 系统规模庞大,内部耦合严重,开发效率地下
- 系统耦合严重,牵一发动全身,后续修改和扩展困难
- 系统逻辑复杂,容易出现问题,出问题后很难排查和修复
架构设计的主要目的是为了解决复杂度带来的问题
1.1 什么是复杂度
1.1.1 高性能
-
单机复杂度
操作系统相关的性能就是进程和线程。如果我们要完成一个高性能的软件系统,需要考虑多进程、多线程、进程间通信等。例如Redis采用的是单进程的,nginx采用的多进程的。
-
集群复杂度
每个单机的性能是有上限的,在一定的业务场景下,必须采用集群的方式达到高性能。我们常见的几种方式:
- 任务分配 例如 读写分离、负载均衡(硬软件)
- 任务分解 例如微服务拆分
1.1.2 高可用
高可用指系统无中断的执行功能的能力
系统的高可用方案方案比较多,但是本质上都是通过“冗余”来实现高可用的。
-
计算高可用
这里的“”计算“指的业务逻辑处理,无论在哪台机器上进行计算都是一样的。
-
存储高可用
存储和计算相比,有一个本质的区别:数据迁移是需要经过线路进行传输的,所以会存在数据不一致的情况。
所以存储的高可用的难点不在于如何备份数据,而在于如何减少或者规避数据不一致对业务造成的影响。