細(xì)說(shuō)Springcloud eureka的幾種主動(dòng)下線服務(wù)的方式
本文會(huì)介紹幾種eureka 注冊(cè)中心服務(wù)下線的方式
補(bǔ)充:在啟動(dòng)eureka服務(wù)的時(shí)候發(fā)現(xiàn)控制臺(tái)有以下的輸出

由此猜想可以通過(guò)改接口下線服務(wù), 于是嘗試了一下

果然能從注冊(cè)中心中移除該實(shí)例

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

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

值得注意的是,Eureka客戶端每隔一段時(shí)間(默認(rèn)30秒)會(huì)發(fā)送一次心跳到注冊(cè)中心續(xù)約。如果通過(guò)這種方式下線了一個(gè)服務(wù),而沒(méi)有及時(shí)停掉的話,該服務(wù)很快又會(huì)回到服務(wù)列表中。
所以,可以先停掉服務(wù),再發(fā)送請(qǐng)求將其從列表中移除。
3. 客戶端主動(dòng)通知注冊(cè)中心下線
如果你的eureka客戶端是是一個(gè)spring boot應(yīng)用,可以通過(guò)調(diào)用以下代碼通知注冊(cè)中心下線。
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();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)簡(jiǎn)易支付寶網(wǎng)頁(yè)支付功能
小編最近實(shí)現(xiàn)一個(gè)功能基于springboot程序的支付寶支付demo,非常不錯(cuò)適合初學(xué)者入門學(xué)習(xí)使用,今天把SpringBoot實(shí)現(xiàn)簡(jiǎn)易支付寶網(wǎng)頁(yè)支付功能的示例代碼分享給大家,感興趣的朋友參考下吧2021-10-10
SpringBoot統(tǒng)一api返回風(fēng)格的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot統(tǒng)一api返回風(fēng)格的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
java -jar指定端口或配置文件啟動(dòng)jar問(wèn)題
這篇文章主要介紹了java -jar指定端口或配置文件啟動(dòng)jar問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Java多線程Thread基礎(chǔ)學(xué)習(xí)
每一個(gè)正在執(zhí)行的程序都是一個(gè)進(jìn)程,資源只有一塊,所以在同一時(shí)間段會(huì)有多個(gè)程序同時(shí)執(zhí)行,但是在一個(gè)時(shí)間點(diǎn)上,只能由一個(gè)程序執(zhí)行,多線程是在一個(gè)進(jìn)程的基礎(chǔ)之上的進(jìn)一步劃分,需要的朋友可以參考下2023-04-04
SpringBoot之HttpWebServiceMessageSenderBuilder用法詳解
這篇文章主要介紹了SpringBoot之HttpWebServiceMessageSenderBuilder用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
java 運(yùn)行報(bào)錯(cuò)has been compiled by a more recent version of the J
java 運(yùn)行報(bào)錯(cuò)has been compiled by a more recent version of the Java Runtime (class file version 54.0)2021-04-04
Springmvc自定義類型轉(zhuǎn)換器實(shí)現(xiàn)步驟
這篇文章主要介紹了Springmvc自定義類型轉(zhuǎn)換器實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Java中Integer.valueOf,parsetInt() String.valueOf的區(qū)別和結(jié)果代碼解析
本文通過(guò)代碼給大家講解了JAVA中Integer.valueOf, parsetInt() String.valueOf的區(qū)別和結(jié)果,需要的朋友可以參考下2018-05-05

