SpringCloud(三)【Eureka注册中心】

SpringCloud(一)微服务介绍
SpringCloud(二)【单体服务及远程调用】


一、Eureka是什么

Spring Cloud 将 Eureka 与 Netflix 中的其他开源服务组件(例如 Ribbon、Feign 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后的组件全称为 Spring Cloud Netflix Eureka。

Eureka 是 Spring Cloud Netflix 模块的子模块,它是 Spring Cloud 对 Netflix Eureka 的二次封装,主要负责 Spring Cloud 的服务注册与发现功能。

二、Eureka作用

在这里插入图片描述

  1. 消费者该如何获取服务提供者具体信息?

    • 服务提供者启动时向eureka注册自己的信息
    • eureka保存这些信息
    • 消费者根据服务名称向eureka拉取提供者信息
  2. 如果有多个服务提供者,消费者该如何选择?

    • 服务消费者利用负载均衡算法(Ribbon),从服务列表中挑选一个
  3. 消费者如何感知服务提供者健康状态?

    • 服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态
    • eureka会更新记录服务列表信息,心跳不正常会被剔除(90秒)
    • 消费者就可以拉取到最新的信息

三、Eureka使用

(一)搭建EurekaServer

  1. 新建eureka-service服务
    选择新建maven项目
    在这里插入图片描述
    新建名为eureka-service的服务
    在这里插入图片描述
  2. 引入依赖
    在eureka-service的pom文件中引入依赖spring-cloud-starter-netflix-eureka-server
    在这里插入图片描述
  <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
  1. 添加@EnableEurekaServer注解
    在这里插入图片描述
  2. 在application.yml中配置eureka地址
server:
  port: 10086
spring:
  application:
    name: eurekaserver
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka/
  1. 启动服务查看
    可以看到eureka的服务实例列表
    在这里插入图片描述
    搭建EurekaServer搭建成功。

(二)注册服务

  1. 引入eureka-client依赖
    在order-service服务中引入依赖
    在这里插入图片描述
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
  1. 在application.yml中配置eureka地址
    配置该服务的名称和eureka的地址
    在这里插入图片描述
    重新启动,查看。
    在这里插入图片描述
    可以看到服务orderservice已经在eureka注册成功。
    在这里插入图片描述

(三)服务发现

  1. 引入eureka-client依赖
    在案例中,order-service相当于客户端向服务端user-service请求获取用户相信信息。
    (二)中已经完成。
  2. 在application.yml中配置eureka地址
    (二)中已经完成。
  3. 给RestTemplate添加@LoadBalanced注解
    主要用于负载均衡,在有多个服务提供者的时候使用。
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
  1. 用服务提供者的服务名称远程调用
    在这里插入图片描述

三、More

(一)基础架构

在这里插入图片描述

  1. 服务提供者
  • 服务注册
    在启动时,通过REST请求的方式将自己注册到Eureka Service服务,同时带上自身的有些元数据。
  • 服务同步
  • 服务续约
eureka:
  instance:
    lease-renewal-interval-in-seconds: 30 # 服务续约间隔时间,默认30s
    lease-expiration-duration-in-seconds: 90 # 服务失效时间,默认90s
  1. 服务消费者
  • 获取服务
  • 调用服务
  • 服务下线
    服务势力进行正常的关闭操作时,会出发一个服务下线REST请求给Eureka Service。服务端在接收到请求后,将服务状态设置为下线(DOWN),并把该事件传播出去。
  1. 服务注册中心
  • 失效剔除
    服务实例非正常下线(内存溢出,网络故障等),注册中心可能收不到下线请求。所以Eureka Service在启动时会创建一个定时任务,每隔一段时间(默认60s)将清单中超时(默认90s)没有续约的服务剔除。
  • 自我保护
    Eureka Service统计运行期间,如果最近一分钟实际接收到的心跳值Renews除以期望的心跳阈值 Renews threshold小于等于0.85,即 Renews/Renews threshold≤0.85。Eureka Service会将当前实例保护起来,让这些实例不过期,尽可能保护注册信息。
    在本地开发调试很容易达成自我保护条件,可以使用eureka.server.enable-self-preservation=false关闭自我保护,默认值是false。
    关于自我保护,这里看了两篇文章。

达成条件不是心跳失败比例在15分钟以内是否低于85%

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值