## **系统架构发展的历程**
单体应用(竖井式架构)→分布式/集群架构→SOA面向服务(服务化架构)→微服务架构。
## **单体应用**
优点:对于业务简单的应用而言,可快速构建并使用,硬件资源需求--应用、存储及数据库可同时使用一台服务器。
缺点:系统维护困难、出现故障时会导致整个系统不可用
![](https://img.kancloud.cn/1d/33/1d33a6b0fc0ca20946134897bbde5924_507x198.png)
**第一阶段:**随着业务的增长,**单体应用**越来越臃肿,因此需要对系统做一个垂直化的拆分,简单而言,就是将一个大的单体拆分成一些不同的模块或子系统,子系统之间没有直接关联,这就叫做**竖井式架构**。
**目的**:解决系统的臃肿性。
## **分布式/集群架构**
**第二阶段:当单体应用的访问并发量越来越多,单体应用的负载能力便会出现瓶颈,比如存储能力的下降,数据库各种操作性能的下降,网络堵塞等,于是分布式/集群架构便诞生。**
**分布式集群架构**:简单来说就是将单体应用进行垂直拆分以及水平拆分。
**目的**:性能优化及提升。
垂直拆分:根据业务等进行拆分,一个电商系统可以分为:用户系统、订单系统、商品系统等多个子系统的组合
水平拆分:将一个服务进行扩容,通过负载进行调度。将一个用户系统扩容成3个,分别部署在不同的机器上,通过负载均衡策略将请求分发到不同的用户系统服务器上。
![](https://img.kancloud.cn/2e/58/2e58640e205b8e9bdc4d54ca80e9860f_405x418.png)
学习推荐地址:https://blog.csdn.net/fuzhongmin05/article/details/80958073
## **SOA面向服务(服务化架构)**
**第三阶段:在分布式/集群架构稳定发展后,大神们发现对于上述例子中的用户系统,订单系统,商品系统各个系统之间并不存在信息共享,数据呈孤立状态,但由于每个系统均可能会使用到相同的功能如权限认证,用户查询等,这时候就会造成码农们对代码重复编写的情况,于是把所有系统共性的部分提起出来做为一个服务供所有系统使用,每个系统不再各自实现,也就形成了分布式/集群架构。**
**目的**:解决代码复用、信息孤岛、数据互通等问题。
主要包括的架构有:RPC架构、ESB中心化架构和微服务架构(最优产物)。
![](https://img.kancloud.cn/be/bb/bebbd26f94a31bb6cd26b0f51710051a_585x523.png)
学习推荐地址:https://www.cnblogs.com/yixinjishu/p/12096496.html
## **微服务架构**
微服务也是分布式架构也是SOA面向服务架构,它是分布式架构发展下的最优产物。
分布式主要关注的是服务分开部署,也就是如何将单一服务部署,变为多服务部署(垂直+水平拆分)。
微服务主要关注的是服务拆分力度,即:一个服务要拆分到多大的维度合适。
![](https://img.kancloud.cn/cd/bb/cdbbd621388f49c9ac1894a1c6b68bb5_531x689.png)