Spring Cloud 如何使用Eureka注冊服務 4.2.2


 

  要使用Eureka實現服務發現,需要項目中包含Eureka的服務端發現組件以及客戶端發現組件。

搭建Maven父工程

  創建一個Maven父工程xcservice-springcloud,並在工程的pom.xml中添加Spring Cloud的版本依賴等信息,如文件4-1所示。
  文件4-1 pom.xml
<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>
    <groupId>com.xc</groupId>
    <artifactId>xcservice-springcloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <!--Spring Boot的編譯插件 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

 搭建服務端工程

  在父工程xcservice-springcloud中,創建Maven子模塊xcservice-eureka-server作為服務端工程,該模塊是一個基礎的Spring Boot工程,其主要文件代碼的實現過程如下。
  (1)添加依賴。
  在pom.xml中添加Eureka Server的依賴,如文件4-2所示。
  文件4-2 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>com.xc</groupId>
        <artifactId>xcservice-springcloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.xc</groupId>
    <artifactId>xcservice-eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>xcservice-eureka-server</name>
    <description>服務端工程</description>

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

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

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

</project>

 

  (2)編寫配置文件。
  在配置文件中增加端口號等配置信息,如文件4-3所示。
  文件4-3 application.yml
server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  #server:
    #enable-self-preservation: false #關閉保護機制,以確保注冊中心可以將不可用的實例正確刪除

  上述代碼中,首先配置了端口號為8761,所有服務的實例都需要向此端口注冊。接下來配置了實例名為localhost。由於本項目是一個注冊中心,是不需要向自己注冊和檢索服務的,所以register-with-eureka和fetch-registry都需要設置為false。最后defaultZone中的地址是注冊中心的地址。


  (3)修改服務端Java代碼。
  在項目的引導類上添加注解@EnableEurekaServer,該注解用於聲明標注類是一個EurekaServer,如文件4-4所示。
  文件4-4 EurekaApplication.java
package com.xc.xcserviceeurekaserver;

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

/**
 * http://localhost:8761/
 */
@SpringBootApplication
@EnableEurekaServer
public class XcserviceEurekaServerApplication {

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

}

 

  (4)啟動應用,查看信息。
  完成上述配置后,啟動應用程序並在瀏覽器中訪問地址http://localhost:8761/即可看到Eureka的信息面板。

  可以看出,Eureka Server的信息頁面已經成功顯示,但此時“Instances currently registered with Eureka”下的顯示信息為“No instances available”,這表示該注冊中心還沒有注冊任何可用的實例。

搭建客戶端工程

  在父工程xcservice-springcloud中,創建Maven子模塊xcservice-eureka-user作為客戶端工程,該模塊也是一個基礎的Spring Boot工程,其主要文件代碼的實現過程如下。
  (1)添加依賴。在pom.xml中添加Eureka依賴,如文件4-5所示。
  文件4-5 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>com.xc</groupId>
        <artifactId>xcservice-springcloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.xc</groupId>
    <artifactId>xcservice-eureka-user</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>xcservice-eureka-user</name>
    <description>客戶端工程</description>

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

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

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

</project>

 

  (2)編寫配置文件。在配置文件中添加Eureka服務實例的端口號、服務端地址等信息,如文件4-6所示。
  文件4-6 application.yml
server:
  port:8000 # 指定該Eureka實例的端口號

eureka:
  instance:
    prefer-ip-address: true  # 是否顯示主機的IP
    #instance-id: ${spring.cloud.client.ipAddress}:${server.port} #將Status中的顯示內容也以“IP:端口號”的形式顯示
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/ # 指定Eureka服務端地址

spring:
  application:
    name: microservice-eureka-user # 指定應用名稱

 

  (3)修改客戶端Java代碼。
  在項目的引導類上添加注解@EnableEurekaClient,該注解用於聲明標注類是一個Eureka客戶端組件,如文件4-7所示。
  文件4-7 Application.java
package com.xc.xcserviceeurekauser;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableEurekaClient
@RestController
public class XcserviceEurekaUserApplication {

    @RequestMapping("/hello")
    public String home() {
        return "hello world!";
    }

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

}

 

  (4)啟動應用,查看信息。
  完成上述配置后,分別啟動服務器工程和客戶端工程,在瀏覽器中訪問地址http://local-host:8761/后,我們可以從Eureka的信息面板中看到注冊的服務信息,如圖4-5所示。
  

 


  從圖4-5中可以看出,服務已經成功注冊到了注冊中心,注冊后的服務就可以直接被其他服務調用了。 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM