1 架构是什么
1.1 系统与子系统
系统:一群有关联的个体,根据某种规则运作,完成单个元件不能单独完成的工作能力。
1.2 模块与组件
模块:从逻辑的角度来拆分得到的单元。划分模块的目的是职责分离。
组件:从物理的角度来拆分得到的单元。划分的目的是单元复用。
1.3 框架与架构
框架:为了实现组件规范,提供规范的基础功能的软件产品。
架构:软件系统的顶层结构
2 架构设计的目的
架构设计的目的:是为了解决系统复杂度带来的问题。
3 复杂度的来源
3.1 高性能
单机复杂度:操作系统和性能最相关的就是进程和线程
集群的复杂度:任务分配、任务分解
1)任务分配算法:轮询、权重、服务器负载、ip hash等。
2)任务分解:一、简单的系统更容易做到高性能;二、可以针对单个任务进行扩展
3.2 高可用
本质上都是通过“冗余”来实现高可用。
(1)计算高可用
(2)存储高可用
(3)高可用状态决策:独裁式、协商式、民主式
3.3 可扩展性
基本条件:一、正确预测变化;二、完美封装变化
3.4 低成本
3.5 安全
(1)功能安全
(2)架构安全
3.6 规模
(1)功能越多,系统复杂度上升
(2)数据越多,系统复杂度发生质变