SpringCloud快速开始 | 服务注册与发现Eureka(一)Greenwich版本

源码地址

原文地址: 莫问博客

一、springcloud的版本说明:

springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布。所以springcloud不方便使用版本号来管理,而是使用版本名。以避免和子项目版本号的冲突。由于实际项目中使用过F版本和G版本,并且目前的最新版本也是G版本,出于稳定性考虑,接下来的教程cloud均采用Greenwich.SR1,spingboot使用2.1.4.RELEASE版本

二、创建服务注册中心

2.1、创建一个maven主工程spingcloud-study,注意文中使用的代码均是本人整理之后的,所以启动的时候注意注释掉其他服务,也可以直接下载项目源码进行学习,pom文件如下

<?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>

    <groupId>spingcloud</groupId>
    <artifactId>spingcloud-study</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>eureka</module>
        <module>user-service</module>
        <module>external-api-service</module>
        <module>config-server</module>
        <module>admin-server</module>
    </modules>

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

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

    <dependencies>


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

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



        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </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>

</project>

2.2、创建eureka工程,然后在该工程下创建eureka-server1、eureka-server2、eureka-server3,eureka工程的添加依赖如下,这样它的子项目都有了该依赖

<?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">
    <parent>
        <artifactId>spingcloud-study</artifactId>
        <groupId>spingcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka</artifactId>
    <packaging>pom</packaging>
    <modules>
        <module>eureka-server1</module>
        <module>eureka-server2</module>
        <module>eureka-server3</module>
    </modules>

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

2.3、三个eureka子工程的application.yml文件如下,注意这里的eureka.client.serviceUrl.defaultZone配置项是在集群下,eureka服务互相注册发现,比如eureka-server1的配置就是另外两个eureka的地址

server:
  port: 7081
spring:
  application:
    name: eureka-server #给你的微服务应用起一名字

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:7082/eureka/,http://localhost:7083/eureka/

2.4、创建启动类,加入注解@EnableEurekaServer,以eureka-server1为例,启动类为

package com.lxd.eureka;

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

/**
 * @author liuxiaoding
 * @data 2019/7/4
 */
@EnableEurekaServer
@SpringBootApplication
public class Eureka_1Application {
    public static void main(String[] args) {
        SpringApplication.run(Eureka_1Application.class,args);
    }
}

2.5、依次启动eureka-server1、eureka-server2、eureka-server3,访问 http://localhost:7081/ ,如下图,三个rureka已经互相注册了

三、创建服务提供者,注册到eureka中

3.1、创建user-service工程,创建user-service1、user-service2子工程,无需加入依赖,因为我们在springcloud-study的父依赖中已经加入了

3.2、在启动类中加入@EnableEurekaClient注解,以user-service1为例

package com.lxd.user;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * @author liuxiaoding
 * @data 2019/7/4
 */
@EnableEurekaClient
@SpringBootApplication
public class User_1Applcation {
    public static void main(String[] args) {
        SpringApplication.run(User_1Applcation.class,args);
    }

}

Application.yml文件如下

spring:
  application:
    name: user-service
server:
  port: 8002
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:7081/eureka/,http://localhost:7082/eureka/,http://localhost:7083/eureka/  

3.3依次启动user-service1、user-service2,浏览器打开 http://localhost:7081/ ,如下,该服务已注册到注册中心

2.6 结束,如有问题可以留言


版权声明:本文为qw463800202原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。