Eureka 手動下線服務


前言

在微服務開發中,經常會在開發環境進行服務調試。我們將本地服務注冊到Eureke上,同時開發服務器上部署的服務也注冊到Eureka中,這時候我們調用服務,有的請求將會被路由到開發環境服務器上。而我們想要請求路由到本地的服務中,明明在本地服務中打了斷點,但是請求卻被路由到服務器上,導致本地調試很不方便。對於這種情況,我們只需要把服務器中注冊到Eureke中的服務下線,這樣,我們就可以在本地進行斷點調試了。

服務下線三種方式

1.直接kill服務

直接kill服務這種粗暴的方式,我們是不推薦的。由於Eureka客戶端和服務端是通過心跳進行續約的。這種心跳續約就會導致服務下線不及時,比如說,客戶端的心跳檢測剛剛結束,我們手動kill了服務。在下次心跳檢測開始之前,這個被kill的服務會一直存在服務列表中。這時候如果請求被路由到這個服務,就是導致服務調用失敗。

2.在Eureka客戶端中調用下線請求

在微服務開發中,我們通常都是采用springboot快速構建服務,我們可以在服務中開放一個接口,專門用來下線服務。


   
   
  
  
          
  1. @RestController
  2. public class HelloController {
  3.     
  4.     @RequestMapping(value = "/offline", method = RequestMethod.GET)
  5.     public void offLine(){
  6.         DiscoveryManager.getInstance().shutdownComponent();
  7.     }   
  8. }

通過調用上面的接口,就可以手動實現服務下線。但是在實際開發中,我們沒有必要為了服務下線,特意在服務中開放一個下線接口。

3.直接向注冊中心發送下線請求

上面說的兩種方式都有點不實用,或者有其他問題。這里介紹一種我們在開發中用的比較多的方式。為了讓注冊中心馬上知道服務要下線, 我們可以向eureka 注冊中心發送delete 請求。具體請求的格式如下

http://你的注冊中心zone/apps/你的實例名稱/你的實例地址加端口
  
  
 
 
         

比如我們要下線下面的PTC,只需要執行 http://xxx.xxx.xxx.xxx:8761/eureka/apps/PTC/iZ2rderl3j12llZ:ptc:2703請求就行了。需要注意的一點是,上面的請求只是暫時的下線了PTC。如果PTC服務本身沒有下線,那么待會客戶端續約的時候就會重新續約。所以我們在發送請求之前需要先把服務停掉,避免服務的重新續約。

 通常Eureka是設置了密碼的,那么我們直接請求是不行的,需要帶上認證信息。postman中可以帶上賬號密碼信息的,當然我們也可以直接在請求URL中直接帶上認證信息。比如下面的請求http://username:password@xxx.xxx.xxx.xxx:8761/eureka/apps/PTC/iZ2rderl3j12llZ:ptc:2703

 

 


免責聲明!

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



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