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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

怎么关闭eureka的服务_SpringCloud微服务踩坑系列之二

發布時間:2025/4/16 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么关闭eureka的服务_SpringCloud微服务踩坑系列之二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.關于Eureka和Config服務的logback.xml配置文件問題

注意:在eureka和config服務中,如果使用logback.xml配置文件,會導致在服務啟動的時候出現如下warn警告信息,尤其是config服務,更嚴重的會導致服務無法啟動.

2018-10-09 15:09:32.738 WARN 8176 --- [ost-startStop-1] c.n.c.sources.URLConfigurationSource : No URLs will be polled as dynamic configuration sources. 2018-10-09 15:09:34.113 WARN 8176 --- [ main] o.s.c.n.a.ArchaiusAutoConfiguration : No spring.application.name found, defaulting to 'application' 2018-10-09 15:09:34.113 WARN 8176 --- [ main] c.n.c.sources.URLConfigurationSource : No URLs will be polled as dynamic configuration sources. 2018-10-09 15:09:34.971 WARN 8176 --- [ main] c.n.eureka.cluster.PeerEurekaNodes : The replica size seems to be empty. Check the route 53 DNS Registry

二.關于"Process finished with exit code 0"的問題

在SpringBoot項目啟動時,控制臺中可能會出現"Process finished with exit code 0"這樣的日志信息,這樣的信息意味著你的程序正常執行完畢并退出。

可以科普一下exit code,在大部分編程語言中都適用.

exit code 0 表示程序執行成功,正常退出;

exit code 1 表示程序執行執行過程中遇到了某些問題或者錯誤,非正常退出.

在SpringBoot啟動時如果出現"Process finished with exit code 0",有可能是項目中沒有添加spring-boot-starter-web依賴包導致的.

解決方法,引入依賴:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>

三.RENEWALS ARE LESSER THAN THE THRESHOLD問題

啟動兩個client,過了一會,停了其中一個,訪問注冊中心時,界面上顯示了上面的警告信息:

Eureka server和client之間每隔30秒會進行一次心跳通信,告訴server,client還活著。由此引出兩個名詞:
Renews threshold:server期望在每分鐘中收到的心跳次數
Renews (last min):上一分鐘內收到的心跳次數。

前文說到禁止注冊server自己為client,不管server是否禁止,閾值(threshold)是1。client個數為n,閾值為1+2*n(此為一個server且禁止自注冊的情況)
如果是多個server,且開啟了自注冊,那么就和client一樣,是對于其他的server來說就是client,是要*2的

我開了兩個server,自注冊,相關數據如下

閾值:1+2*1
renews:
1)自注冊 2 + 2*1
2)非自注冊:2*1

Eurake有一個配置參數eureka.server.renewalPercentThreshold,定義了renews 和renews threshold的比值,默認值為0.85。當server在15分鐘內,比值低于percent,即少了15%的微服務心跳,server會進入自我保護狀態,Self-Preservation。在此狀態下,server不會刪除注冊信息,這就有可能導致在調用微服務時,實際上服務并不存在。
這種保護狀態實際上是考慮了client和server之間的心跳是因為網絡問題,而非服務本身問題,不能簡單的刪除注冊信息

stackoverflow上,有人給出的建議是:
1、在生產上可以開自注冊,部署兩個server
2、在本機器上測試的時候,可以把比值調低,比如0.49
3、或者簡單粗暴把自我保護模式關閉

eureka.server.enableSelfPreservation=false

四.TransportException: Cannot execute request on any known server問題

升級到新版的SpringCloud之后,當eureka注冊中心配置了security的依賴

<!--注意:SpringBoot項目遵循的是約定大于配置的原則,當此處添加了security的依賴后,就會自動啟用eureka的安全驗證功能,否則就不開啟--> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-security</artifactId> </dependency>

之后,可能會導致一些問題,比如就可能會導致在啟動eureka客戶端的時候產生"TransportException: Cannot execute request on any known server"異常,使得eureka客戶端無法連接注冊中心.原因是新版的security默認啟用了csrf檢驗,會對注冊到注冊中心的實例進行csrf攔截,所以在客戶端連接eureka注冊中心的時候,默認情況下會導致Cannot execute request on any known server問題

解決辦法:

1.在eureka服務端代碼中配置security的csrf檢驗為false; 2.客戶端中以用戶名密碼形式登錄:client:service-url:defaultZone: http://admin:syc@localhost:1001/eureka/@EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter {/*** 新版的security默認啟用了csrf檢驗,所以在客戶端連接eureka注冊中心的時候,默認情況下會導致 * Cannot execute request on any known server問題.* 解決辦法:* 1.在eureka服務端代碼中配置security的csrf檢驗為false;* 2.客戶端中以用戶名密碼形式登錄:* client:* service-url:* defaultZone: http://admin:syc@localhost:1001/eureka/*/@Overrideprotected void configure(HttpSecurity http) throws Exception {/*直接關閉crsf功能:http.csrf().disable();*//*對eureka的訪問放行*/http.csrf().ignoringAntMatchers("/eureka/**");super.configure(http);} }eureka:client:service-url:#defaultZone: http://localhost:1001/eureka/defaultZone: http://admin:syc@localhost:1001/eureka/

總結

以上是生活随笔為你收集整理的怎么关闭eureka的服务_SpringCloud微服务踩坑系列之二的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。