SpringCloud服務如何在Eureka安全優雅的下線


原文:https://www.cnblogs.com/yangzhilong/p/7161941.html

 

如果直接KILL SpringCloud的服務,因為Eureka采用心跳的機制來上下線服務,會導致服務消費者調用此已經kill的服務提供者然后出錯,處理這種情況有2中方案。

一、利用Spring Boot Actuato的管理端點(推薦

1、pom中引用Actuato

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

2、properties中添加如下內容

復制代碼
#啟用shutdown
endpoints.shutdown.enabled=true
#禁用密碼驗證
endpoints.shutdown.sensitive=false
# 禁用actuator管理端鑒權
management.security.enabled=false

# 開啟重啟支持
endpoints.restart.enabled=true
復制代碼

如果只允許本機訪問,可以添加如下屬性

#(只允許本機訪問)
server.address=localhost

3、在服務器上用curl發送post請求到pause.

curl -X POST http://localhost:8080/pause

此時eurake上該服務被標記問下線,但該服務其實還是可以正常訪問的,當client還未及時更新本地Instances緩存時,依然不會中斷服務。當所有client都感知到該服務DOWN后就不會再往該服務發請求了。

4、在服務器上利用curl發送shutdown命令

curl -X POST http://localhost:8080/shutdown

或者

curl -d "" http://localhost:8080/shutdown

 

二、利用Eureka的rest管理端點下線服務

eureka界面注冊的服務:

 

 發送DELETE的Restfull請求

對照關系看上面的2張圖。

 注意:由於cloud服務是心跳檢測,所有在eureka進行DELETE后要快速的停止服務,否則服務可能會被重新注冊上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM