日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

eureka自我保护功能

發(fā)布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 eureka自我保护功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

接著上次講的springcloud服務提供者的實現(xiàn)

下面我們看一下eureka的自我保護功能

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

默認情況下,如果Eureka Server在一定時間內(nèi)(默認90秒)沒有接收到某個微服務實例的心跳,Eureka Server將會移除該實例。但是當網(wǎng)絡分區(qū)故障發(fā)生時,微服務與Eureka Server之間無法正常通信,而微服務本身是正常運行的,此時不應該移除這個微服務,所以引入了自我保護機制

注冊中心的pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>microservicecloud</artifactId><groupId>com.atguigu.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>microservicecloud-eureka-7001</artifactId><dependencies><!--eureka-server服務端 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency><!-- 修改后立即生效,熱部署 --><!-- <dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId><optional>true</optional><scope>true</scope></dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency></dependencies><build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!-- 在這里添加熱部署springloader plugin--><!-- <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><dependencies><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId></dependency></dependencies><executions><execution><goals><goal>repackage</goal></goals><configuration><classifier>exec</classifier></configuration></execution></executions></plugin>--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--fork : 如果沒有該項配置,可能這個devtools不會起作用,即應用不會restart--><fork>true</fork></configuration></plugin></plugins></build> </project>

注冊中心的啟動類代碼:

package com.atguigu.springcloud;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication @EnableEurekaServer // EurekaServer服務器端啟動類,接受其它微服務注冊進來 public class EurekaServer7001_App {public static void main(String[] args){SpringApplication.run(EurekaServer7001_App.class, args);} }

注冊中心的application.yml配置文件:

server:port: 7001spring:application:name: microservicecloud-eureka#熱部署devtools:restart:enabled: truetrigger-file: devtools.tgeureka:instance:hostname: localhost #eureka服務端的實例名稱client:register-with-eureka: false #false表示不向注冊中心注冊自己fetch-registry: false #false表示自己端就是注冊中心,我的職責就是維護服務實例,并不需要去檢索服務service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與Eureka Server交互的地址查詢服務和注冊服務都需要依賴這個地址(單機)

?

?

?

服務提供者的pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>microservicecloud</artifactId><groupId>com.atguigu.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>microservicecloud-provider-dept-8001</artifactId><dependencies><!-- 引入自己定義的api通用包,可以使用Dept部門Entity --><dependency><groupId>com.atguigu.springcloud</groupId><artifactId>microservicecloud-api</artifactId><version>${project.version}</version></dependency><!-- actuator監(jiān)控信息完善 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- 將微服務provider側(cè)注冊進eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- 修改后立即生效,熱部署 --><!--<dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId><optional>true</optional><scope>true</scope></dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency></dependencies><build><plugins><!--<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><dependencies><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId></dependency></dependencies><executions><execution><goals><goal>repackage</goal></goals><configuration><classifier>exec</classifier></configuration></execution></executions></plugin> --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--fork : 如果沒有該項配置,可能這個devtools不會起作用,即應用不會restart--><fork>true</fork></configuration></plugin></plugins></build></project>

服務提供者的啟動類代碼:

package com.atguigu.springcloud;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication @EnableEurekaClient //本服務啟動后會自動注冊進eureka服務中 //@EnableDiscoveryClient //服務發(fā)現(xiàn) public class DeptProvider8001_App {public static void main(String[] args) {SpringApplication.run(DeptProvider8001_App.class, args);} }

服務提供者的application.yml配置文件

server:port: 8001mybatis:config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路徑type-aliases-package: com.atguigu.springcloud.entities # 所有Entity別名類所在包mapper-locations:- classpath:mybatis/mapper/**/*.xml # mapper映射文件spring:application:name: microservicecloud-dept#熱部署devtools:restart:enabled: truetrigger-file: devtools.tgdatasource:type: com.alibaba.druid.pool.DruidDataSource # 當前數(shù)據(jù)源操作類型driver-class-name: org.gjt.mm.mysql.Driver # mysql驅(qū)動包url: jdbc:mysql://localhost:3306/cloudDB01 # 數(shù)據(jù)庫名稱username: rootpassword: rootdbcp2:min-idle: 5 # 數(shù)據(jù)庫連接池的最小維持連接數(shù)initial-size: 5 # 初始化連接數(shù)max-total: 5 # 最大連接數(shù)max-wait-millis: 200 # 等待連接獲取的最大超時時間#以下為新增druid:# 指明是否在從池中取出連接前進行檢驗,如果檢驗失敗, 則從池中去除連接并嘗試取出另一個,#注意: 設置為true后如果要生效,validationQuery參數(shù)必須設置為非空字符串test-on-borrow: false# 指明連接是否被空閑連接回收器(如果有)進行檢驗.如果檢測失敗,則連接將被從池中去除.#注意: 設置為true后如果要生效,validationQuery參數(shù)必須設置為非空字符串test-while-idle: true# 指明是否在歸還到池中前進行檢驗,注意: 設置為true后如果要生效,#validationQuery參數(shù)必須設置為非空字符串test-on-return: false# SQL查詢,用來驗證從連接池取出的連接,在將連接返回給調(diào)用者之前.#如果指定,則查詢必須是一個SQL SELECT并且必須返回至少一行記錄validation-query: select 1eureka:client: #客戶端注冊進eureka服務列表內(nèi)service-url: defaultZone: http://localhost:7001/eureka#defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/instance:instance-id: microservicecloud-dept8001prefer-ip-address: true #訪問路徑可以顯示IP地址 info: app.name: atguigu-microservicecloudcompany.name: www.atguigu.combuild.artifactId: $project.artifactId$build.version: $project.version$

?

兩個工程的測試代碼已經(jīng)完成下面我們來測試下eureka的自我保護功能

