Spring Cloud 基础二

1、Eureka 的配置
多个注册中心需要互相注册。
注册中心:

server:
  port: 7001
spring:
  application:
    name: cloud-eureka

eureka:
  instance:
    hostname: eureka.com   #eureka服务端的实例名称
  client:
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #集群指向其它eureka
      defaultZone: http://localhost:7002/eureka/
    #server:
    #关闭自我保护机制,保证不可用服务被及时踢除
    #enable-self-preservation: false
    #eviction-interval-timer-in-ms: 2000

注册中心的启动类里面需要加上@EnableEurekaServer 注解。

服务端的配置:

eureka:
  client:
    #表示是否将自己注册进EurekaServer默认为true。
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      #单机版
#      defaultZone: http://localhost:7001/eureka
      # 集群版
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
#  instance:
#    instance-id: payment8001
#    #访问路径可以显示IP地址
#    prefer-ip-address: true
    #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
    #lease-renewal-interval-in-seconds: 1
    #Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
    #lease-expiration-duration-in-seconds: 2

服务端的启动类需要加上@EnableEurekaClient注解

2、Eureka 的自我保护机制
为什么会产生Eureka自我保护机制?
为了防止EurekaClient可以正常运行,但是与EurekaServer网络不通的情况下,EurekaServer 不会立刻将EurekaClient服务剔除。
什么是自我保护模式?
默认情况下,如果EurekaServer在一定时间内没有接受到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒)。但是当网络分区故障发生(延时、卡顿、拥挤)时,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了------因为微服务本身是健康的,但是此时本不应该注销这个微服务。Eureka通过“自我保护模式” 来解决这个问题------当EurekaServer 节点在短时间内丢失过多的客户端时(可能发生网络分区故障),那么这个节点就会进入自我保护模式。

Eureka 在自我保护模式中,Eureka会保护服务注册表中的信息,不会注销任何微服务的信息。(属于CAP里面的AP的设计思想)

Eureka 中默认开启自我保护的机制,关闭配置如下:
eureka server(注册中心)

eureka:
  server:
    enable-self-preservation: false           # 关闭自我保护模式(缺省为打开)
    eviction-interval-timer-in-ms: 5000       # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)

eureka client(服务端)

eureka:
  instance:
    lease-renewal-interval-in-seconds: 5      # 心跳时间,即服务续约间隔时间(缺省为30s)
    lease-expiration-duration-in-seconds: 10  # 发呆时间,即服务续约到期时间(缺省为90s)
  client:
    healthcheck:
      enabled: true                           # 开启健康检查(依赖spring-boot-starter-actuator)

Eureka 2.0以后不在更新

猜你喜欢

转载自blog.csdn.net/qq_38428298/article/details/108483582