SpringCloud Eureka服务和注册实现(单机版)

一:主Maven项目创建

先创建一个maven工程,采用多模块结构,删除多余文件,结构如下:

|_springcloud
   |_eureka-client
   |_eureka-server
   |_pom.xml

在这里插入图片描述
主Maven 的 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>
    <groupId>com.springcloud</groupId>
    <artifactId>springcloud-hx</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>springcloud-hx</name>
    <description>Demo project for Spring Boot</description>
    <packaging>pom</packaging>
    <modules>
        <module>eureka-client</module>
        <module>eureka-server</module>
        <module>springcloud-learn</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.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>
        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
    </properties>

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

    <!--供子服务调用的公共依赖-->
    <dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>RELEASE</version>
        <scope>test</scope>
    </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
   <!-- <build>
        <plugins>
            &lt;!&ndash; jdk版本号 &ndash;&gt;
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>-->
</project>

二:创建 Eureka Server 服务注册中心

创建完主Maven工程且配置完主工程的 pom.xml 文件后,创建一个 Module 工程,命名为eureka-server。采用Spring Initializr 的方式的方式创建,作为服务注册中心 Eureka Server 的工程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.springcloud</groupId> <!--跟主Maven的一样 -->
		<artifactId>springcloud-hx</artifactId> <!--跟主Maven的一样 -->
		<version>1.0-SNAPSHOT</version> <!--跟主Maven的一样 -->
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>eureka-server</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>eureka-server</name>
	<description>Demo project for Spring Boot</description>

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

	<dependencies>
     	<!--eureka-server  的 依赖 -->
		<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>

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

</project>

Eureka Server 的 配置文件 application.yml 的内容如下:

server:
  port: 8761

eureka:
  instance:
    prefer-ip-address: true #提交ip信息
    status-page-url-path: /actuator/info #信息查询的url link
    health-check-url-path: /actuator/health #健康检查的url
    hostname: localhost
  client:
    #在默认情况下,Eureka servce 会向自己注册,这时需要设置registerWithEureka和fetchRegistry 为false,防止自己注册自己
    registerWithEureka: false
    fetchRegistry: false
    #服务注册地址
    serviceUrl:
      defaultZone:
        http://${eureka.instance.hostname}:${server.port}/eureka/

在工程的启动类 EurekaServerApplication 上加上注解 @EnableEurekaServer ,开启Eureka Server的功能,代码如下:

package com.example.eurekaserver;

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

//开启Eureka Server的功能
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

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

}

启动项目,在浏览器中访问 http://localhost:8761,页面如下:
在这里插入图片描述
在界面上的 Instances currently registered with Eureka 这一项上没有任何注册的实例,没有是正常的,因为还没有Eureka Client 向注册中心Eureka Server 注册实例。

三:创建 Eureka Client

在主Maven工程中创建一个新的 Module 工程,命名为eureka-client。采用Spring Initializr 的方式的方式创建,该工程作为Eureka Client 向服务注册中心Eureka Server 注册。
在这里插入图片描述

Eureka Client 的 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>com.springcloud</groupId>  <!--跟主Maven的一样 -->
        <artifactId>springcloud-hx</artifactId>  <!--跟主Maven的一样 -->
        <version>1.0-SNAPSHOT</version>   <!--跟主Maven的一样 -->
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>eureka-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-client</name>
    <description>Demo project for Spring Boot</description>

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

    <dependencies>
         <!--eureka-client的 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <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>
    </dependencies>

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

</project>

Eureka Clent 的 配置文件 application.yml 的内容如下:

server:
  port: 8762

spring:
  #配置程序名为eureka-client
  application:
    name: eureka-client

eureka:
  client:
    #服务注册地址
    serviceUrl:
      #注意: Eureka Server 的注册地址
      defaultZone: http://localhost:8761/eureka/

在工程的启动类 EurekaClientApplication上加上注解 @EnableDiscoveryClient,开启服务注册于发现,代码如下:

package com.example.eurekaclient;

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

//开启服务注册于发现
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {

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

}

启动项目,在浏览器中访问 http://localhost:8761,页面如下:
在这里插入图片描述
在界面上的 Instances currently registered with Eureka 这一项上已经有一个实例被注册,APPLICATION 为 EUREKA-CLIENT, Status为 UP(上线),端口为8762.这就说明Eureka Client 已成功向 Eureka Server 注册。

下个文章从源码学习 Eureka

发布了33 篇原创文章 · 获赞 42 · 访问量 3173

猜你喜欢

转载自blog.csdn.net/weixin_40991408/article/details/103520154
今日推荐