一、什么是软件架构?

  1. 软件架构是软件总体设计和技术规划,早期的项目由于,规模小,功能简单,并发访问小,并没有所谓的"架构",一个项目所涉及的框架也非常少,主要功能经历放在功能的实现上,效率问题考虑较少。<br /> 随着会联网发展,用户群体增加,访问量也变得非常大,原本可以工作的系统,可能承受不了,同时软件系统的功能模块也变得非常的繁多,这时在开发一个系统时,就需要从各个方面考虑,从开发层面,部署层面,运营层面,都需要精心设计。<br /> 架构师所需要考虑的问题是很多的,开发,部署,性能,系统兼容等....问题,一个好的架构设计,是从很多失败或者问题中产生的,但是不管什么技术和架构最终都是服务于你的业务的,所以不存在一个最好的架构,只有最适合的架构。<br /> 简单的理解架构,技术软件的整体设计技术,把各种技术整合在一起,来解决各种问题 ,所以一个优秀的架构师,必定是项目经验丰富,技术面比较广,某些领域要深。

二、架构演进历史

src=http___5b0988e595225.cdn.sohucs.com_images_20180913_82d017dc037c4e0b9f28dbd087330575.jpeg&refer=http___5b0988e595225.cdn.sohucs.jpg

2.1 单体应用架构

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

all.png
单一应用架构如果存在性能瓶颈时,可以使用水平扩展的方式,提升吞吐量,同时在Nginx中需要解决回话问题。

未命名画布-4.png

2.3 垂直应用架构

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。
未命名画布-1.png

2.4 分布式架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
未命名画布-1.png

2.5 流动计算架构

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。