天天看点

架构的演变架构的演变

文章目录

  • 架构的演变
    • 一、开天辟地,单体架构
    • 二、垂直架构(分布式架构)
    • 三、SOA 架构
    • 四、微服务架构

架构的演变

随着互联网的兴起,后端承受的流量负担越来越大,早期的架构已经不能适应新兴的需求,于是,一代代互联网人苦心钻研,探索出一个个新的解决方案

一、开天辟地,单体架构

架构的演变架构的演变

我们学生时代做的大部分项目,都是单体架构,全部功能都集中在一个模块里

这种架构的好处在于,开发迅速,成本低,适合小型项目

但是一旦遇到大型项目,就歇菜了,单体架构难以维护和扩展

系统性能扩展,只能通过扩展集群节点,成本太高

下面,就是个经典的单体项目结构:

架构的演变架构的演变

二、垂直架构(分布式架构)

其实,就是把原来的大单体,拆分成一个个小单体,然后分开部署。

架构的演变架构的演变

这玩意儿尴尬就尴尬在学生时代碰不着,企业里现在也淘汰了,所以没有具体的例子给各位看

优点:

1、通过垂直拆分,每个子系统变成小型系统,功能简单,前期开发成本低,周期短。

2、每个子系统可按需伸缩。

3、每个子系统可采用不同的技术。

缺点:

1、子系统之间存在数据冗余、功能冗余,耦合性高。

2、按需伸缩粒度不够,对同一个子系统中的不同的业务无法实现,比如订单管理和用户管理。

三、SOA 架构

SOA是一种面向服务的架构,基于分布式架构,它将不同业务功能按服务进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。

架构的演变架构的演变

SOA ,其实就像一个只有 网关,没有配置 Feign 的 SpringCloud 项目。一个服务,如果要调用另一个服务的接口,是没有办法的,只能再在自己的服务模块中,实现该功能

我从网上扒个图解释一下:

架构的演变架构的演变

用标准一点的说法,就是划分的粒度太粗,造成了代码冗余

四、微服务架构

为了解决上述 SOA 的问题,微服务架构应运而生

架构的演变架构的演变

客户端访问数据接口,可以走网关,服务之间如果有相互调用的话,在SpringCloud 中可以使用 Feign

这样粒度更细的划分,能够做到尽力减少冗余代码的产生

项目结构如下:

架构的演变架构的演变