为什么学习SpringCloud?那就要谈谈架构的演变

在开始学习SpringCloud前,我们可以先了解一下架构的发展历程。

1.传统架构
为什么学习SpringCloud?那就要谈谈架构的演变
这种传统架构就是将项目直接往tomcat服务器里面丢,虽然这样好处是维护起来比较简单方便,但是相应地,会伴随这多种问题出现:
1).单点故障,也就是说一台服务器挂掉了,全部都跑不了了。
2).并发数低,由于只有一台服务器,所以承受能力也是有限的。
3).代码耦合度高,这样大家都是在同一个项目中,你中有我,我中有你,最后不知道谁调用了谁,优化起来也比较麻烦。
4).不方便扩展,由于功能都是在同一个项目中,扩展起来也比较麻烦,比如后台管理需要的并发量低,而购物车、订单等的并发量较高,这样要扩展只能一起扩展,造成了资源的浪费。

这样来说的话,那随着项目越做越大,一台服务器肯定是不够的呀!就像人类在不断地为了适应环境而不断进步一样,于是出现了水平架构。

2.水平架构
将一个项目拆分为一个个工程,这个是web工程,那个是service工程:
为什么学习SpringCloud?那就要谈谈架构的演变
但本质上并没有解决多少问题,还是在一个jar包中。

3.分布式架构
分布式架构,也就是垂直拆分,实际上就是功能的拆分,从功能的角度来划分,一个功能放在一个服务器中:
为什么学习SpringCloud?那就要谈谈架构的演变
那我们来看看它有哪些优点:
1).方便水平扩展
2).方便单独优化
3).解耦合
4).提高并发
但是缺点也随之体现了出来:
**1).**增加了维护成本,每一个项目中假设都有user类,某一天需要修改user里的代码,所有的项目中的user就全都要一起修改。
**2).**重复开发,写了太多的相同的代码,提高了开发成本。

4.面向服务SOA架构
当需要什么服务时候就去调用什么服务:
为什么学习SpringCloud?那就要谈谈架构的演变
解决问题:代码冗余,重复开发;
却带来了新的问题:调用关系错综复杂,假如功能多的话就谁也分不清谁调用谁。
这时候需要引入注册中心:
为什么学习SpringCloud?那就要谈谈架构的演变
注册中心解决了什么问题呢?
每个服务都把自己注册到注册中心,注册中心就像一个容器一样,或者可以理解为中介,当你需要什么服务,自动中心就会帮你匹配什么服务,它会自己统计每个服务之间的调用关系,方便服务之间的调用和使用。

5.微服务架构
前面的SOA,英文翻译过来就是面向服务。微服务,似乎也是服务,都是对系统进行拆分。因此两者非常容易混淆,但其实却有一些差别:
微服务的特点:
为什么学习SpringCloud?那就要谈谈架构的演变
微服务结构图:
为什么学习SpringCloud?那就要谈谈架构的演变
至此,我们应该能够大概了解为什么要使用微服务架构了吧!