使用 Eureka 實現服務注冊與發現
Eureka 是 Netflix 出品的用於實現服務注冊和發現的工具。 Spring Cloud 集成了 Eureka,並提供了開箱即用的支持。其中, Eureka 又可細分為 Eureka Server 和 Eureka Client。
本例子將演示如何通過 Spring Cloud Eureka 來快速實現服務的注冊和發現。
開發環境
- Gradle 4.0
- Spring Boot 2.0.0.M3
- Spring Cloud Netflix Eureka Server Finchley.M2
- Spring Cloud Netflix Eureka Client Finchley.M2
從 Spring Initializr 進行項目的初始化
訪問https://start.spring.io/ 進行項目的初始化。我們將該項目命名為micro-weather-eureka-server
。
更改配置
根據下麵兩個博客的指引來配置,加速項目的構建。
- Gradle Wrapper 引用本地的發布包 : https://waylau.com/change-gradle-wrapper-distribution-url-to-local-file/
- 使用Maven鏡像 : https://waylau.com/use-maven-mirrors/
啟用 Eureka Server
為啟用 Eureka Server ,在 Application 上增加@EnableEurekaServer
注解即可。
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
修改項目配置
修改 application.properties,增加如下配置。
server.port: 8761
eureka.instance.hostname: localhost
eureka.client.registerWithEureka: false
eureka.client.fetchRegistry: false
eureka.client.serviceUrl.defaultZone: https://${eureka.instance.hostname}:${server.port}/eureka/
其中:
- server.port: 指明了應用啟動的端口號
- eureka.instance.hostname: 應用的主機名稱
- eureka.client.registerWithEureka: 值為
false
意味著自身僅作為服務器,不作為客戶端 - eureka.client.fetchRegistry: 值為
false
意味著無需注冊自身 - eureka.client.serviceUrl.defaultZone: 指明了應用的URL
啟動 Eureka Server
啟動應用,訪問https://localhost:8761/,可以看到 Eureka Server 自帶的 UI 管理界麵。
創建 Eureka Client
我們在micro-weather-eureka-server
基礎上,將創建一個micro-weather-eureka-client
作為客戶端,並演示如何讓將自身向注冊服務器進行注冊,讓其可以其他服務都調用。
更改配置
增加如下配置:
dependencies {
//...
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
//...
}
一個最簡單的 Eureka Client
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class Application {
@RequestMapping("/hello")
public String home() {
return "Hello world";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
其中@EnableDiscoveryClient
啟用了服務發現的功能,隻要 Eureka Client 啟動了,就能被 Eureka Server 所感知。
項目配置:
spring.application.name: micro-weather-eureka-client
eureka.client.serviceUrl.defaultZone: https://localhost:8761/eureka/
運行
分別在 8081 和 8082 上啟動了客戶端示例。
java -jar micro-weather-eureka-client-1.0.0.jar --server.port=8081
java -jar micro-weather-eureka-client-1.0.0.jar --server.port=8082
可以在 Eureka Server 上看到這兩個實體的信息。
源碼
- 本章節源碼,見https://github.com/waylau/spring-cloud-tutorial samples 目錄下的
micro-weather-eureka-server
和micro-weather-eureka-client
。 - 原文同步至https://waylau.com/eureke-server-register-and-server-discovery/
最後更新:2017-09-18 00:04:42