Spring Cloud服務發現元件Eureka

南瓜慢說發表於2023-01-20

簡介

Netflix Eureka是微服務系統中最常用的服務發現元件之一,非常簡單易用。當客戶端註冊到Eureka後,客戶端可以知道彼此的hostname和埠等,這樣就可以建立連線,不需要配置。

Eureka 服務端

新增Maven依賴:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

新增註解@EnableEurekaServer到Spring Boot的啟動類中:

package com.pkslow.cloud.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServer {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer.class, args);
    }
}

配置埠號:

server:
  port: 8761
eureka:
  client:
    fetch-registry: false
    register-with-eureka: false

然後啟動服務,在瀏覽器中開啟: http://localhost:8761/

我們就可以看到服務端的資訊了,但目前還沒客戶端註冊。

Eureka客戶端

只有註冊到Eureka服務端的服務,才能被其它服務發現。

新增依賴如下:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

新增註解@EnableEurekaClient

package com.pkslow.cloud.rest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class RestService {
    public static void main(String[] args) {
        SpringApplication.run(RestService.class, args);
    }
}

把服務端的地址配置好:

spring.application.name=rest-service
server.port=8081
pkslow.admin=larry|18|admin@pkslow.com
eureka.client.service-url.defaultZone: http://localhost:8761/eureka
eureka.instance.prefer-ip-address=true
management.endpoints.web.exposure.include=*

注意這個spring.application.name是很關鍵的,以它為名字註冊到Eureka。

啟動該服務,並重新整理Eureka服務端的頁面:

就可以看到有服務註冊上來了。

程式碼

程式碼請看GitHub: https://github.com/LarryDpk/p...

相關文章