日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久国色| 精品日韩| 亚洲区一 | 美女又爽又黄 | 亚洲天堂网站 | 手机av在线免费 | 蜜臀久久99精品久久久久久宅男 | 国产精品人妖 | 第五色婷婷 | 国产三级在线观看完整版 | 亚洲精品在线一区二区 | 又黄又色又爽的视频 | 久久aⅴ乱码一区二区三区 亚洲成人18 | 亚洲小说区图片区 | 成人欧美一区二区三区在线观看 | 午夜伦理一区二区 | 国产精品久久国产精麻豆96堂 | 青青青手机视频 | 精品国产三级a∨在线 | 亚洲精品字幕在线观看 | 黄色国产毛片 | 97成网| 欧美天天视频 | 蜜桃成人av | 中文字幕亚洲无线码在线一区 | 草草网址| 911精品国产一区二区在线 | 国产精品综合久久久 | 欧美日本一道 | 51成人做爰www免费看网站 | 天天碰天天摸 | 无码人妻一区二区三区免费n鬼沢 | ,国产精品国产三级国产 | 美女久久久久久久久 | 男人喷出精子视频 | 国产区久久| 欧美系列一区二区 | 台湾久久 | 国产九色91 | 欧美亚洲精品一区二区 | 91av手机在线 | 午夜视频在线免费观看 | 亚洲国产成人91porn | 久久久久久国产精品视频 | se在线观看 | 色婷久久| 久久精品一二区 | www.亚洲 | 欧美视频福利 | jzzijzzij亚洲成熟少妇在线播放 狠狠躁日日躁夜夜躁2022麻豆 | 蜜桃导航-精品导航 | 精品国产1区| 色男天堂 | 中文字幕乱码人妻无码久久 | 男女毛片视频 | 欧美在线观看视频 | av直播在线观看 | 青青成人| 好色婷婷 | 一级片在线免费 | 一区二区三区亚洲精品 | 免费在线亚洲 | 国产视频一区二区三区四区 | 最新日本中文字幕 | 欧美在线三级 | 91在线观看喷潮 | 精品国产一区在线观看 | 久久久综合av| 9色av | 久久激情av| www国产精品 | 大陆女明星乱淫合集 | 无码人妻精品一区二区 | 国产第一页第二页 | 九一天堂 | 国产4区 | 亚洲青春草 | 免费国产视频在线观看 | 欧美三级网 | www中文字幕 | 欧美一级色 | 夜夜爽av福利精品导航 | 日本在线不卡一区二区 | 色播开心网 | 国内精品久久久久久久影视简单 | 美景之屋电影免费高清完整韩剧 | 一级片在线免费播放 | 西西人体高清44rt·net | 日本欧美亚洲 | 深夜激情网 | 日本高清精品 | 日本久久高清视频 | 在线观看日韩国产 | 米奇影音 | 欧美偷拍精品 | 免费又黄又爽又色的视频 | 欧洲精品久久久久毛片完整版 | 亚洲字幕av一区二区三区四区 | 国产91综合一区在线观看 |