細說Springcloud eureka的幾種主動下線服務的方式
本文會介紹幾種eureka 注冊中心服務下線的方式
補充:在啟動eureka服務的時候發(fā)現控制臺有以下的輸出

由此猜想可以通過改接口下線服務, 于是嘗試了一下

果然能從注冊中心中移除該實例

1. 直接停掉服務。
默認情況下,如果Eureka Server在90秒沒有收到Eureka客戶的續(xù)約,它會將實例從其注冊表中刪除。但這種做法的不好之處在于, 客戶端已經停止了運行,但仍然在注冊中心的列表中。 雖然通過一定的負載均衡策略或使用熔斷器可以讓服務正常進行,但有沒有方法讓注冊中心馬上知道服務已經下線呢?
2.為了讓注冊中心馬上知道服務要下線, 可以向eureka 注冊中心發(fā)送delete 請求
格式為 /eureka/apps/{application.name}/
下面是下線一個hello-service的例子。

下圖是用postman 發(fā)送delete請求

值得注意的是,Eureka客戶端每隔一段時間(默認30秒)會發(fā)送一次心跳到注冊中心續(xù)約。如果通過這種方式下線了一個服務,而沒有及時停掉的話,該服務很快又會回到服務列表中。
所以,可以先停掉服務,再發(fā)送請求將其從列表中移除。
3. 客戶端主動通知注冊中心下線
如果你的eureka客戶端是是一個spring boot應用,可以通過調用以下代碼通知注冊中心下線。
DiscoveryManager.getInstance().shutdownComponent();
例子如下,
@RestController
public class HelloController {
@Autowired
private DiscoveryClient client;
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String index() {
java.util.List<ServiceInstance> instances = client.getInstances("hello-service");
return "Hello World";
}
@RequestMapping(value = "/offline", method = RequestMethod.GET)
public void offLine(){
DiscoveryManager.getInstance().shutdownComponent();
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot之HttpWebServiceMessageSenderBuilder用法詳解
這篇文章主要介紹了SpringBoot之HttpWebServiceMessageSenderBuilder用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
java 運行報錯has been compiled by a more recent version of the J
java 運行報錯has been compiled by a more recent version of the Java Runtime (class file version 54.0)2021-04-04
Java中Integer.valueOf,parsetInt() String.valueOf的區(qū)別和結果代碼解析
本文通過代碼給大家講解了JAVA中Integer.valueOf, parsetInt() String.valueOf的區(qū)別和結果,需要的朋友可以參考下2018-05-05

