0%

SpringCloud-Eureka

Eureka概述

  • eureka是干什么的

    作用:微服务中,负责服务(组件)的注册与发现,是一个“大管家”

    由来:由SpringCloud基于Netflix Eureka做了二次封装

    Eureka组成:

      由Eureka Server 注册中心和
      Eureka Client 服务注册 这两个主键组成
    

    Eureka server端

  • 参考链接

    https://blog.csdn.net/forezp/article/details/69696915

  • 如何创建eureka server端

      1. IDEA下,new project>>Spring Intializr>>Cloud Discovery>>勾选Eureka Server
    


      2. 启动类使用@EnableEurekaServer注解:
      
          @SpringBootApplication
          @EnableEurekaServer
          public class EurekaserverApplication {
          
              public static void main(String[] args) {
                  SpringApplication.run(EurekaserverApplication.class, args);
              }
          }
          
      3.application.yml配置文件配置相关信息:
      
              #server:
              #  port: 8761
              
              eureka:
                client:
                  service-url:
                    defaultZone: http://localhost:8761/eureka
                  register-with-eureka: false
                #instance:
                  #hostname: 192.168.1.102
                #server:
                  #enable-self-preservation: false
              
              spring:
                application:
                  name: eurekaserver1
              management:
                server:
                  servlet:
                    context-path: /
    

Eureka client端

  • 如何创建eureka client端

      1. IDEA下,new project>>Spring Intializr>>Cloud Discovery>>勾选Eureka Discovery(略微不同)
    

      2. 方式创建的client端可能没有引入web组件,需要手动添加,否则启动失败
    
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
              
      3. 启动类使用@EnableEurekaClient注解:
    
      @SpringBootApplication
      @EnableEurekaClient
      public class EurekaclientApplication {
      
          public static void main(String[] args) {
              SpringApplication.run(EurekaclientApplication.class, args);
          }
      }
      
      4. application.yml配置文件配置相关信息:
      
          eureka:
            client:
              service-url:
               defaultZone: http://localhost:8761/eureka/
            #instance:
              #hostname: www.baidu.com
          spring:
            application:
              name: eurekaclient01
          server:
            port: 8763
            
    
  • 启动失败,解决参考链接

    https://blog.csdn.net/ngl272/article/details/71087734

server和client端都配置正确后,访问8761端口会看到client的Instances已经被注册到server端

Eureka实现高可用集群

  • 什么是高可用

    高可用:即“高可用性”(High Availability),通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。

  • 如何实现高可用集群

      1. 先进行多个服务端相互注册,如eurekaserver1和eurekaserver2相互注册
    
      2. 再进行client对多个服务端同时注册
    
      这样可以有效防止服务端的不稳定因素导致整个应用挂掉。
    

1. 先进行多个服务端相互注册(代码演示)

模拟两个server端:

  • IDEA中启动两个server端的服务(实例)即可(再复制一份服务启动配置即可,并设置不同端口)

eurekaserver1在eurekaserver2进行注册:

  • eurekaserver1的yml文件配置信息

      eureka:
        client:
          service-url:
            defaultZone: http://eureka2:8762/eureka
          register-with-eureka: false
        #instance:
          #hostname: 192.168.1.102
        #server:
          #enable-self-preservation: false
    
      spring:
        application:
          name: eurekaserver1
      management:
        server:
          servlet:
            context-path: /
    

eurekaserver2在eurekaserver1进行注册:

  • eurekaserver2的yml文件配置信息

      eureka:
        client:
          service-url:
            defaultZone: http://eureka1:8761/eureka
          register-with-eureka: false
        #instance:
          #hostname: 192.168.1.102
        #server:
          #enable-self-preservation: false
    
      spring:
        application:
          name: eurekaserver2
      management:
        server:
          servlet:
            context-path: /
    

client端对多个server端进行同时注册(这里演示的是两个)

  • 配置两个server的service-url,并用逗号分隔即可

      service-url:
        defaultZone: http://eureka1:8761/eureka/,http://eureka2:8762/eureka/
    

效果

  • 效果

注释:

  • 说明
      eurekaserver1的端口为:8761
      ip为:eureka1 
      application name为:eurekaserver1
        -----------------------------------
        eurekaserver2的端口为:8762
      ip为:eureka2
      application name为:eurekaserver2
      
      其中,ip为:eureka1和eureka2是在电脑的host文件中做的伪域名:
      127.0.0.1  eureka1
      127.0.0.1  eureka2
    

提别提醒:

  • 很重要的信息

      如果defaultZone: http://eureka1:8761/eureka中都填127.0.0.1或者localhost,则server端相互注册会失败!!
      
      版本:
      
      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.0.2.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.BUILD-SNAPSHOT</spring-cloud.version>
      </properties>
      
    
  • 多个server端互相注册失败,参考链接

    https://blog.csdn.net/a60782885/article/details/70146615

代码

  • 代码链接

      https://git.coding.net/uxaw/springCloud.git