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

背景

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

源码解读

通过对Spring Eureka源码的研究,发现如下机制(默认配置下):
在这里插入图片描述
描述如下:

  1. EurekaServer默认有两个缓存,一个是ReadWriteMap,另一个是ReadOnlyMap。有服务提供者注册服务或者维持心跳时时,会修改ReadWriteMap。当有服务调用者查询服务实例列表时,默认会从ReadOnlyMap读取(这个在原生Eureka可以配置,SpringCloud Eureka中不能配置,一定会启用ReadOnlyMap读取),这样可以减少ReadWriteMap读写锁的争用,增大吞吐量。EurekaServer定时把数据从ReadWriteMap更新到ReadOnlyMap中。
    ReadWriteMap是一个Guava Cache,过期时间是可以配置的。
  2. 服务提供者注册服务后,会定时心跳。这个根据服务提供者的Eureka配置中的服务刷新时间决定。还有个配置是服务过期时间,这个配置在服务提供者配置但是在EurekaServer使用了,但是默认配置EurekaServer不会启用这个字段。需要配置好EurekaServer的扫描失效时间,才会启用EurekaServer的主动失效机制。在这个机制启用下:每个服务提供者会发送自己服务过期时间上去,EurekaServer会定时检查每个服务过期时间和上次心跳时间,如果在过期时间内没有收到过任何一次心跳,同时没有处于保护模式下(参考第一篇的Eureka自我保护机制),则会将这个实例从ReadWriteMap中去掉。
  3. 在默认没有启用EurekaServer主动失效服务实例的情况下,服务过期是利用ReadWriteMap超时缓存失效实现的,只有发送心跳的实例缓存不会失效。
  4. 服务调用者有本地缓存,定时从Eureka服务器上增量拉取所有服务实例列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pandas,polars,pyspark的df对象常见用法对比

案例背景 最近上班需要处理的都是百万,千万级的数据,pandas的性能已经不够看了(虽然它在处理数据上是真的很好用),公司都是用的polar和pyspark,我最近也学习了一些,然后写篇文章对比一下他们的…

java中word转为pdf

背景:由于前端vue无法实现复杂的word可视化插件,希望后端做个能将复杂word转为pdf的方案。(这里我最终使用的是documents4j) java中word转为pdf 经过gpt、网上搜索、以及多方面的考量有以下几种方案。 1.poi原生的转换&#xff…

2024年150道高频Java面试题(二十一)

41. ArrayList 和 LinkedList 的区别是什么? ArrayList 和 LinkedList 都是 Java 中常用的 List 接口的实现,用于存储一系列动态的元素集合。它们之间的主要区别在于数据结构、性能特性、和适用场景。 数据结构: ArrayList 使用动态数组来实…

达梦使用disql登录数据库显示“未连接”

基础环境 操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本:DM Database Server 64 V8 架构:单实例问题:达梦数据库在使用disql登录时,显示“未连接”。 指定了IP和端口号还是连接异常。 […

CentOS如何做端口映射?

在今天的技术发展中,越来越多的应用需要跨越网络进行远程管理和控制。为了实现这一目标,端口映射技术被广泛应用于各个领域。其中,【天联】作为一种性能稳定、安全可靠的端口映射工具,在各种应用场景中得到了广泛的应用和认可。 结…

python+django+flask+vue贫困地区儿童资助网站22pk7

Python 中存在众多的 Web 开发框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近几年较为流行的,大概也就是 Flask 和 Django 了 一开始,本文就对系统内谈到的基本知识,从整体上进行了描述&#xff0c…

无法从 tensorflow.comptensorflow.compat.v2.experimental 中导入 dtensor

解决办法1: 对tensorflow2的版本做升或降的调整 解决办法2: 查看tensorflow2的版本与keras的版本是否相匹配 该项目下载的tensorflow2.6.0,连带安装版本为2.15.0的keras 需要更改keras的版本来解决报错: pip install keras2.6.0…

SEO优化艺术:精细化技巧揭示与搜索引擎推广全面战略解读

SEO(搜索引擎优化,Search Engine Optimization)是一种网络营销策略,旨在通过改进网站内外的各项元素,提升网站在搜索引擎自然搜索结果中的排名,从而吸引更多目标用户访问网站,增加流量&#xff…

面试算法-154-搜索二维矩阵 II

题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,…

SQL注入---HTTP报头注入

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前文中提到万能密钥的工作原理,然而万能密钥仅在源代码中没有代码审计,此时才被称之为万能密钥,而代码中有代码审计时需要分以下几种情况讨论 一.uagent注入 …

鸿蒙ArkUI声明式学习:【UI资源管理】

OpenHarmony 应用的资源分类和资源的访问以及应用开发使用的像素单位以及各单位之间相互转换的方法。 资源分类 移动端应用开发常用到的资源比如图片,音视频,字符串等都有固定的存放目录,OpenHarmony 把这些应用的资源文件统一放在 resourc…

python+django教师业绩考评考核评分系统flask

在设计过程中,将参照一下国内外的一些同类网站,借鉴下他们的一些布局框架,将课题要求的基本功能合理地组织起来,形成友好、高效的交互过程。开发的具体步骤为:   第一步,进行系统的可行性分析&#xff0c…

我对神经网络的一点理解

为什么会写这点心得? 因为算起来,学习和接触深度学习已经4年多了,这期间更多是应用层面,调包侠,调参侠,在基础概念层面尤其是数据推理过程,都是浅尝辄止,这些课必须陆续补上&#x…

宝塔面板php7.37.4版本不支持ZipArchive手工安装扩展方法

宝塔面板安装的PHP7.3和7.4默认已经不带zip扩展,要手工安装zip扩展首先需要安装libzip,方法如下: 宝塔面板php7.3版本在SSH命令行界面执行以下语句: cd /www/server/php/73/src/ext/zip/ /www/server/php/73/bin/phpize ./config…

java实现TCP交互

服务器端 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.PriorityQueue; import java.util.Scanner;public class TCP_Serv…

【Leetcode每日一题】 递归 - 二叉树剪枝(难度⭐⭐)(50)

1. 题目解析 题目链接:814. 二叉树剪枝 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 想象一下,你有一堆层层叠叠的积木,你想从底部开始,把那些标记为0的积木拿走。如…

Oracle SQL中的DECODE函数与NVL函数:区别与应用场景详析

Oracle SQL中的DECODE函数与NVL函数:区别与应用场景详析 引言1. NVL函数简介与使用示例2. DECODE函数简介与使用示例3. NVL与DECODE函数的区别4. 使用场景举例结论 引言 在Oracle数据库开发和数据分析过程中,DECODE函数和NVL函数都是非常实用且常见的工具…

C++奇迹之旅:我与类和对象相遇

文章目录 📝面向过程和面向对象初步认识🌠 类🌉类的引入🌉类的定义 🌠类的访问限定符🌠访问限定符 🌠类的两种定义方式🌉封装 🚩总结 📝面向过程和面向对象初…

spring cloud gateway openfeign 联合使用产生死锁问题

spring cloud gateway openfeign 联合使用产生死锁问题&#xff0c;应用启动的时候阻塞卡住。 spring.cloud 版本如下 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><vers…

Docker-compose部署 gitlab-server

Gitlab部署文档 1、配置环境变量 export GITLAB_HOME/srv/gitlab2、创建docker-compose.yml文件 修改http端口需要同步修改external_url修改ssh端口需要同步修改gitlab_rails[‘gitlab_shell_ssh_port’]volumes&#xff1a;容器数据的持久化存储&#xff0c;强烈推荐。除非你…