SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建

>>强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!
Eureka概述

服务启动时会生成服务的基本信息对象InstanceInfo,然后在启动时会register到服务治理中心。

注册完成后会从服务治理中心拉取所有的服务信息,缓存在本地。之后服务会被30s(可配置)发送一个心跳信息,续约服务。

如果服务治理中心在90s内没有收到一个服务的续约,就会认为服务已经挂了,会把服务注册信息删掉。

服务停止前,服务会主动发送一个停止请求,服务治理中心会删除这个服务的信息。

如果Eureka Server收到的心跳包不足正常值的85%(可配置)就会进入自我保护模式,在这种模式下,Eureka Server不会删除任何服务信息。

Eureka架构图

SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建
  • Registery:表示服务向注册中心注册。

  • Renew:表示服务向注册中心发送心跳,表示该服务还活着,注册中心不能删除改服务。

  • Cancel:表示注册中心能删除该服务。

  • Get Registery:表示该服务重新注册。

  • Replicate:表示注册中心之间相互注册。

  • Remote Call:表示远程调用。

搭建Eureka环境

(1) 创建SpringBoot项目

SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建


(2) 删除多余的目录(src等目录,因为创建maven的聚合工程需要)只剩下pom文件,名字叫做eureka-father作为聚合工程的父级工程,如图


SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建


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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <!--基本信息-->
    <description>SpringBoot-Eureka环境搭建多模块构建示例</description>
    <modelVersion>4.0.0</modelVersion>
    <name>eureka-father</name>
    <packaging>pom</packaging>

    <!-- 项目说明:这里作为聚合工程的父工程 -->
    <groupId>com.org.ldc</groupId>
    <artifactId>eureka-father</artifactId>
    <version>1.0.0.RELEASE</version>

    <!-- 继承说明:这里继承SpringBoot提供的父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.2.RELEASE</version>
    </parent>
    <!-- 表示子模块 -->
    <modules>
        <module>eureka3000</module>
    </modules>
    <!-- 子模块的依赖 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.org.ldc</groupId>
                <artifactId>eureka3000</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

(3) 创建子模块eureka3000,方法如图所示

SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建


子模块的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.org.ldc</groupId>
    <artifactId>eureka3000</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka3000</name>
    <description>Demo project for Spring Boot</description>

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

    <!-- 继承本项目的父工程 -->
    <parent>
        <groupId>com.org.ldc</groupId>
        <artifactId>eureka-father</artifactId>
        <version>1.0.0.RELEASE</version>
    </parent>

    <!--引入eurekaserver  依赖-->
    <dependencies>
        <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-web</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</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>

子模块的启动类如下,这里需要注意的就是要在类上加上@EnableEurekaServer注解。

package com.org.ldc.eureka3000;

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

@SpringBootApplication
@EnableEurekaServer
public class Eureka3000Application {
    public static void main(String[] args) {
        SpringApplication.run(Eureka3000Application.class, args);
    }
}

子模块的application.properties文件的内容如下:

server:
  port: 3000
eureka:
  server:
    enable-self-preservation: false  #关闭自我保护机制
    eviction-interval-timer-in-ms: 4000 #设置清理间隔(单位:毫秒 默认是60*1000)
  instance:
    hostname: localhost
  client:
    registerWithEureka: false #不把自己作为一个客户端注册到自己身上
    fetchRegistry: false  #不需要从服务端获取注册信息(因为在这里自己就是服务端,而且已经禁用自己注册了)
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka

以上创建的表示一个eureka节点,启动子模块的启动类,然后浏览器访问http://localhost:3000,就会出现如下页面,红色框内一开始没有内容的,因为我这是搭建的有三个节点eureka和有注册服务的服务工程,所以红色框内会出现内容,所以搭建不要纠结这个,只要出现这个界面,就说明eureka环境搭建好了,但是使单节点的,不是集群的


SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建


(4) 接着创建服务模块,创建过程和创建子模块一样,不再赘述,名字叫做user5000,如图eureka3001、eureka3001是我创建的另外的两个注册中心节点


SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建


服务模块的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.org.ldc</groupId>
    <artifactId>user5000</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>user5000</name>
    <description>Demo project for Spring Boot</description>

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

    <!-- 继承本项目的父工程 -->
    <parent>
        <groupId>com.org.ldc</groupId>
        <artifactId>eureka-father</artifactId>
        <version>1.0.0.RELEASE</version>
    </parent>

    <dependencies>
        <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>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</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>

application.yml文件内容如下:

server:
  port: 5000
eureka:
  client:
    serviceUrl:
        defaultZone: http://localhost:3000/eureka/  #eureka服务端提供的注册地址 参考服务端配置的这个路径
  instance:
    instance-id: user-1 #此实例注册到eureka服务端的唯一的实例ID 
    prefer-ip-address: true #是否显示IP地址
    leaseRenewalIntervalInSeconds: 10 #eureka客户需要多长时间发送心跳给eureka服务器,表明它仍然活着,默认为30 秒 (与下面配置的单位都是秒)
    leaseExpirationDurationInSeconds: 30 #Eureka服务器在接收到实例的最后一次发出的心跳后,需要等待多久才可以将此实例删除,默认为90秒
spring:
  application:
    name: server-user #此实例注册到eureka服务端的name 

启动类如下:需要加上@EnableEurekaClient 注解

package com.org.ldc.user5000;

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

@SpringBootApplication
@EnableEurekaClient //开启eureka客户端
public class User5000Application {
    public static void main(String[] args) {
        SpringApplication.run(User5000Application.class, args);
    }

}

(4) 最后测试先启动注册中心的启动类,然后启动服务模块的启动类,最后访问localhost:3000出现如下图说明搭建成功。

SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建


END

Java面试题专栏

【41期】盘点那些必问的数据结构算法题之链表
【42期】盘点那些必问的数据结构算法题之二叉堆
【43期】盘点那些必问的数据结构算法题之二叉树基础
【44期】盘点那些必问的数据结构算法题之二分查找算法
【45期】盘点那些必问的数据结构算法题之基础排序
【46期】盘点那些必问的数据结构算法题之快速排序
【47期】六大类二叉树面试题汇总解答
【48期】盘点Netty面试常问考点:什么是 Netty 的零拷贝?
【49期】面试官:SpringMVC的控制器是单例的吗?
【50期】基础考察:ClassNotFoundException 和 NoClassDefFoundError 有什么区别


SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建


欢迎长按下图关注公众号后端技术精选

SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建

原文始发于微信公众号(后端技术精选):SpringCloud之Eureka注册中心环境搭建(单节点),新手都能搭建