網頁

2019/6/21

Spring Cloud 建立 Spring Cloud Netflix Eureka Server

本篇介紹如何使用Spring Boot建立Spring Cloud NetFlix Eureka Server。

請先參考Spring Cloud Netflix Eureka簡介

本範例使用的IDE為Eclipse版本為2019-03

Spring Cloud版本為Greenwich.SR1 (Service Release1)


首先用Eclipse STS工具建立一個Spring Boot Starter專案



Project Dependencies選擇Eureka Server



建立好的專案目錄結構如下。



如果專案的pom.xml出現未知的紅色叉叉錯誤,請參考Eclipse Maven pom.xml Maven Configuration Problem: Unknown來解決。

專案的pom.xml內容如下。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.abc</groupId>
    <artifactId>spring-cloud-eureka-server-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-cloud-eureka-server-demo</name>
    <description>Eureka Server Demo</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


開啟SpringBootApplcation類別,也就是本範例的SpringCloudEurekaServerDemoApplication,然後在類別前加上@EnableEurekaServer

SpringCloudEurekaServerDemoApplication

package com.abc.demo;

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

@EnableEurekaServer
@SpringBootApplication
public class SpringCloudEurekaServerDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaServerDemoApplication.class, args);
    }

}

加上@EnableEurekaServer注釋的Spring Boot應用程式即會成為Eureka Server,也就是服務註冊中心,每個Eureka Client向其註冊。

後在專案的預設配置檔application.properties要設定以下。
本範例改以yml格式來設定,也就是application.yml

application.yml

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      default-zone: http://${eureka.instance.hostname}:${server.port}/eureka/ ##Eureka Server的位址

spring.application.name設定服務(應用程式)的名稱。
eureka.instance.hostname指定Eureka Server主機位址。
server.port設定服務的port號。
eureka.client.register-with-eureka設定是否把自己註冊到Eureka Server,因為本身就是Eureka Server,所以設為false
eureka.client.fetch-registry設定是否從Eureka Server取得註冊資訊,因為本身就是Eureka Server,所以設為false
eureka.client.service-url.default-zone設定Eureka Server的位址,也是Eureka Client要向Eureka Server註冊或查詢其他服務的位址。


完成以上設定後,便可以啟動專案,然後打開瀏覽器在位址欄輸入http://localhost:8761/,就會進到Eureka Server的UI畫面。

因為目前沒有任何Eureka Client向其註冊,所以下面Instances currently registered with Eureka(已註冊的服務實例)是空的。



接著參考建立 Spring Cloud Netflix Eureka Client

把建好的Eureka Client專案啟動。

啟動後刷新Eureka UI的畫面,便可以看到Eureka Client已向Eureka Server註冊。服務名稱為Eureka Client專案在application.yml中的spring.application.name的值。



到此便完成了一個Eureka Server服務註冊中心,與一個向Eureka Server註冊的Eureka Client服務實例。

如果本篇有幫助到您,幫忙點一下廣告支持,感恩。


參考:

沒有留言:

張貼留言