这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
什么是架构?
架构,又称软件架构
用简单的话来讲,架构 是实现软件,在 方法选择 上的 指导
软件系统,需要对外提供服务,因此就产生了 部署的问题,选择什么方式进行部署
通常,软件架构可以从不同的角度来考虑:
- 结构层面:软件系统的整体结构、组成部分之间的关系,包括模块化、分层、组件化等。
- 行为层面:软件系统的行为、功能和服务,包括业务逻辑、处理流程、交互方式等。
- 演化层面:软件系统的演化过程,包括升级、扩展、维护等。
最初、也是最简单的就是 单机架构
单机,将所有功能实现在一个进程中,并部署在一台机器
显而易见的是,单机架构并不能处理并发问题,有着性能的上限,单机的唯一优势在于简单,方便项目的研究开发。
为了解决并发问题,引入分布式部署,也就是用多个机器进行负载均衡,这就是 单体架构
在此基础上,对不同机器的功能加以区分,就是 垂直应用架构
通过业务区分机器就是 垂直切分,这种方式 将会引入 数据的一致性问题 之前也了解过,在此先按下不表。
但是,垂直切分后的架构,也要面临 业务场景复杂 和 服务职责增多 的问题,软件架构 不但需要处理业务逻辑,同样要面对 缓存和持久化问题。
因此 就引入了 水平拆分
按着这个思路,会将进程按照功能抽象成服务,并制定通信标准,就是 SOA架构,SOA架构的主要目标是将软件系统划分为独立的服务单元,通过定义和共享接口以实现松耦合的互操作性。