1. 程式人生 > 其它 >服務註冊中心 Eureka 自我保護

服務註冊中心 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