1. 程式人生 > >使用 Eureka 實現服務註冊與發現

使用 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 進行專案的初始化

訪問http://start.spring.io/ 進行專案的初始化。我們將該專案命名為micro-weather-eureka-server

eurake-start

更改配置

根據下面兩個部落格的指引來配置,加速專案的構建。

啟用 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 管理介面。

eurake-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 上看到這兩個實體的資訊。

eurake-client

原始碼