认识SpringCloud(四)—服务治理机制

一、了解服务治理机制

在上一节搭建SpringCloud中,我们知道了整个 Eureka 服务治理基础架构的三个核心要素。
下面我们进一步了解下SpringCloud的服务治理机制

我们看可以先看下图:

根据上面的结构, 下面我们来详细了解一下, 从服务注册开始到服务调用, 及各个元
素所涉及的一些重要通信行为。

二、服务提供者

服务提供者有服务注册服务同步服务续约

  • 服务注册: “服务提供者” 在启动的时候会通过发送REST请求的方式将自己注册到EurekaServer
    上, 同时带上了自身服务的一些元数据信息。

    • 在服务注册时, 需要确认一下eureka.client.register-with-eureka=true参数是否正确, 该值默认为true。 若设置为false将不会启动注册操作。
  • 服务同步: 当服务提供者发送注册请求到一个服务注册中心时, 它会将该请求转发给集群中相连的其他注册中心, 从而实现注册中心之间的服务同步。

  • 服务续约: 在注册完服务之后,服务提供者会维护一个心跳用来持续告诉EurekaSe1-ver: “我还活着”, 以防止Eureka Server的“剔除任务 ” 将该服务实例从服务列表中排除出去,我们称该操作为服务续约(Renew)。

    • eureka.instance.lease-renewal-interval-in-seconds 参数用于定义服务续约任务的调用间隔时间,默认为30秒。
    • eureka.instance.lease-expira巨ondura已on-in-seconds参数用于定义服务失效的时间,默认为90秒。

三、服务消费者

服务消费者有获取服务服务调用服务下线

  • 获取服务: 启动服务消费者的时候,会发送一个REST请求到注册中心,获取注册的服务清单。

    • 必须确保eureka.c巨ent.fetch-registry= true参数设置为true
    • 可以修改缓存清单的更新时间,设置过eureka.client.registry-fetch-interval-seconds= 30,单位为秒
  • 服务调用: 服务消费者在获取服务清单后,通过服务名可以获得具体提供服务的实例名和该实例
    的元数据信息。

  • 服务下线: 以在客户端程序中, 当服务实例进行正常的关闭操作时, 它会触发一个服务下线的REST请求给Eureka Server, 告诉服务注册中心:“我要下线了”。 服务端在接收到请求之后,该服务状态置为下线(DOWN), 并把该下线事件传播出去。

四、服务注册中心

服务注册中心有失效剔除自我保护

  • 失效剔除: 由于内存溢出、 网络故障等原因使得服务不能正常工作, 而服务注册中心并未收到 “服务下线” 的请求。

    • 解决办法:在启动的时候会创建一个定时任务,默认每隔一段时间(默认为60秒) 将当前清单中超时(默认为90秒)没有续约的服务剔除出去。
  • 自我保护: 客户端必须要有容错机制, 比如可以使用请求重试、断路器等机制,避免出现调用失败的情况。本地调试很容易出发自我保护机制。

    • 解决办法:以使用eureka.server.enableself-preservation = false来关闭自我保护机制,以确保注册中心可以将不可用的实例正确剔除。

 上一篇
认识SpringCloud(五)—常用配置详解 认识SpringCloud(五)—常用配置详解
一、Eureka 属性名 说明 默认值 eureka.server.enable-self-preservation 关闭注册中心的保护机制,Eureka 会统计15分钟之内心跳失败的比例低于85%将会触发保护机制,不剔除服务提
2019-12-16
下一篇 
认识SpringCloud(三)—服务注册中心SpringCloud Eureka 认识SpringCloud(三)—服务注册中心SpringCloud Eureka
一、认识服务治理服务治理: 主要用来实现各个微服务实例的自动化注册与发现。 例如画几个简图来帮忙理解 项目A调用项目B,正常调用项目A请求项目B 有了服务中心之后,任何一个服务都不能直接去掉用,都需要通过服务中心来调用 项目A调用项目B
2019-12-16
  目录