Spring Cloud系列教程 | 第一篇:微服务架构演进

推荐 Spring Cloud 视频:

架构的演变过程:
单体架构——>垂直架构——>soa面向服务架构——>微服务架构

我们为什么要使用Spring Cloud?

单体架构
在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的功能,从而减少开发、部署和维护的难度。这种用于简单的增删改查的数据访问框架(ORM)十分的重要。

垂直应用架构
当用户访问量不断的提升,单一应用需要不断的增加服务器来应对,同时将单一的应用拆分成多个应用用来处理提升效率。这种用于加速Web前端加载的Web框架(MVC)起到了关键性的作用。
在这一阶段往往会将系统分为不同的层级,每个层级有对应的职责,UI层负责和用户进行交互、业务逻辑层负责具体的业务功能、数据库层负责和上层进行数据交换和存储。
在这里插入图片描述
在这里插入图片描述
特点:
①.以单体架构为单位进行系统的划分,划分成一个个系统.
②.项目与项目之间存在数据冗余,耦合度高.
③.项目是以接口调用为主,存在数据同步问题.
优点:
①.项目架构简单,前期开发的成本低,周期短,小型企业首先.
②.垂直架构进行mvc分层设计,针对分层做相应的处理做到集群(10~1000)
③.不同的项目采用不同的技术实现.
缺点:
①.全部的功能都集中在一个项目中完成,对于大型项目来说,开发难度高,不容易开发及扩展和维护.
②.集群扩展有瓶颈集群(10~1000)针对分层做了优化.

SOA 服务化架构
伴随着企业服务量的不断提升,MVC框架的部署导致系统的负重越来越多,无法满足并发的要求,系统间数据、报文的传输会出现频繁的丢失。这时候我们需要考虑服务化的架构(SOA)。SOA表示面向服务的架构。将应用根据不同的职责划分成不同的模块(类似于企业划分不同的事业部),不同的模块使用特定的调用协议(RPC)和接口进行交互。
这样使整个系统切分成很多单个组件服务来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。
SOA服务化的优点是,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。
服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
服务化架构是一套松耦合的架构,服务的拆分原则是服务内部高内聚,服务之间低耦合。
在这里插入图片描述
在这里插入图片描述

特点:
①.基于soa服务思想进行功能的抽取(重复代码问题解决),以服务为中心来管理项目.
②.各个系统之间要进行调用,所以出现ESB来管理项目(可以使用各种技术实现:webservice,rpc等)
③.ESB是作为系统与系统之间桥梁,很难进行统一管理.
优点:
①.重复代码进行了抽取,提高了开发效率,提高了系统的可维护性.
②.可以针对某个系统进行扩展,做集群更容易.
③.采用ESB来管理服务组件,有利于降低企业开发项目难度
缺点:
①.系统与服务的界限模糊的,不利于设计.
②.ESB是作为系统与系统之间桥梁,没有统一标准,种类很多,不利于维护.
在这个阶段可以使用WebService或者dubbo来服务治理。
抽取项目的粒度大,系统与服务之间解耦问题.

微服务架构
在这里插入图片描述
特点:
①.把系统的服务层完全独立出来,有利于资源的重复利用,提高开发效率.
②.微服务遵守单一原则
③.微服务与微服务之间的调用使用restful轻量级调用.
优点:
①.微服务拆分更细,有利于资源的重复利用,提高开发效率
②.可以更加精准针对某个服务做方案
③.微服务去中心化,使用restful轻量级通信协议比使用ESB企业服务总线更容易维护
④.适应市场更容易,产品迭代周期更短.
缺点:
①.微服务量多,服务治理成本高,不利于系统维护.
微服务架构算是SOA架构的一种拓展,主要关注的是服务个体的独立性、拆分粒度更小。相对于SOA架构来说,微服务拥有以下优势:
微服务强调更深层次的组件化和服务化,每个微服务都可以拥有独立的运行空间,确保每一个服务组件可以作为单独的产品进行发布。
微服务抛弃了传统SOA笨重的企业服务总线,对外发布强调使用HTTP REST API的接口发布形式。
微服务的切分粒度大。

了解了架构的发展过程,我们来认识一下Spring Cloud。
Spring Cloud来源于Spring,利用Spring Boot进行快捷开发。由于目前Spring Cloud社区的维护和支持的人员数量众多,相信Spring Cloud会有很好的发展。而且Spring Cloud基本上都是使用了现有的开源框架进行的集成,学习的难度和部署的门槛就比较低,对于中小型企业来说,更易于使用和落地。

Spring Cloud主要解决了什么问题?

对于企业级的SOA框架来说,服务与服务间的解耦是一项巨大的难题,随着功能服务的不断增加,多服务间的相互调用频繁,调用过程就像一个杂乱无章的毛线球,很容易导致牵一发而动全身的情况,经常会由于在服务更新的过程中,没有合理通信,导致数据的丢失。
这时候就应该进行服务治理,将服务之间的直接依赖转化为服务对服务中心的依赖。Spring Cloud 核心组件Eureka就是解决这类问题。

专家推荐

“随着微服务架构的发展,Spring Cloud 使用得越来越广泛。驰狼课堂http://www.chilangedu.com (QQ群:348039381) Spring Boot 快速入门,Spring Boot 与Spring Cloud 整合,docker+k8s,大型电商商城等多套免费实战教程可以帮您真正做到快速上手,将技术点切实运用到微服务项目中。”

后面章节源码GitHub

关于Eureka请看下一篇 Spring Cloud系列教程 | 第二篇:SpringCloud服务发现注册Eureka +Ribbon + Feign

关注公众号,每天精彩内容,第一时间送达!
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值