使用 Eureka 實現服務註冊與發現
阿新 • • 發佈:2018-11-10
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 進行專案的初始化
訪問http://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: http://${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
啟動應用,訪問http://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: http://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/