简单的软件架构演变

2019-12-09  本文已影响0人  喊我小王吧

软件架构演变

单体架构

也可以叫做传统架构

网站流量很小时,只需要一个应用,将所有功能部署在一起,减少部署节点和成本。
此时 用于简化增删改查工作量的数据库访问框架orm 是影响开发的关键。

所谓的单体项目,就是将所有程序打包为一个一个应用程序,如 war 包、jar 包直接运行,里面包含了我们常规的表现层、控制层、数据库访问层都在同一个项目内。 当然在项目体积不是很大的时候是完全够用的,但是项目体积太大,单体的缺陷就很明显了。

在这里插入图片描述

传统单体架构存在的问题:

随着功能的增多,迭代次数增加,一个项目里面包含的代码模块就会越来越多,而且功能之间相互调用会很复杂。说的直白就是很乱。这样对于代码的修改 维护就会困难,很有可能只是一个小的改动就导致整个项目直接挂掉,。

随着项目模块和新需求的增加,就会出现很多的沉郁代码,功能模块,使得维护又变的很困难,代码质量降低,部熟悉代码的人异常难维护

单体项目使用同一种语言,框架来进行开发,整合新的技术,语言,框架很困难。

单个项目挂了整个服务就挂掉了,除去日常断电,还会出现tomcat挂掉,数据库挂掉,稍微并发量大点导致机器宕机,整个系统也就无法访问。

单体项目解决容错可以办法之一就是后台使用集群,增加多个节点,但是无形中又增加维护困难。

后端集群 反向代理

单体架构

在这里插入图片描述

集群架构

在这里插入图片描述
图片来自网络

针对这种项目,我们可以使用Nginx进行后端集群操作,增加机器节点 从而横向扩展
使得并发能力增强。

1.2 垂直拆分

当访问量增大时,单一应用无法满足需求,此时为了更高的并发和需求,我们需要将业务功能进行垂直拆分,按照功能节点进行拆分,拆分成每个独立的系统服务。
订单模块,订单管理模块,用户管理模块,后台管理模块,购物车模块等等

在这里插入图片描述

1.3 分布式微服务项目

垂直应用越来越多,应用之间交互不可避免,可以将核心的业务提取出来,作为一个个独立的服务,服务之间互相调用,还可以进行横向扩展并发量高的服务。

将项目按照表现层,服务层进行纵向拆分,然后再按照模块横向拆分,如登录服务,订单服务,购物车服务等等。

分布式服务优势:

单一职责:每个服务都对应唯一的业务需求能力,单一职责。

图片来自网络
上一篇 下一篇

猜你喜欢

热点阅读