服务注册中心 Eureka 自我保护

1.故障现象

概述

保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。

2.导致原因

 总结:某时刻某一微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存,属于CAP里面的AP分支。

 

3.怎样禁止自我保护

在7001和7002的yml中修改配置:

server:
  port: 7001
eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    #false表示不向注册中心注册自己
    register-with-eureka: false
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false
    service-url:
      #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://eureka7002.com:7002/eureka/
  server:
    #关闭自我保护机制,保证不可用服务被及时剔除
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 2000

 

 修改8001和8002yml配置:

server:
  port: 8001

spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/standarddb?userUnicode=true&characterEncoding=utf-8&useSSL=false
    username: sa
    password: HRBJYKJ-Battery
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.atguigu.springcloud.entities
eureka:
  client:
    #表示是否将自己注册进EurekaServer,默认true
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置true才能配合ribbon使用负载均衡。
    fetch-registry: true
    service-url:
      defaultZone: http://eurreka7001.com:7001/eureka,http://eureka7002.com:7002/eureka  #集群版
   #主机名实例
  instance:
    instance-id: paymet8001
    prefer-ip-address: true   #访问路径可以显示IP地址
    #Eureka 客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
    lease-renewal-interval-in-seconds: 1
    #Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
    lease-expiration-duration-in-seconds: 2

 

posted @ 2021-10-17 19:40  创客未来  阅读(78)  评论(0编辑  收藏  举报