SpringCloud學習筆記【三】:Actuator微服務資訊完善+Discovery獲取註冊資訊
阿新 • • 發佈:2020-11-19
目錄
本篇要點
- 介紹Eureka管理介面主機名和訪問ip資訊提示修改。
- 介紹獲取當前註冊中心服務列表,以及獲取每個服務的例項列表的方法。
Actuator微服務資訊完善
前提
除了eureka依賴之外,確保已經引入以下依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
主機名稱:服務名稱修改
我們回顧一下:當我們訪問Eureka的後臺管理頁面時,註冊的客戶端的Status是這樣的:筆記本+服務名+埠:
如果我們有特殊的定製需求,其實Status的資訊可以通過eureka.instance.instance-id
自定義:
eureka: client: #表示是否將自己註冊進EurekaServer預設為true。 register-with-eureka: true #是否從EurekaServer抓取已有的註冊資訊,預設為true。單節點無所謂,叢集必須設定為true才能配合ribbon使用負載均衡 fetchRegistry: true service-url: #單機版 defaultZone: http://localhost:7001/eureka instance: instance-id: payment8002
修改結果顯示如下:
顯示IP地址
在啥也沒有配置的時候,我們需要點選Status中的服務連結,才會顯示諸如:http://desktop-qfk0mbg:8002/actuator/info
的連結地址,如果我們想讓滑鼠懸浮顯示IP地址,我們也是有辦法的:
eureka:
#..省略
instance:
instance-id: payment8001
#訪問路徑可以顯示IP地址
prefer-ip-address: true
再次測試,url變為:http://172.28.11.140:8002/actuator/info
。
Eureka服務發現
對於註冊進Eureka的微服務,可以通過服務發現來獲得該服務的資訊,這裡以Payment8001模組為例演示具體步驟。
注入DiscoveryClient,獲取資訊
@Slf4j
@RestController
public class PaymentController {
@Resource
private DiscoveryClient discoveryClient;
@GetMapping("/payment/discovery")
public Object discovery(){
Map<String,Object> map = new HashMap<>();
List<String> services = discoveryClient.getServices();
services.forEach(log::info);
map.put("獲取的服務列表",services);
List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
List<String> instanceList = new ArrayList<>();
instances.forEach(x -> {
log.info(x.getServiceId() + "\n" + x.getHost() + "\n" + x.getPort() + "\n" + x.getUri());
instanceList.add("ServiceId : " + x.getServiceId() + " Host : " + x.getHost() + " Port : " + x.getPort() + " uri : " + x.getUri());
});
map.put("服務cloud-payment-service上的例項",instanceList);
return map;
}
}
主程式上加上@EnableDiscoveryClient
@EnableEurekaClient
@SpringBootApplication
@EnableDiscoveryClient
public class Payment8001Application {
public static void main(String[] args) {
SpringApplication.run(Payment8001Application.class,args);
}
}
測試
訪問:http://localhost:8001/payment/discovery
我們可以成功獲得服務列表資訊,以及某個服務的所有例項資訊。
原始碼下載
本系列文章為《尚矽谷SpringCloud教程》的學習筆記【版本稍微有些不同,後續遇到bug再做相關說明】,主要做一個長期的記錄,為以後學習的同學提供示例,程式碼同步更新到Gitee:https://gitee.com/tqbx/spring-cloud-learning,並且以標籤的形式詳細區分每個步驟,這個系列文章也會同步更新,如果內容有誤,還望評論區批評指正。