专栏首页james大数据架构Eureka服务下线后快速感知配置

Eureka服务下线后快速感知配置

  现在由于eureka服务越来越多,发现服务提供者在停掉很久之后,服务调用者很长时间并没有感知到变化,依旧还在持续调用下线的服务,导致长时间后才能返回错误,因此需要调整eureka服务和客户端的配置,以便实现服务下线后快速感知。

  需要调整服务注册中心、服务提供者和服务消费者三个配置。

服务注册中心EurekaServer

先上要更改的配置:

eureka:
  server:  #配置属性,但由于 Eureka 自我保护模式以及心跳周期长的原因,经常会遇到 Eureka Server 不剔除已关停的节点的问题
    enable-self-preservation: false # 设为false,关闭自我保护
    eviction-interval-timer-in-ms: 5000 # 清理间隔(单位毫秒,默认是60*1000)启用主动失效,并且每次主动失效检测间隔为3s

1.先要关闭自我保护 enable-self-preservation: false

2.eviction-interval-timer-in-ms 启用主动失效,并且每次主动失效检测间隔为5s

  Eureka Server会定时(间隔值是eureka.server.eviction-interval-timer-in-ms,默认值为0,默认情况不删除实例)进行检查,如果发现实例在在一定时间(此值由客户端设置的eureka.instance.lease-expiration-duration-in-seconds定义,默认值为90s)内没有收到心跳,则会注销此实例。

  有些文档指出还需要设置下面的两个参数(上下两种写法),但都测试后暂时没发现什么强关联性,这里暂时先不设置。

Eureka服务提供方、Eureka服务调用方修改如下配置:

eureka:
  instance:
    prefer-ip-address: true
    lease-renewal-interval-in-seconds: 4
    lease-expiration-duration-in-seconds: 12
  client:
    serviceUrl:
      defaultZone: http://localhost:1025/eureka
    fetch-registry: true
    registry-fetch-interval-seconds: 8

  客户端通过eureka.instance.lease-renewal-interval-in-seconds 每隔这个时间会主动心跳一次,默认值为30s,更新自己的状态。Eureka Server收到心跳后,会通知集群里的其它Eureka Server更新此实例的状态。

  lease-expiration-duration-in-seconds 设置服务过期时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除,一般是lease-renewal-interval-in-seconds的3倍。

  Eureka Server会定时(间隔值是eureka.server.eviction-interval-timer-in-ms,默认值为0,默认情况不删除实例)进行检查,如果发现实例在在一定时间(此值由eureka.instance.lease-expiration-duration-in-seconds定义,默认值为90s)内没有收到心跳,则会注销此实例。 经过测试设置4s上报一次心跳,12s内无跳就让注册中心剔除服务比较合理,上报时间若为2s,1000个服务会造成对注册中心请求的压力,且2s有可能网络抖动,整个时长6s无响应就判为下线会造成并发压力。

  消费端为了能快速响应服务请求会从Eureka Server拉取服务地址清单后缓存到本地(后面会增量获取),fetch-registry要设置为true,定期的更新客户端的服务清单时间 registry-fetch-interval-seconds: 8,这是消费端的设置。

