1. 程式人生 > >Spring Cloud Eureka 服務關閉但是未從註冊中心刪除 自我保護機制

Spring Cloud Eureka 服務關閉但是未從註冊中心刪除 自我保護機制

背景:由於Eureka擁有自我保護機制,當其登錄檔裡服務因為網路或其他原因出現故障而關停時,Eureka不會剔除服務註冊,而是等待其修復。這是AP的一種實現。 
為了讓其有精準的 CP健康檢查,可以採取讓其剔除不健康節點。

server端:
eureka.server.enable-self-preservation//(設為false,關閉自我保護主要)
eureka.server.eviction-interval-timer-in-ms//清理間隔(單位毫秒,預設是60*1000)
client端:
eureka.client.healthcheck.enabled = true//開啟健康檢查(需要spring-boot-starter-actuator依賴)
eureka.instance.lease-renewal-interval-in-seconds =10//租期更新時間間隔(預設30秒)
eureka.instance.lease-expiration-duration-in-seconds =30//租期到期時間(預設90秒)

示例:

server端配置:
eureka:
    server:
        enableSelfPreservation: false
        evictionIntervalTimerInMs: 4000
client配置:
eureka:
    instance:
        leaseRenewalIntervalInSeconds: 10
        leaseExpirationDurationInSeconds: 30

注意:更改Eureka更新頻率將打破伺服器的自我保護功能

自我保護背景

首先對Eureka註冊中心需要了解的是Eureka各個節點都是平等的,沒有ZK中角色的概念, 即使N-1個節點掛掉也不會影響其他節點的正常執行。

預設情況下,如果Eureka Server在一定時間內(預設90秒)沒有接收到某個微服務例項的心跳,Eureka Server將會移除該例項。但是當網路分割槽故障發生時,微服務與Eureka Server之間無法正常通訊,而微服務本身是正常執行的,此時不應該移除這個微服務,所以引入了自我保護機制。

自我保護機制

官方對於自我保護機制的定義:

https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication

自我保護模式正是一種針對網路異常波動的安全保護措施,使用自我保護模式能使Eureka叢集更加的健壯、穩定的執行。

自我保護機制的工作機制是如果在15分鐘內超過85%的客戶端節點都沒有正常的心跳,那麼Eureka就認為客戶端與註冊中心出現了網路故障,Eureka Server自動進入自我保護機制,此時會出現以下幾種情況:

1、Eureka Server不再從註冊列表中移除因為長時間沒收到心跳而應該過期的服務。

2、Eureka Server仍然能夠接受新服務的註冊和查詢請求,但是不會被同步到其它節點上,保證當前節點依然可用。

3、當網路穩定時,當前Eureka Server新的註冊資訊會被同步到其它節點中。

因此Eureka Server可以很好的應對因網路故障導致部分節點失聯的情況,而不會像ZK那樣如果有一半不可用的情況會導致整個叢集不可用而變成癱瘓。

自我保護開關

Eureka自我保護機制,通過配置 eureka.server.enable-self-preservation來true開啟/false禁用自我保護機制,預設開啟狀態,建議生產環境開啟此配置。

伺服器端配置:

1

2

3

4

eureka:

server:

# 測試時關閉自我保護機制,保證不可用服務及時踢出

enable-self-preservation: false

客戶配置:

1

2

3

4

5

6

# 心跳檢測檢測與續約時間

# 測試時將值設定設定小些,保證服務關閉後註冊中心能及時踢出服務

eureka:

instance:

lease-renewal-interval-in-seconds: 1

lease-expiration-duration-in-seconds: 2

  以上配置說明

     lease-renewal-interval-in-seconds 每間隔1s,向服務端傳送一次心跳,證明自己依然”存活“

    lease-expiration-duration-in-seconds  告訴服務端,如果我2s之內沒有給你發心跳,就代表我“死”了,將我踢出掉。

相關推薦

Spring Cloud Eureka 服務關閉但是註冊中心刪除 自我保護機制,以及如何關閉自我保護機制的辦法

自我保護背景 首先對Eureka註冊中心需要了解的是Eureka各個節點都是平等的,沒有ZK中角色的概念, 即使N-1個節點掛掉也不會影響其他節點的正常執行。 預設情況下,如果Eureka Server在一定時間內(預設90秒)沒有接收到某個微服務例項的心跳,Eure

Spring Cloud Eureka 服務關閉但是註冊中心刪除 自我保護機制

背景:由於Eureka擁有自我保護機制,當其登錄檔裡服務因為網路或其他原因出現故障而關停時,Eureka不會剔除服務註冊,而是等待其修復。這是AP的一種實現。  為了讓其有精準的 CP健康檢查,可以採取讓其剔除不健康節點。 server端: eureka.server.

Spring cloud Eureka 服務治理(高可用服務中心)

image 本地host available png active url 狀態 name spring 在微服務的架構中,我們考慮發生故障的情況,所以在生產環境中我們需要對服務中各個組件進行高可用部署。 Eureka Server 的高可用實際上就是將自己作為服務想其

1 Spring Cloud Eureka服務治理

聲明 打印日誌 pac cti .get 變化 其他 nod zookeepe 註:此隨筆為讀書筆記。《Spring Cloud微服務實戰》 什麽是微服務?   微服務是將一個原本獨立的系統拆分成若幹個小型服務(一般按照功能模塊拆分),這些小型服務都在各自獨立的進程中運行,

