本文會介紹幾種eureka 注冊中心服務(wù)下線的方式
目前創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、蘆淞網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
補(bǔ)充:在啟動eureka服務(wù)的時候發(fā)現(xiàn)控制臺有以下的輸出
由此猜想可以通過改接口下線服務(wù), 于是嘗試了一下
果然能從注冊中心中移除該實(shí)例
1. 直接停掉服務(wù)。
默認(rèn)情況下,如果Eureka Server在90秒沒有收到Eureka客戶的續(xù)約,它會將實(shí)例從其注冊表中刪除。但這種做法的不好之處在于, 客戶端已經(jīng)停止了運(yùn)行,但仍然在注冊中心的列表中。 雖然通過一定的負(fù)載均衡策略或使用熔斷器可以讓服務(wù)正常進(jìn)行,但有沒有方法讓注冊中心馬上知道服務(wù)已經(jīng)下線呢?
2.為了讓注冊中心馬上知道服務(wù)要下線, 可以向eureka 注冊中心發(fā)送delete 請求
格式為 /eureka/apps/{application.name}/
下面是下線一個hello-service的例子。
下圖是用postman 發(fā)送delete請求
值得注意的是,Eureka客戶端每隔一段時間(默認(rèn)30秒)會發(fā)送一次心跳到注冊中心續(xù)約。如果通過這種方式下線了一個服務(wù),而沒有及時停掉的話,該服務(wù)很快又會回到服務(wù)列表中。
所以,可以先停掉服務(wù),再發(fā)送請求將其從列表中移除。
3. 客戶端主動通知注冊中心下線
如果你的eureka客戶端是是一個spring boot應(yīng)用,可以通過調(diào)用以下代碼通知注冊中心下線。
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(); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
本文名稱:細(xì)說Springcloudeureka的幾種主動下線服務(wù)的方式
網(wǎng)頁URL:http://aaarwkj.com/article42/igiphc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、商城網(wǎng)站、域名注冊、網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)