分別啟動注冊中心和服務提供者兩個服務如下圖所示:

?

?

注冊的服務名稱如下圖yml配置:

eureka客戶端也就是服務的提供者yml配置文件配置服務以及服務狀態(tài)配置:

服務已經(jīng)啟動我們訪問注冊中心:http://localhost:7001/

?

接下來我們下個下服務的實例名稱

再次訪問:http://localhost:7001/

如下圖可知微服務立馬改變

再次改變yml配置微服務名稱

再次訪問:http://localhost:7001/

?

總結(jié)一句話:某時候某一個微服務不可用了,eureka不會立刻清理,依舊會對該微服務的信息進行保存

自我保護模式正是一種針對網(wǎng)絡異常波動的安全保護措施,使用自我保護模式能使Eureka集群更加的健壯、穩(wěn)定的運行。

自我保護機制的工作機制是如果在15分鐘內(nèi)超過85%的客戶端節(jié)點都沒有正常的心跳,那么Eureka就認為客戶端與注冊中心出現(xiàn)了網(wǎng)絡故障,Eureka Server自動進入自我保護機制,此時會出現(xiàn)以下幾種情況:

1、Eureka Server不再從注冊列表中移除因為長時間沒收到心跳而應該過期的服務。
2、Eureka Server仍然能夠接受新服務的注冊和查詢請求,但是不會被同步到其它節(jié)點上,保證當前節(jié)點依然可用。
3、當網(wǎng)絡穩(wěn)定時,當前Eureka Server新的注冊信息會被同步到其它節(jié)點中。

因此Eureka Server可以很好的應對因網(wǎng)絡故障導致部分節(jié)點失聯(lián)的情況,而不會像ZK那樣如果有一半不可用的情況會導致整個集群不可用而變成癱瘓。

?

自我保護開關

Eureka自我保護機制,通過配置eureka.server.enable-self-preservation來true打開/false禁用自我保護機制,默認打開狀態(tài),建議生產(chǎn)環(huán)境打開此配置。

開發(fā)環(huán)境配置

開發(fā)環(huán)境中如果要實現(xiàn)服務失效能自動移除,只需要修改注冊中心application.yml文件以下配置。

1、 注冊中心關閉自我保護機制,修改檢查失效服務的時間。

eureka:server: enable-self-preservation: falseeviction-interval-timer-in-ms: 3000

2、 微服務修改減短服務心跳的時間。

# 默認90秒 lease-expiration-duration-in-seconds: 10 # 默認30秒 lease-renewal-interval-in-seconds: 3

?

總結(jié)

以上是生活随笔為你收集整理的eureka自我保护功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色臀 | 久久精品免费在线观看 | 亚洲精品一区二区三区在线 | 岛国精品一区 | 亚洲国产mv | 人人干狠狠干 | 日本十大三级艳星 | 粉嫩aⅴ一区二区三区 | 日韩在线视屏 | 怡红院毛片 | 女人被狂躁60分钟视频 | 久久yy| www毛片com| 国产精品欧美一区二区 | 国产不卡一区二区视频 | 在线观看高清视频 | 亚洲夜色 | 欧美国产片 | 91视频在线视频 | 日本美女上床 | 久久久久97国产 | 快色av| 毛片视屏 | 黄色三级网站在线观看 | 久久久中文网 | 国产自偷自拍 | 性爱视频日本 | 91麻豆国产精品 | 18禁裸男晨勃露j毛免费观看 | 成人免费视频国产在线观看 | www婷婷av久久久影片 | 国产欧美一区二区三区精华液好吗 | 精品国产乱子伦一区二区 | 国产精品毛片一区视频播 | 日韩一区二区毛片 | 久久这里只精品 | 欧美91成人网 | 国产日韩欧美在线播放 | 亚洲欧美一区二区三区在线 | 96免费视频 | 最新中文字幕一区 | 午夜99| 亚洲免费av片 | 女人喷潮完整视频 | 蜜桃臀aⅴ精品一区二区三区 | 老司机深夜免费福利 | 国产精品老女人 | 最好看的电影2019中文字幕 | 葵司免费一区二区三区四区五区 | 日本一区二区在线看 | 真实乱偷全部视频 | 精品一区二区在线看 | 亚洲欧美精选 | 日韩精品字幕 | 亚洲熟妇丰满大屁股熟妇 | 欧美偷拍一区二区三区 | 欧美激情一二三 | 撸大师av | 伊人69| 亚洲天堂网在线视频 | 免费黄色看片网站 | 99久久人妻无码中文字幕系列 | 青青操视频在线观看 | 国产自在线拍 | 淫语对白| 九月婷婷丁香 | 欧美性猛交一区二区三区精品 | 免费看欧美黑人毛片 | 婷婷色在线视频 | 欧美人吸奶水吃奶水 | chinese中国性按摩hd | 国产一区二区三区精品在线观看 | 香蕉久久夜色精品 | 熟女熟妇伦久久影院毛片一区二区 | 精品乱码一区二区三区四区 | 欧美一区二区三区在线视频 | 久久精品国产99精品国产亚洲性色 | 久久久久久国产精品三级玉女聊斋 | 欧美一区二区三区免费 | 污污av | 日韩国产欧美一区二区 | 日韩av在线播放一区 | 丰满少妇被猛烈进入无码 | 欧美我不卡 | 狼人综合伊人 | 日本免费一区视频 | 极品色av | 黑人玩弄人妻一区二区三区 | 成人欧美一区二区三区小说 | 国产精品免费视频一区 | 手机av中文字幕 | 成人性生交大片免费看 | 69视频免费 | 成人日韩视频 | www在线观看免费视频 | 波多野结衣视频网站 | 男女午夜激情 | 男人的天堂av网站 | 爆操白虎|