测试总结

  • 只设置服务端Eureka Server的配置是无效的,还需要设置客户端来配合。
  • 调用方访问一个在注册中心不存在服务ID响应是非常快的,但如果访问一个ID还存在,但对应ip服务已经挂了的服务就是404,长时间无响应。
  • 服务提供者进程意外退出或服务完全卡住(是整个服务无法响应)情况是一样的,都是在指定服务的lease-expiration-duration-in-seconds时间内无心跳就会从注册中心剔除。
  • 注册中心把服务剔除后,调用方还需要时间刷新到本地缓存。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • spring eureka 服务实例实现快速下线快速感知快速刷新配置解析

    默认的Spring Eureka服务器,服务提供者和服务调用者配置不够灵敏,总是服务提供者在停掉很久之后,服务调用者很长时间并没有感知到变化。或者是服务已经注册...

    干货满满张哈希
  • Spring Cloud Eureka 服务关闭但是未从注册中心删除 自我保护机制

    首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行。

    kirin
  • SpringCloud 服务的平滑上下线

    以前都是手撸 RPC,最近接触 SpringCloud,深感痛心。主要有以下几点: 1)代码量巨大,找 BUG 时间长,超级复杂的设计 2)版本管理混乱,经常出...

    xjjdog
  • Spring Cloud升级之路 - Hoxton - 1.背景介绍与要实现的功能

    Spring Cloud还是比较活跃的,更新一直很快。我一般考虑最新版本SR2发布之后,再考虑升级(一般SR1还有SR2会有一些新老框架的兼容性升级)。而且由于...

    干货满满张哈希
  • SpringCloud服务比较快的下线配置

    一、前言 想实现热部署,需要服务很快的上下线,所以需要修改相关配置。 二、配置 Eureka Server配置 # eureka server刷新readCac...

    叔叔
  • SpringCloud 入门之Eureka 篇

    Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消...

    崔笑颜
  • 阿里三面面试题:分布式服务注册中心该如何选型?我快哭了....

    Eureka 是 SpringCloud 自带的组件,而 Zookeeper 则是 Dubbo 一般会选择的。我们以前在做服务这块其实是基于 Spring Cl...

    用户5546570
  • Spring Cloud-微服务架构集大成者

    本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义。

    爱撸猫的杰
  • Java面试:2021.05.11有答案参考的哦!

    InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB...

    夕梦
  • 微服务Spring Cloud功能介绍

    集群:多台服务器部署相同应用构成一个集群 作用:通过负载均衡设备共同对外提供服务

    chenchenchen
  • 微服务架构案例(05):SpringCloud 基础组件应用设计

    知了一笑
  • 大数据开发:Spring Cloud 五大组件介绍

    SpringCloud分布式开发服务发现——Netflix Eureka、客服端负载均衡——Netflix Ribbon、断路器——Netflix Hystri...

    成都加米谷大数据
  • SpringCloud组件:将微服务提供者注册到Eureka服务中心

    Eureka提供了Server当然也提供了Client,如果你对Eureka Server不了解,点击SpringCloud组件:搭建Eureka服务注册中心阅...

    恒宇少年
  • 程序员笔记|API网关如何实现对服务下线实时感知

    在基于云的微服务应用中,服务实例的网络位置都是动态分配的。而且由于自动伸缩、故障和升级,服务实例会经常动态改变。因此,客户端代码需要使用更加复杂的服务发现机制。

    宜信技术学院
  • SpringCloud之Eureka原理

    哈喽大家好,本人最近面试经历有点坎坷,很久没更新了,但我打开公众号发现粉丝居然还涨了,非常感谢各位一直以来的关注,接下来会整理一下最近面试遇到知识点分享给大家。

    用户3467126
  • SpringCloud学习1-服务注册与发现(Eureka)

    前言 Oracle转让Java,各种动态语言的曝光率上升,Java工程师的未来在哪里?我觉得Spring Cloud让未来有无限可能。拖了半年之久的Spring...

    Ryan-Miao
  • Spring Cloud 微服务架构学习笔记与示例

    本文示例基于Spring Boot 1.5.x实现,如对Spring Boot不熟悉,可以先学习我的这一篇:《Spring Boot 1.5.x 基础学习示例》...

    Edison Zhou
  • [享学Eureka] 八、远程通信模块:手动构建JerseyApplicationClient客户端完成服务注册、服务下线...

    代码下载地址:https://github.com/f641385712/netflix-learning

    YourBatman
  • 【一起学源码-微服务】Nexflix Eureka 源码六:在眼花缭乱的代码中,EurekaClient是如何注册的?

    上一讲已经讲解了EurekaClient的启动流程,到了这里已经有6篇Eureka源码分析的文章了,看了下之前的文章,感觉代码成分太多,会影响阅读,后面会只截取...

    一枝花算不算浪漫

扫码关注云+社区

领取腾讯云代金券