栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

再学--Eureka

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

再学--Eureka

1.准备工作
  1. 首先我们需要构建一个空项目

  2. 新建一个名为parent 的Module Maven项目,管理SpringCloud的版本、SpringBoot的版本

    	
        
            spring-boot-starter-parent
            org.springframework.boot
            2.4.1
        
    
        
            2020.0.0
        
        
            
            
                
                    org.springframework.cloud
                    spring-cloud-dependencies
                    ${spring.cloud-version}
                    pom
                    import
                
            
        
    
2.Eureka服务端
  1. 首先构建一个module,maven项目,父项目指定为上面创建的parent

  2. 引入依赖:web依赖和eureka依赖

    
            
                org.springframework.boot
                spring-boot-starter-web
            
    
            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-server
            
        
    

    这里我出现了一个问题,我没仔细看,引了一个spring-cloud-netflix-eureka-server。有这个东西也引了进来,但是就是启动报错,应该是spring-cloud-starter-netflix-eureka-server。花了挺长时间去找原因,也有了一些额外收获,确定启动类没写错之后便怀疑是eureka依赖的问题,上springcloud官网看了一下2020版的是移除了spring-cloud-netflix依赖中的很多依赖:如图

这也算是标志着这些组件的淘汰吧。。。。

  1. 创建启动类

    package com.xp;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer   //作为EurekaServer启动
    public class EurekaApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaApplication.class,args);
        }
    }
    
  2. 修改配置

server.port=8761

//应用名,特别重要
spring.application.name=Eureka

//设置Eureka客户端向哪里注册,现在是服务端,可以不用写这个
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

//关闭Eureka客户端注册
eureka.client.register-with-eureka=false

//关闭Eureka从服务端拉去注册信息
eureka.client.fetch-registry=false

️ 说明:因为eureka的server依赖会同时把client依赖也引进来,所以启动的时候会以客户端、服务端两个身份去注册,所以作为服务端启动时应该禁止自己作为客户端注册。

️ 同理作为服务端应该禁止启动的时候去注册中心拉取注册信息,因为那时候都还没有服务端

3.Eureka客户端

大体和上面一致

  1. 依赖:

    
            
                org.springframework.boot
                spring-boot-starter-web
            
    
            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-client
            
        
    
  2. 启动类:

    package com.xp;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @SpringBootApplication
    @EnableEurekaClient
    public class EurekaClientApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaClientApplication.class,args);
        }
    }
    
  3. 配置:

    server.port=8083
    spring.application.name=EurekaClient
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka
    

ok,以上eureka客户端、服务端就写好了。跑起来:localhost:8761/

4.Eureka自我保护机制

就是一个客户端和服务端中断,Eureka服务端并不会立即将这个服务清除掉。靠的是心跳机制

❓ 什么时候将它清除呢:

​ 首先在一定时间内(15分钟)统计心跳失败次数,如果成功比例>15%,Eureka就会将它保护起来不会被清除掉

所以有两种方式让它快速清除:

  1. 服务端关闭保护机制(极不推荐)
//关闭自我保护
eureka.server.enable-self-preservation=false
//超时3s清除
eureka.server.eviction-interval-timer-in-ms=3000
  1. 让心跳周期缩短,心跳频率变高
//小周期时长,默认90
eureka.instance.lease-expiration-duration-in-seconds=20
//多久心跳一次,默认30
eureka.instance.lease-renewal-interval-in-seconds=10

❓为啥叫小周期呢,因为大周期还是15分钟,小周期相当于一组,

指定小周期、频率后,就能计算出15分钟会发多少次心跳。缩短小周期和频率是为了更快达到失败比例,从而清除服务

5.Eureka服务端集群

首先要启动多个Eureka服务端,超简单实用的方法:

复制就行了,但是我们需要该端口号:

修改jvm参数即可指定端口号

有了服务端集群后,我们只需要在客户端的配置文件中的服务端地址:都加上就行了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/295516.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号