1.为什么要使用Spring Cloud
单体架构
在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的功能,从而减少开发、部署和维护的难度。这种用于简单的增删改查的数据访问框架(ORM)就可以实现我们的需求。
垂直应用架构
当用户访问量不断的提升,单一应用需要不断的增加服务器来应对,同时将单一的应用拆分成多个应用用来处理提升效率。这种用于加速Web前端加载的Web框架(MVC)。UI层负责和用户进行交互、业务逻辑层负责具体的业务功能、数据库层负责和上层进行数据交换和存储。
伴随着企业服务量的不断提升,MVC框架的部署导致系统的负重越来越多,无法满足并发的要求。这时候我们需要考虑服务化的架构(SOA)。SOA表示面向服务的架构。将应用根据不同的职责划分成不同的模块(类似于企业划分不同的事业部),服务化架构是一套松耦合的架构,服务的拆分原则是服务内部高内聚,服务之间低耦合。
2.核心知识点:
Eureka 注册中心
Hystrix熔断 机制
Zuul 网关
Config Server配置中心
User Center 搭建
Eureka
Eureka就是一个服务中心,将所有的可以提供的服务都注册到它这里来管理,其它各调用者需要的时候去注册中心获取,然后再进行调用,避免了服务之间的直接调用,方便后续的水平扩展、故障转移等。如下图:
那么在系统的运行期间某个实例挂了怎么办?
1.心跳机制 2.负载均衡 3.故障转移
Hystrix
在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。 在这种情况下就需要整个服务机构具有故障隔离的功能,避免某一个服务挂掉影响全局。
Hystrix会在某个服务连续调用N次不响应的情况下,立即通知调用端调用失败,避免调用端持续等待而影响了整体服务。Hystrix间隔时间会再次检查此服务,如果服务恢复将继续提供服务。
Config
随着微服务不断的增多,每个微服务都有自己对应的配置文件 如:缓存、数据库等。Spring Cloud Config是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,Server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,Client通过接口获取数据、并依据此数据初始化自己的应用。
Zuul
它的具体作用就是服务转发,接收并转发所有内外部的客户端调用。使用Zuul可以作为资源的统一访问入口,同时也可以在网关做一些权限校验等类似的功能。 当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务端。
(1)Zuul本质上是一个web servlet应用,ZuulServlet
(2)核心是一系列的filters, 其作用可以类比Servlet框架的Filter,或者AOP。 Zuul请求路由到后端服务的过程中,这些filter参与一些过滤处理。
总结
1.Eureka负责服务的注册与发现,很好将各服务连接起来
2.Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护。
3.Hystrix dashboard,Turbine 负责监控 Hystrix的熔断情况,并给予图形化的展示
4.Spring Cloud Config 提供了统一的配置中心服务当配置文件发生变化的时候,Spring Cloud Bus 负责通知各服务去获取最新的配置信息
5.所有对外的请求和服务,我们都通过Zuul来进行转发,起到API网关的作用