浅聊SpringCloud及各组成件

浅聊SpringCloud及各组成件

什么是SpringCloud

Spring cloud 就是微服务系统架构的一站式解决方案,为我们提供了一套简易的编程模型,使我们能在spring boot的基础上轻松地实现微服务项目的构建。

SpringCloud的服务发现框架—Eureka

  • Eureka由Netflix开发,是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在子项目的spring-cloud-netflix中。
  • Eureka两个组件Eureka Server、Eureka Client
    Eureka Server 提供服务注册服务,各个节点启动后都会在Eureka Server中进行注册。
    Eureka Client 既可以作为服务的提供者,又可以作为服务的消费者。
  • 服务注册:当 Eureka 客户端向 Eureka Server 注册时,他提供自身的元数据,例如 IP 地址、端口、URL、主页等。
  • 服务续约:Eureka客户会每隔30秒(默认情况下)发送一次心跳来续约。来通知Eureka Server 注册中心该 Eureka 依然存在,没有出现问题。正常情况下,如果 Eureka Server 在90秒内没有接收到 Eureka 客户的续约请求,注册中心 Eureka Server 会将该实例移除。自我保护机制除外。
Eureka的自我保护机制:当Eureka Server在某种特定情况下Eureka Server不会剔除其注册列表中的实例,那就是Eureka的自我保护时期。假想一下,当一个Server节点出现了网络分区等不可抗力等原因,那么它会因此收不到client的续约心跳,如果网络波动比较大,也就导致server因为一次网络波动剔除了所有或者绝大部分client,这种情况我们是看不见的。所以Eureka会有一种自我保护机制,默认是15分钟内收到的续约低于原来的85%“这是上面的续约配置比例”那么就会开启自我保护,这阶段Eureka Server不会剔除期列表中的实例,即使过了90秒也不会。

Spring Cloud的负载均衡—Ribbon

  • Ribbon:Ribbon是Netflix公司提供的一个负载均衡项目,是运行在消费者端的。其工作原理就是Consumer端获取到了所有服务列表之后,在其内部使用负载均衡算法,进行对多个系统的调用。(默认使用轮询策略)
  • Nginx和Ribbon的对比:
    Nginx是将所有Request集中起来,然后在进行负载均衡。
    Ribbon是在消费者端进行的负载均衡。

Spring Cloud的熔断和降级—Hystrix

  • 什么是Hystrix:Hystrix是一个库,可通过添加等待时间和容错逻辑来控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,停止服务之间的级联故障并提供后备选项来实现此目的,所有这些都可以提高系统的整体弹性。
  • 什么是熔断:所谓熔断就是服务雪崩的一种有效解决方案,当指定时间窗内的请求失败率达到设定的阈值时,系统将通过短路器直接将此请求链路断开。
  • 什么是降级:降级是为了更好的用户体验,当一个方法的调用异常时,执行另一种逻辑代码来给用户友好的回复。

Spring Cloud的服务网关—Zuul

  • 什么是Zuul:是从设备和web站点到Netflix流应用后端的所有请求的前门。作为边界服务应用,Zuul是为了实现动态路由、监视、弹性和安全性而构建的。它还具有根据情况将请求路由到多个Amazon Auto Scaling Groups(亚马逊自动缩放组,亚马逊的一种云计算方式)的能力。
  • 什么是网关:就是系统对外唯一的接口,介于客户端和服务器之间,用于对请求进行鉴权、限流、路由、监控等功能。
  • 功能:路由、过滤。

Spring Cloud的配置管理—Config

  • 为什么要使用进行配置管理:能对配置文件统一的进行管理,又能在项目运行期间动态的修改配置文件。
  • 什么是Config:简单来说,Spring Cloud Config就是能将各个系统/模块/应用的配置文件放到统一的地方然后进行管理(Git或者SVN)。

Spring Cloud的消息总线—Bus

  • spring cloud Bus的作用:就是管理和广播分布式系统中的消息,也就是消息引擎系统中的广播模式。当然作为消息总线的spring cloud Bus可以做很多的事,不仅仅是客户端的配置刷新。拥有了spring cloud Bus之后,我们只需要创建一个简单的请求,并且加上@ResfreshScope注解就能进行配置的动态修改了。
    浅聊SpringCloud及各组成件_第1张图片

你可能感兴趣的:(springcloud,分布式)