javascript
SpringCloud2020 学习笔记(十五)Spring Cloud Eureka 自我保护机制 关闭
SpringCloud2020 學習筆記(十五)Spring Cloud Eureka 自我保護機制
- 我使用spring boot 2.2.2
- 我使用spring cloud Hoxton.SR1
- 我使用spring cloud alibaba 2.1.0.RELEASE
- 一.說人話就是
- 二.官方對于自我保護機制的定義:
- 三.自我保護機制的工作機制是:
- 四.自我保護開關
- 五.重啟測試
- 六.生產環境建議不要關閉自我保護
我使用spring boot 2.2.2
我使用spring cloud Hoxton.SR1
我使用spring cloud alibaba 2.1.0.RELEASE
為什么使用這個三個版本,是有講究的;spring boot 2.2.2,spring cloud Hoxton.SR1,spring cloud alibaba 2.1.0.RELEASE
一.說人話就是
eureka關閉了自我保護機制后,遇到網絡波動等不可控因素導致微服務心跳沒及時響應時,會立即從eureka中剔除微服務,相反,eureka打開了自我保護機制,微服務還能有時間緩沖一下,待心跳從新連接上后,繼續提供服務
二.官方對于自我保護機制的定義:
自我保護模式正是一種針對網絡異常波動的安全保護措施,使用自我保護模式能使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)自我保護機制,默認打開狀態,建議生產環境打開此配置。
在eureka服務端操作
server:#關閉自我保護機制,保證不可用服務被及時踢除enable-self-preservation: false#續期時間,即掃描失效服務的間隔時間(缺省為60*1000ms)eviction-interval-timer-in-ms: 2000完整yml配置
server:port: 7001eureka:instance:#eureka服務端的實例名稱#hostname: localhosthostname: eureka7001.comclient:#false表示不向注冊中心注冊自己。register-with-eureka: false#false表示自己端就是注冊中心,我的職責就是維護服務實例,并不需要去檢索服務fetch-registry: falseservice-url:#設置與Eureka Server交互的地址查詢服務和注冊服務都要依賴這個地址#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/#單機就是7001自己#defaultZone: http://eureka7001.com:7001/eureka/#集群指向其它eurekadefaultZone: http://eureka7002.com:7002/eureka/server:#關閉自我保護機制,保證不可用服務被及時踢除enable-self-preservation: false#續期時間,即掃描失效服務的間隔時間(缺省為60*1000ms)eviction-interval-timer-in-ms: 2000在eureka客戶端操作
#Eureka客戶端向服務端發送心跳的時間間隔,單位為秒(默認是30秒)lease-renewal-interval-in-seconds: 1#Eureka服務端在收到最后一次心跳后等待時間上限,單位為秒(默認是90秒),超時將剔除服務lease-expiration-duration-in-seconds: 2完整yml配置文件
server:port: 8001spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSource # 當前數據源操作類型driver-class-name: org.gjt.mm.mysql.Driver # mysql驅動包url: jdbc:mysql://localhost:3306/springcloud2020?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername: rootpassword: rootmybatis:mapperLocations: classpath:mapper/*.xmltype-aliases-package: cn.cookily.springcloud.entities # 所有Entity別名類所在包eureka:client:#表示是否將自己注冊進eurekaServer 默認為trueregister-with-eureka: true#是否從eurekaServer抓取已有的注冊信息,默認為true,單節點無所謂,集群必須設置為true才能配合ribbon使用負載均衡fetch-registry: trueservice-url:#單機版#defaultZone: http://localhost:7001/eureka# 集群版defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eurekainstance:instance-id: payment8001 #注冊中心看到的實例名prefer-ip-address: true #訪問路徑可以顯示IP地址#Eureka客戶端向服務端發送心跳的時間間隔,單位為秒(默認是30秒)lease-renewal-interval-in-seconds: 1#Eureka服務端在收到最后一次心跳后等待時間上限,單位為秒(默認是90秒),超時將剔除服務lease-expiration-duration-in-seconds: 2五.重啟測試
1.先啟動eureka7001
2.在啟動payment8001
3.我們人為模擬下payment8001失聯(我們直接關閉這個服務)
六.生產環境建議不要關閉自我保護
項目地址: https://github.com/cookily/cloud2020.git
總結
以上是生活随笔為你收集整理的SpringCloud2020 学习笔记(十五)Spring Cloud Eureka 自我保护机制 关闭的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7多重引导 linux,如何在Li
- 下一篇: gradle idea java ssm