使用 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

源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章