springcloud Eureka注册中心

一、Eureka注册中心

Eureka负责管理记录服务提供者的信息。服务调用者无需自己寻找服务。Eureka自动匹配服务给调用者。
Eureka与服务之间通过心跳机制进行监控。
在这里插入图片描述
服务治理的过程:

  1. Eureka Client 向Eureka注册中心注册自己的信息
  2. Eureka Client 从Eureka注册中心获取注册表信息,并将其缓存在本地(Service Consumer为了避免每次调用服务请求都需要向Eureka Server获取服务实例的注册信息,此时需要设置eureka.client.fetchRegistry=true,它会在本地缓存所有实例注册信息。为了保证缓存数据的有效性,它会定时(值由eureka.client.registry-fetch-interval-seconds定义,默认值为30s)向注册中心拉取更新缓存。)
  3. 注册中心通过心跳续约来监控服务提供者,就是Eureka Client 每隔30s(默认)定时更新自己状态来表示自己的服务还活着(如果超过30s没有收到心跳续约还不会剔除,如果90s还没有收到服务提供者的心跳续约就会把服务给剔除出去)
  4. 当 Eureka Client 从注册中心获取到服务提供者信息后,就可以通过 Http 请求调用对应的服务;服务提供者有多个时,Eureka Client 客户端会通过 Ribbon 自动进行负载均衡
  5. Eureka会统计服务实例最近15分钟心跳续约的比例是否低于85%,如果低于则会触发自我保护机制,自我保护机制下不会剔除任何服务

Eureka Server 进入自我保护机制,会出现以下几种情况:
(1 Eureka 不再从注册列表中移除因为长时间没收到心跳而应该过期的服务
(2 Eureka 仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)
(3 当网络稳定时,当前实例新的注册信息会被同步到其它节点中

Eureka 自我保护机制是为了防止误杀服务而提供的一个机制。当个别客户端出现心跳失联时,则认为是客户端的问题,剔除掉客户端;当 Eureka 捕获到大量的心跳失败时,则认为可能是网络问题,进入自我保护机制;当客户端心跳恢复时,Eureka 会自动退出自我保护机制。

1.0、Eureka注册中心

server:
  port: 18081
eureka:
  client:
    fetch-registry: false #是否定期拉取服务列表信息
    register-with-eureka: false #将自己注册到注册中心去
    service-url:
      defaultZone: http://localhost:18081/eureka
  server:
    eviction-interval-timer-in-ms: 5000 #多久检测一次失效的服务,并剔除
    enable-self-preservation: false #关闭自我保护机制

spring:
  application:
    name: eureka-server

1.1、服务提供者

eureka:
  client:
    fetch-registry: true #是否定期拉取服务列表信息
    register-with-eureka: true #将自己注册到注册中心去
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    #租约到期,服务时效时间,默认值90秒
    lease-expiration-duration-in-seconds: 90
    #租约续约间隔时间,默认30秒
    lease-renewal-interval-in-seconds: 30
    prefer-ip-address: true

1.2、服务消费者

eureka:
  client:
    fetch-registry: true #是否定期拉取服务列表信息
    # 设置服务消费者从注册中心拉取服务列表的间隔
    registry-fetch-interval-seconds: 30
    register-with-eureka: true #将自己注册到注册中心去
    
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    prefer-ip-address: true 

在服务消费者yml加上后

  instance:
    prefer-ip-address: true     # 将自己的ip注册到Eureka Server上   如果不配置该属性  则默认为false且表示注册微服务所在操作系统的主机名到Eureka Server而不是ip地址

不生效????
在这里插入图片描述

二、Eureka 集群原理

erurak:集群,各个节点的数据一致,各个节点都属于同等级别的注册中心,不存在leader的概念。
zookeeper:Zookeeper集群存在Leader节点,并且会进行Leader选举,Leader具有最高权限。
在这里插入图片描述
不是集群时配置:

server:
  port: 7001
spring:
  application:
    name: eureka-server
eureka:
  client:
    fetch-registry: false #是否定期拉取服务列表信息
    register-with-eureka: false #将自己注册到注册中心去
    service-url:
      defaultZone: http://localhost:7001/eureka
  server:
    eviction-interval-timer-in-ms: 5000 #多久检测一次失效的服务,并剔除
    enable-self-preservation: false #关闭自我保护机制

集群的配置
本地电脑配置主机ip地址跟主机名映射
在这里插入图片描述

节点1:eureka-server01

server:
  port: 2001    #端口号
spring:
  application:
    name: eureka-server01 # 应用名称,会在Eureka中作为服务的id标识(serviceId)
    #profiles:
    #active: dev
eureka:
  instance:
    hostname: eureka-server01
  server:
    enable-self-preservation: false #关闭自我保护机制
  client:
    register-with-eureka: false   #是否将自己注册到Eureka中
    fetch-registry: false   #是否从eureka中获取服务信息
    service-url:
      defaultZone: http://eureka-server02:2002/eureka/,http://eureka-server03:2003/eureka/ # EurekaServer的地址  搭集群就是eureka相互注册,并且配置另外eurek地址


在这里插入图片描述

节点2:eureka-server02

server:
  port: 2002    #端口号
spring:
  application:
    name: eureka-server02 # 应用名称,会在Eureka中作为服务的id标识(serviceId)
    #profiles:
    #active: dev
eureka:
  instance:
    hostname: eureka-server02
  server:
    enable-self-preservation: false #关闭自我保护机制
  client:
    register-with-eureka: false   #是否将自己注册到Eureka中
    fetch-registry: false   #是否从eureka中获取服务信息
    service-url:
      defaultZone: http://eureka-server01:2001/eureka/,http://eureka-server03:2003/eureka/

在这里插入图片描述

节点3:eureka-server03

server:
  port: 2003    #端口号
spring:
  application:
    name: eureka-server03 # 应用名称,会在Eureka中作为服务的id标识(serviceId)
    #profiles:
    #active: dev
eureka:
  instance:
    hostname: eureka-server03
  server:
    enable-self-preservation: false #关闭自我保护机制
  client:
    register-with-eureka: false   #是否将自己注册到Eureka中
    fetch-registry: false   #是否从eureka中获取服务信息
    service-url:
      defaultZone: http://eureka-server01:2001/eureka/,http://eureka-server02:2002/eureka/

在这里插入图片描述
微服务注册到Eureka集群中:

server:
  port: 18085
spring:
  application:
    name: transactional
eureka:
  client:
    service-url:
      defaultZone: http://eureka-server01:2001/eureka/ #
  instance:
    prefer-ip-address: true #访问服务的时候,推荐使用IP(

可以看到注册到eureka-server01中,但是在三个注册中心都有微服务transactional的信息,说明注册中心集群是会同步的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值