为什么选择SpringCloud

SpringCloud的诞生:
  1. SpringCloud是集成了众多开源的框架,利用SpringBoot的开发便利性实现服务治理,服务注册与发现,负载均衡,数据监控,REST API发布方式等,基本囊括了分布式框架所需要的所有功能。是一套易开放.易部署.易维护的分布式开发工具包。
(一):首先我们来了解下从单体架构到微服务的发展历程
架构的演变过程:

单体架构→垂直架构→SOA面向服务架构→微服务架构

m

  1. 单体架构(巨石型应用)

![单体架构电子商城架构图](https://images-1257029624.cos.ap-chongqing.myqcloud.com/单体架构.jpg “电子商城简体架构图”")

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

特点:
  1. 所有的功能集成在一个项目工程中。
  2. 所有的功能打成war包部署到服务器上运行
  3. 通过部署应用集群和数据库集群来提高系统的性能。
优点:
  1. 项目架构太简单,前期开发成本低,周期短,小型企业的首选。
  2. IDE就是专门为开发单个应用设计的,容易测试—在本地就可以启动完整的系统,容易部署。
缺点:
  1. 全部功能集成在一个工程中,对于大型项目不易于开发,扩展及其维护。

  2. 系统性能扩展只能通过扩展集群结点,成本高,有瓶颈。

  3. 垂直架构

![垂直架构电子商城架构图](https://images-1257029624.cos.ap-chongqing.myqcloud.com/垂直架构图 “电子商城垂直架构简体图”")

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

特点:
  1. 以单体架构规模的项目为单位进行垂直划分项目即将一个大项目才分成一个一个单体结构项目
  2. 项目与项目之间存在数据冗余,耦合性较大。就比如上面一幅图两边都存在用户信息
  3. 项目之间接口多为数据同步功能。
优点:

1.涵盖了传统架构的优点,另外项目不会无限扩大,技术栈可扩展(不同的系统可用不同的语言编写)

缺点:
  1. 功能集中在一个项目中,不利于开发,扩展,维护。

  2. 系统扩张只能通过集群的方式。

  3. 项目之间功能冗余,数据冗余,耦合性强。

  4. SOA架构(面向服务架构)

![SOA架构图](https://images-1257029624.cos.ap-chongqing.myqcloud.com/SOA架构图.png “SOA架构图简体图”")

   当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的**分布式服务框架(RPC)**是关键。
SOA也是基于分布式架构演变过来的,SOA架构代表面向服务架构,俗称服务化,可以理解为面向与业务逻辑层。将共同的业务代码进行抽取出来的,提供给其他接口进行调用,服务与服务之间通讯采用rpc远程调用技术。

  • 服务的概念:将共同的业务逻辑进行拆分,拆分成独立的一个项目进行部署,没有视图层。
  • RPC远程调用技术框架: httpclient,springcloud,dubbo,grpc核心底层socket技术或者netty实现。
特点:
  1. 基于SOA的架构思想将重复公用的功能抽取组件,以服务的方式给各个系统提供服务。
  2. 各个项目 (系统) 与服务之间采用webservice,rpc等方式进行通信。
  3. ESB企业服务总线作为项目与服务之间通信的桥梁。
  4. webservice底层是采用Http协议+XML(SOAP)RPC是远程调用技术,两个或者多个应用实现远程调用。
优点:
  1. 将重复的功能抽取为服务,提高开发效率,提高系统可重用性,可维护性。
  2. 可以针对不同服务的特点制定集群及优化方案。
  3. 采用ESB减少系统的的接口耦合。
缺点:
  1. 系统与服务的界限模糊,不利于开发及维护。

  2. 虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。

  3. 抽取的服务的粒度过大,系统与服务之间耦合性高。

  4. 微服务架构(流动计算架构)

![微服务架构图](https://images-1257029624.cos.ap-chongqing.myqcloud.com/微服务架构图.jpg “微服务架构图简体图”")

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

既然有了SOA为什么会出现微服务架构呢?

  • SOA架构有局限性,就是所有的接口都需要走ESB,如果不同的编程语言开发子系统,而这个编程语言对于某种RCP协议支持是最友好的,而ESB规则限定其只能使用ESB的规定协议。
  • SOA架构与微服务架构对比图:

![SOA与微服务架构比较表图](https://images-1257029624.cos.ap-chongqing.myqcloud.com/微服务与SOA的比较.png “SOA与微服务架构比较表图”")

特点:
  1. 将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务。
  2. 微服务遵循单一原则。
  3. 微服务之间采用RESTful等轻量协议传输。
优点:
  1. 服务拆分粒度更细,有利于资源重复利用,提高开发效率。
  2. 可以更加精准的制定每个服务的优化方案,提高系统可维护性。
  3. 微服务架构采用去中心化思想,服务之间采用RESTful等轻量协议通信,相比ESB更加轻便。
  4. 使用与互联网时代,产品迭代周期更短。
缺点:
  1. 微服务过多,服务治理成本高,不利于系统维护。
  2. 分布式系统开发的技术成本高(容错,分布式事务等),对团队挑战性大。

那我们为什么要使用SpringCloud呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值