SpringCloud五大组件之一Eureka

首先我们先创建一个Maven主项目,引入SpringBoot 2.1.15.RELEASE 并且使用SpringCloud版本为Greenwich.SR6(亲测SpringBoot2.1.15和SpringCloud版本Greenwich.SR6可以完美融合一起)。这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom。父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>
    <packaging>pom</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.15.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>创建Maven主项目的时候自定义</groupId>
    <artifactId>创建Maven主项目的时候自定义</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>创建Maven主项目的时候自定义</name>
    <description> project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR6</spring-cloud.version>
        <lombok.version>1.16.20</lombok.version>
        <spring-boot-admin.version>1.5.4</spring-boot-admin.version>
        <mysql.version>5.1.39</mysql.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </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>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <!--Lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</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>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

第二步、我们创建一个Model,SpringBoot项目

springcloud nacos五大组件_spring

第三步、写上包路径和项目名称(根据个人需求改写)

springcloud nacos五大组件_spring_02


第四步、我们选择Eureka服务端并且选择SpringBoot2.1.15

springcloud nacos五大组件_springcloud_03

完后的工程,其pom.xml继承了父pom文件,并引入spring-cloud-starter-netflix-eureka-server的依赖,代码如下

<?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>
    <packaging>pom</packaging>
    <modules>
        <module>eureka-server</module>
    </modules>
    <parent>
        <groupId>父POM groupId路径</groupId>
        <artifactId>父POM artifactId</artifactId>
        <version>父POM version</version>
    </parent>
    <artifactId>创建时自定义</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>创建时自定义</name>
    <description>project for Spring Boot</description>

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

    <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-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项目上右击在创建一个Model项目,选择Maven(做Maven聚合项目,可做可不做看个人,不做可以跳过)
闲扯一下,简单介绍Maven聚合项目的优缺点

优点:
方便管理
开发过程更加快速
纵向切分,使项目结构更加清楚:将一个项目的多个功能模块分开;
然后再对每个模块进行横向切分:就是我们平常说的三层架构,将项目分成了web层(也被叫做表现层),service层(也被叫做业务层)、dao层(也被叫做持久层),可以理解为将一个功能模块的不同调用过程进行了水平方向的拆分。
项目整合:横向拆分后,每个功能模块进行了单独的开发,项目整合的时候只需要有一个能够整合这些项目或者模块的工程即可
缺点:
maven本身就是一个庞大的构建系统,学习难度大,再加上聚合相互集成依赖,更加饶人
maven采用约定优于配置的策略(convention over configuration),虽然上手容易,但是聚合一旦出了问题,难于调试。
聚合当依赖很多时,m2eclipse 老是搞得Eclipse很卡(Maven聚合项目依赖多,模块多的情况下也很卡)。
中国的网络环境差,很多repository无法访问,比如google code, jboss 仓库无法访问等。

springcloud nacos五大组件_spring_04


选择完Maven点击Next下一步

springcloud nacos五大组件_java_05


填写完项目名,选择Parent(那个项目下),点击Finish完成后项目结构如下

springcloud nacos五大组件_maven_06

因项目名称打马赛克怕各位同学看不太清楚项目结构,下面列出搭建结构和项目结构希望能理清思路

搭建结构:
---------父Pom(公共依赖包管理和版本管理)
	-------项目主Pom(项目主Pom只引用自己模块下需要的东西)
		------项目子Pom(只需要依赖项目主Pom)
项目结构
-----SpringCloud
	-----SpringCloud-Eureka
		-----SpringCloud-Eureka-Server

第七步、启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在Springboot工程的启动类上加:

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

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

第八步、配置appication.yml
通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.

server:
  #服务端口号
  port: 28001
  servlet:
    #应用程序的显示名称
    application-display-name: eureka-server
spring:
  application:
    #服务名称
    name: eureka-server
eureka:
  instance:
    prefer-ip-address: true
    hostname: 127.0.0.1
  client:
    fetch-registry: false
    register-with-eureka: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

第九步、打开网页输入127.0.0.1:28001,就可以看到如下界面,看到如下界面就证明你搭建的注册中心成功了

springcloud nacos五大组件_spring_07

SpringCloud五大组件之一Eureka服务端已到此结束