SpringCloud02 Eureka知识点Eureka服务端和客户端的创建Eureka服务端集群Eureka客户端向集群的Eureka服务端注册

Posted neverctrl-c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud02 Eureka知识点Eureka服务端和客户端的创建Eureka服务端集群Eureka客户端向集群的Eureka服务端注册相关的知识,希望对你有一定的参考价值。

 1 Eureka知识点

  按照功能划分:

    EurekaEureka服务端Eureka客户端组成

  按照角色划分:

    EurekaEureka Server、Service Provider、Service Consumer组成

      Eureka Server:提供服务注册和发现(即:服务注册中心)

      Service Provider:服务提供方(即:为其他微服务提供数据资源的服务),将自身的服务信息注册到 Eureka Server 中去供 Service Consumer 使用 

      Service Consumer:服务消费方(即:需要其他服务提供的数据资源进行逻辑处理的服务),从 Eureka Server 中获取 Service Provider 的信息,从而获取Service Provider提供的数据资源

      技巧01:其实大部分微服务可能既是服务提供方也是服务消费方

技术分享图片

  1.1 Eureka服务端

    Eureka服务器用作服务注册服务器,相当于阿里系微服务架构中的Zookeeper。

  1.2 Eureka客户端

    Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。

 

2 Eureka服务端创建【单例模式】

  创建Eureka相关项目时需要引入SpringCloud的依赖管理器和Eureka服务端依赖

  2.1 利用IDEA创建

    版本说明:

      JDK:1.8

      MAVEN:3.5

      IDEA:2017.2 旗舰版

    2.1.1 创建一个SpingBoot项目

技术分享图片

    2.1.2 选择相关依赖

      选择依赖时只需要选择Eureka Server的依赖就可以,我这里选择其他两个依赖只是为了开发方便而已

      技巧01:SpringBoot的版本默认会是最新的,由于我们创建的是SpringCloud相关的项目,所以IDEA会自动为我们引入SprngCloud的依赖管理器;但是SpringCloud依赖管理器的版本和SpringCloud提供的组件的版本是由严格的要求,详情请参见官网;版本对应关系如下:

技术分享图片

 

技术分享图片

     2.1.3 根据官网的版本要求修改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>

    <groupId>cn.xinagxu</groupId>
    <artifactId>eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>eureka</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </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>Finchley.SR1</spring-cloud.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-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </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>
pom.xml

    2.1.4 在启动类上添加@EnableEurekaServer注解

      @EnableEurekaServer是指明这个项目作为一个Eureka服务端使用

技术分享图片

    2.1.5 启动应用

      启动应用后会报错,错误信息如下:

技术分享图片

      报错原因:Eureka服务端也会像Eureka客户端一样可以向一个注册中心进行注册,从Eureka的源码中可以看到 Eureka Server 默认的注册中心为:http://localhost:8761/eureka/,由于我们并没有创建这个项目所以创建的Eureka Server项目会不断向这个不存在的注册中心进行注册,所以上面这个错误会不断的出现控制台

      解决办法01:关闭Eureka Server向另外注册中心或者只身进行注册的功能【即:关闭Eureka Server的的Eureka Client功能】,在配置文件中添加下面的配置就可以实现这个功能【PS:官方推荐】

        技巧01:虽然关闭了Eureka Server向另外注册中心或者自身进行注册的功能,但是控制台还是会报错;但是这次只会出现两次错误信息了,可能我们配置的信息在 Eureka Server 已经向默认的注册中心发起注册请求后生效才造成的这两次报错信息

技术分享图片

        技巧02:关闭了Eureka Server向另外注册中心或者只身进行注册的功能后启动Eureka Server后的效果

技术分享图片

      解决办法02:向另外注册中心或者只身进行注册(由于现在没有其他注册中心,所以本博文将其注册到自身),在配置文件中添加下面的配置就可以实现这个功能:

        技巧01:虽然配置Eureka Server向自身进行注册的功能,但是控制台还是会报错;但是这次只会出现两次错误信息了,可能我们配置的信息在 Eureka Server 已经向默认的注册中心发起注册请求后才生效才造成的这两次报错信息

技术分享图片

        技巧02:配置Eureka Server向自身进行注册的功能后启动Eureka Server后的效果

 技术分享图片

  2.2 利用Maven创建

    根据官方文档进行创建即可,待更新......2018年8月25日14:15:10

 

3 Eureka Server集群

  3.1 创建三个Eureka Server项目

    按照2.1的步骤进行创建即可,当然直接复制创建好的项目也可以

  3.2 修改各个项目的配置文件

 

 

 

 

      

    

 

以上是关于SpringCloud02 Eureka知识点Eureka服务端和客户端的创建Eureka服务端集群Eureka客户端向集群的Eureka服务端注册的主要内容,如果未能解决你的问题,请参考以下文章

springcloud学习笔记day02——Eureka

springcloud学习笔记day02——Eureka

springcloud学习笔记day02——Eureka

springcloud学习笔记day02——Eureka

springcloud-Eureka注册中心搭建

每天学点SpringCloud:如何使用高可用的Eureka