1. 程式人生 > >SpringCloud微服務實戰之服務治理Eureka(單節點)

SpringCloud微服務實戰之服務治理Eureka(單節點)

Euraka是NetFlix微服務套件中的一部分,它基於Netflix Eureka做了二次封裝,主要負責完成微服務架構中的服務治理和服務發現功能。

示例:

一、Eureka搭建服務註冊
1、建立maven專案SpringCloud-EurekaServer
這裡寫圖片描述
2、修改pom.xml檔案,pom中新增Euraka依賴jar包。

<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.spring</groupId> <artifactId>SpringCloud-EurekaServer</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>SpringCloud-EurekaServer</name> <url
>
http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId
>
spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</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>

3、建立application.propertises檔案

server.port=8888

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
  • server.port:Eureka服務註冊埠。
  • eureka.client.register-with-eureka:設定為false,代表不向註冊中心註冊自己。
  • eureka.client.fetch-registry:設定為false,代表不去檢索服務。

    由於該註冊中心還沒註冊任何服務,所以Instances currently registered with Eureka欄為“No instances available”。

二、在服務註冊中心註冊helloService服務

1、建立Maven專案SpringCloud-Service
這裡寫圖片描述

2、修改pom.xml,新增Euraka和SpringBoot依賴

<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.spring</groupId>
  <artifactId>SpringCloud-Service</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SpringCloud-Service</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
  </properties>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

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

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

    <dependencyManagement>
        <dependencies>
            <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        </dependencies>
    </dependencyManagement>
</project>

3、新增application.propertises檔案

server.port=9999

spring.application.name=helloService
eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka/
  • server.port:helloService服務埠。
  • spring.application.name:向服務註冊中心註冊的服務名。
  • eureka.client.serviceUrl.defaultZone:eureka服務註冊中心Url。

4、實現HelloServiceController

package com.spring.springcloud.rest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloServiceController {

    @Autowired
    private DiscoveryClient client;

    @RequestMapping(value="/hello",method=RequestMethod.GET)
    public String greeting(){

        ServiceInstance si = client.getLocalServiceInstance();

        return "hello";
    }
}

5、最後向Application主類中添加註解@EnableDiscoveryClient,用於啟用Eureka中的EnableDiscoveryClient實現。

package com.spring.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

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

}

執行HelloService註冊服務,啟動成功之後,訪問註冊中心:http://localhost:8888/

這裡寫圖片描述

此時我們看見helloService已經成功註冊。