Spring Cloud Eureka 服務治理

組織 監控 方式 註冊中心 服務治理 分類 一個 附加 不可用 服務註冊: 在服務治理框架中,通常會構建一個註冊中心,每個服務單元向註冊中心登記自己提供的服務,將主機與端口號、版本號、通信協議等一些附加信息告知註冊中心, 註冊中心按服務名分類組織服務清單,註

Spring Cloud Eureka-服務註冊與發現

效應 code ack size init -- 編輯 rep pid Spring Cloud Eureka Spring Cloud是目前用於開發微服務的主流框架之一,我們都知道在微服務架構中最為基礎、核心的模塊,就是服務註冊與發現。 在Spring Cloud裏我們可

Spring Cloud Eureka(服務治理)(2)

1.服務發現與消費 下面來嘗試構建一個服務消費者,它主要完成兩個目標,發現服務以及消費服務。其中服務發現的任務由Eureka的客戶端完成,而服務消費者的任務由Ribbon完成。Ribbon是一個基於HTTP和TCP的客戶端負載均衡器,它可以在通過客戶端中配置的ribbonServerList

Spring Cloud Eureka(服務治理)(1)

Spring Cloud Eureka是Spring Cloud Netflix微服務套件中的一部分,它基於Netflix Eureka做了二次封裝,主要負責完成微服務架構中的服務治理功能。 1.服務治理 服務治理是微服務架構中最核心和基礎的模組,它主要用來實現各個微服務例項的自動化註冊

解決spring cloud eureka服務註冊出現的Error creating bean with name 'org.springframework.cloud.netflix...問題

異常如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.cloud.netflix.eureka.EurekaClien

基於spring-cloud-eureka 服務中心註冊

本文基於Finchley.SR2以上,Edgware.SR5的配置部分不適用 spring-boot版本為2.0.2RELEASE, 用部分設定1.5已不適用 伺服器端設定 伺服器pom檔案設定 加入依賴 spring-cloud-starter-netflix-eureka

spring cloud——eureka服務註冊和發現

https://blog.csdn.net/forezp/column/info/15197 參考方誌朋的部落格 學到了@LoadBalanced註釋,可以使得ribbon(負載均衡)起作用。還有就是 restTemplate.getForObject("http://provide

搭建Spring Cloud Eureka服務註冊中心(二)服務呼叫

上一節我們搭建了單節點的Eureka和一個provide-server的服務,這一次我們再新建立一個consume-server,然後使用RestTemplate實現服務之間的呼叫。 1、建立consume-server服務 服務建立過程就不一一描述了,這裡貼一下appl

Spring Cloud Eureka 服務提供者 (eureka client)

一、建立一個服務提供者 (eureka client) 當client向server註冊時,它會提供一些元資料,例如主機和埠,URL,主頁等。Eureka server 從每個client例項接收心跳訊息。 如果心跳超時,則通常將該例項從註冊server中刪除。

SpringCloud實戰二:Spring Cloud Eureka 服務發現與註冊中心

  Spring Cloud Eureka 它是通過封裝 Netflix 開源的Eureka,一款基於 Rest 的服務發現與註冊元件,包括 Eureka Server 和 Eureka Client,最新版本為2018年8月釋出的1.9.4版本,最新的2.x版本已經不再開源,但是1.9

Spring Cloud Eureka —— 服務發現與消費

ribbon簡單介紹 1服務發現的任務由Eureka的客戶端完成,服務消費的任務由Ribbon完成。 2Ribbon是一個基於HTTP和TCP的客戶端負載均衡器,它可以在通過客戶端中配置的ribbonServerList服務端列表去輪詢訪問以達到負載均衡的作用。 構建例

Spring Cloud Eureka--服務發現

一、Spring Cloud      Spring Cloud 為開發者提供了在分散式系統(如配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、一次性 Token、全域性鎖、決策競選、分散式會話和叢集狀態)操作的開發工具。最關鍵的是它足夠簡單,一般的開發人員只需要

01.Spring Cloud Eureka服務註冊與發現

Spring Cloud Eureka Spring Cloud Eureka 1.構建服務註冊中心 2.提供服務,註冊服務 依賴 啟動類 獲取服務 3.配置註冊中心高可用

第二篇:Spring Cloud Eureka 服務註冊+發現

Spring Cloud Netflix 主要元件 Spring Cloud Netflix 的核心是用於服務註冊與發現的 Eureka,接下來我們將以 Eureka 為線索,介紹 Eureka、Ribbon、Hystrix、Feign 這些 Spring Cloud Netflix 主要元件。 服務註冊

Spring Cloud Eureka服務註冊中心 單節點搭建(學習總結)

一、前言: 本文主要搭建Spring Cloud Eureka服務註冊中心(單節點),不過一般生產環境都是多節點負載均衡,形成一個服務註冊中心叢集,這樣一個註冊中心崩了不會影響整個系統的執行以及介面的呼叫。本文基於SpringBoot 1.5.2,Spring Cloud 

Spring Cloud Eureka 服務註冊與發現

Eureka是Netflix開源的一個RESTful服務,主要用於服務的註冊發現。Eureka由兩個元件組成:Eureka伺服器和Eureka客戶端。Eureka伺服器用作服務註冊伺服器。Eure