01 服务注册与发现-Eureka

二次信任 提交于 2019-11-28 20:10:49

本博客记录程序员DD的spring cloud Dalston版教程学习笔记
Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。
一、准备工作:
01.创建一个父项目springcloudlearn用于管理系列教程的项目。
在这里插入图片描述
02.删除除pom文件外的所有文件
在这里插入图片描述
03.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 https://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>1.5.4.RELEASE</version>
        <relativePath/>
    </parent>
    <packaging>pom</packaging>
    <groupId>com.star</groupId>
    <artifactId>springcloudlearn</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloudlearn</name>
    <description>spring cloud学习demo</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>


</project>

04.将父项目install成jar包到本地仓库,以供后续的子模块依赖
在这里插入图片描述
05.添加一个eureka-commons模块用于放置一些后续的公共对象和工具
在这里插入图片描述
06.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>
    <!--直接引用父类的jar-->
    <parent>
        <groupId>com.star</groupId>
        <artifactId>springcloudlearn</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.star</groupId>
    <artifactId>eureka-commons</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-commons</name>
    <description>eureka公共类</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--spring boot 依赖基本jar包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
    </dependencies>


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

</project>

07.在父项目的pom文件中添加eureka-commons模块

 	<modules>
        <!--00 eureka-commons公共模块-->
        <module>eureka-commons</module>
    </modules>

08.将 eureka-commons项目install成jar包到本地仓库,以供后续的子模块依赖,方法与父项目一样。
二、Spring Cloud Eureka项目搭建
1.在父项目中新建模块eureka-server,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.star</groupId>
        <artifactId>springcloudlearn</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.star</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-server</name>
    <description>服务治理中心</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--基础jar-->
        <dependency>
            <groupId>com.star</groupId>
            <artifactId>eureka-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--eureka依赖jar包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>

    </dependencies>

    <!--spring-cloud依赖-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</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>

2.通过@EnableEurekaServer注解启动服务注册中心

/**    
* <p>Description: 启动eureka-server服务 </p>
* <p>version 1.0.0 </p>
 * <p>通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话</p>
* @author likai
* @date 2019/8/28 18:08   
*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

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

}

3.配置文件application.properties配置

#服务名称
spring.application.name=eureka-server
#端口
server.port=8000
#在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为
eureka.instance.hostname=localhost
#不在注册中心注册自己
eureka.client.register-with-eureka=false
#表示自己就是注册中心,不需要检索服务,只需要维护服务实例
eureka.client.fetch-registry=false

4.启动服务,通过浏览器访问http://localhost:8000/访问Eureka的管理页面
在这里插入图片描述
三 创建服务提供方模块eureka-client
1.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.star</groupId>
        <artifactId>springcloudlearn</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.star</groupId>
    <artifactId>eureka-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-client</name>
    <description>服务提供者</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--基础jar-->
        <dependency>
            <groupId>com.star</groupId>
            <artifactId>eureka-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--eureka依赖jar包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>

    </dependencies>

    <!--spring-cloud依赖-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</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>

2.在应用主类中加上@EnableDiscoveryClient注解

/**    
* <p>Description: 启动eureka-server服务 </p>
* <p>version 1.0.0 </p>
 * <p>通过@EnableDiscoveryClient注解激活Eureka中的DiscoveryClient实现,这样才能实现Controller中对服务信息的输出</p>
* @author likai
* @date 2019/8/28 18:08   
*/
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {

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

}

3.配置文件application.properties配置

#指定注册到eureka server上的服务名称
spring.application.name=eureka-client
#端口
server.port=8001
#指定eureka server通信地址
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
# 是否注册IP到eureka server,如不指定或设为false,那就会注册主机名到eureka server
eureka.client.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.application.name}:${random.int}}


4.启动eureka-client项目
观察eureka-server后台日志:
在这里插入图片描述
可以看到服务提供者已经注册到服务治理中心了,通过管理界面观察,eureka-client服务被注册成功了
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!