Spring Cloud之Eureka自我保护环境搭建

spring cloud Greenwich 学习笔记(一)spring cloud eureka ribbon 服务注册与发现 文章目录概述环境说明eureka注册中心eureka 简介工程搭建eureka注册中心服务提供者ribbon客户端负载均衡服务消费者 概述 Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举, 分布式session, 集群状态)。协调分布式环境中各个系统,为各类服务提供模板性配置... 阅读详情

Spring Cloud之Eureka自我保护环境搭建

Eureka详解

 

服务消费者模式

 

获取服务

 消费者启动的时候,使用服务别名,会发送一个rest请求到服务注册中心获取对应的服务信息,让后会缓存到本地jvm客户端中,同时客户端每隔30秒从服务器上更新一次。

可以通过 fetch-inte vall-seconds=30参数进行修以通过eureka.client .registry该参数默认值为30, 单位为秒。

 

 

 

服务下线

    在系统运行过程中必然会面临关闭或重启服务的某个实例的情况,在服务关闭期有我们自然不希望客户端会继续调用关闭了的实例。所以在客户端程序中,当服务实例过正常的关闭操作时,它会触发一个服务下线的REST请求给Eureka Server, 告诉服务日中心:“我要下线了”。服务端在接收到请求之后,将该服务状态置为下线(DOWN),井该下线事件传播出去。

 

服务注册模式

 失效剔除

 有些时候,我们的服务实例并不一定会正常下线,可能由于内存溢出、网络故障气因使得服务不能正常工作,而服务注册中心并未收到“服务下线”的请求。为了从服务表中将这些无法提供服务的实例剔除,Eureka Server 在启动的时候会创建一个定时任多默认每隔一一段时间(默认为60秒)将当前清单中超时(默认为90秒)没有续约的服务除出去

 自我保护

 

 

默认情况下,EurekaClient会定时向EurekaServer端发送心跳,如果EurekaServer在一定时间内没有收到EurekaClient发送的心跳,便会把该实例从注册服务列表中剔除(默认是90秒),但是在短时间内丢失大量的实例心跳,这时候EurekaServer会开启自我保护机制,Eureka不会踢出该服务。

 

产生的原因:

 

在开发测试时,需要频繁地重启微服务实例,但是我们很少会把eureka server一起重启(因为在开发过程中不会修改eureka注册中心),当一分钟内收到的心跳数大量减少时,会触发该保护机制。可以在eureka管理界面看到Renews threshold和Renews(last min),当后者(最后一分钟收到的心跳数)小于前者(心跳阈值)的时候,触发保护机制,会出现红色的警告:

 

EMERGENCY!EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT.RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEGING EXPIRED JUST TO BE SAFE.

 

从警告中可以看到,eureka认为虽然收不到实例的心跳,但它认为实例还是健康的,eureka会保护这些实例,不会把它们从注册表中删掉。

该保护机制的目的是避免网络连接故障,在发生网络故障时,微服务和注册中心之间无法正常通信,但服务本身是健康的,不应该注销该服务,如果eureka因网络故障而把微服务误删了,那即使网络恢复了,该微服务也不会重新注册到eureka server了,因为只有在微服务启动的时候才会发起注册请求,后面只会发送心跳和服务列表请求,这样的话,该实例虽然是运行着,但永远不会被其它服务所感知。所以,eureka server在短时间内丢失过多的客户端心跳时,会进入自我保护模式,该模式下,eureka会保护注册表中的信息,不在注销任何微服务,当网络故障恢复后,eureka会自动退出保护模式。自我保护模式可以让集群更加健壮。

但是我们在开发测试阶段,需要频繁地重启发布,如果触发了保护机制,则旧的服务实例没有被删除,这时请求有可能跑到旧的实例中,而该实例已经关闭了,这就导致请求错误,影响开发测试。所以,在开发测试阶段,我们可以把自我保护模式关闭,只需在eureka server配置文件中加上如下配置即可:

 

 

 

但在生产环境,不会频繁重启,所以,一定要把自我保护机制打开,否则网络一旦终端,就无法恢复。

当然关于自我保护还有很多个性化配置,这里不详细说明。

 

注意考虑网络不可达情况下:调用接口幂等、重试、补偿等。 

 

 

Eureka自我保护机制:

 为了防止EurekaClient与EurekaServer网络不通的情况下,EurekaServer误将EurekaClient服务剔除

所以,网络不通的情况下EurekaServer不会将EurekaClient服务剔除

 

当服务不可用时候,依然可以在Eureka可以查到服务的注册信息,调用者依然可以调用,但是会报错

 

默认情况下:EurekaClient定时想EurekaSercer发送心跳包,如果EurekaServer端,在一定时间(默认90s)内没有收到对应心跳包,会直接从服务注册列表剔除。短时间内,EurekaServe开启自我保护机制,不会剔除该服务。

 

本地环境下,禁止自我保护机制。在Eureka的yml加入:

 server:
    # 测试时关闭自我保护机制,保证不可用服务及时踢出
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 2000

  

服务提供者(Member)加入:

# 心跳检测检测与续约时间
# 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务
  instance:
###Eureka客户端向服务端发送心跳的时间间隔,单位为秒(客户端告诉服务端自己会按照该规则)    每隔1s发送一次心跳包
    lease-renewal-interval-in-seconds: 1
####Eureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒,超过则剔除(客户端告诉服务端按照此规则等待自己)
    lease-expiration-duration-in-seconds: 2    

# 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务
  instance:
###Eureka客户端向服务端发送心跳的时间间隔,单位为秒(客户端告诉服务端自己会按照该规则)    每隔1s发送一次心跳包
    lease-renewal-interval-in-seconds: 1
####Eureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒,超过则剔除(客户端告诉服务端按照此规则等待自己)
    lease-expiration-duration-in-seconds: 2    

  

剔除掉之后,访问也会报错,因为本地有缓存。默认30s时间去Eureka读取一次新的服务列表

如果服务真的不可用了呢?真的宕机了挂了

本地调用重试,不行就轮训到下一台,保证网络接口幂等性,服务降级功能给客户友好提示

 

posted @ 2018-11-13 12:52 toov5 阅读(...) 评论(...) 编辑 收藏

08-SD卡-TF卡硬件电路设计 SD卡-TF卡硬件电路设计 阅读详情

相关推荐

手把手教你学Simulink--基于故障诊断与容错控制的场景实例:电动汽车电机驱动系统的故障检测与隔离

本文介绍了基于Simulink的电动汽车电机驱动系统故障诊断与隔离(FDI)仿真建模方法。通过构建永磁同步电机(PMSM)驱动系统模型,实现了IGBT开路、电流传感器漂移等典型故障的注入与检测。重点阐述了基于观测器的残差生成方法,以及利用Stateflow实现的故障隔离逻辑。仿真结果表明,该系统能在85ms内准确识别故障类型,隔离准确率达97%,并支持容错控制。文章还探讨了AI故障预测、数字孪生等高级应用方向,为电动汽车电驱系统安全提供了完整的仿真解决方案。

MHD0815的博客 961

微服务(五)Hystrix

微服务(五)Hystrix

qq_40223516的博客 872

金融数据自动化:从同花顺API到Excel的智能转换之旅

本文详细介绍了如何利用同花顺API实现金融数据自动化处理,并将其智能转换为Excel格式的全流程。通过Python编程和Excel高级技巧,读者可以掌握从数据获取、清洗到输出的完整解决方案,大幅提升金融数据分析的效率和准确性。文章特别强调了同花顺API的使用技巧和Excel自动化输出的最佳实践。

sql99的博客 462

SpringCloud学习笔记

代码方式:在order-service中的OrderApplication类中,定义一个新的IRule:}配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则:userservice : # 给某个微服务配置负载均衡规则,这里是userservice服务 ribbon : NFLoadBalancerRuleClassName : com.netflix.loadbalancer.RandomRule # 负载均衡规则。

weixin_44134930的博客 1101

PyCharm配置WSL开发环境保姆级教程:从安装Conda到项目依赖一键搞定

本文提供PyCharm配置WSL开发环境的完整教程,涵盖从安装Conda到项目依赖管理的全流程。详细介绍了WSL2环境准备、Conda环境配置、PyCharm远程解释器设置等关键步骤,并包含实用技巧和常见问题解决方案,帮助开发者高效搭建Python开发环境。

weixin_42620202的博客 309

避坑指南:LVGL在Arduino环境编译报错?3步搞定lv_conf.h路径问题(附ST7789屏幕调试技巧)

本文详细解析了在Arduino环境中配置LVGL图形库时,如何解决常见的“lv_conf.h file not found”编译报错问题。通过三步法:定位并复制模板文件、启用核心配置并指定路径、配置基础参数,从根本上解决路径问题。文章还结合ST7789屏幕驱动,分享了使用TFT_eSPI库进行显示适配、内存优化及背光控制等实战调试技巧,帮助开发者建立清晰、可维护的嵌入式UI工程基础。

lake5的博客 860

Spring Cloud详细笔记

类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制请求失败的重试机制,默认是没有,不过会使用Ribbon的重试一般情况下,默认值就能满足我们使用,如果要自定义时,只需要创建自定义的@Bean覆盖默认Bean即可。下面以日志为例来演示如何自定义配置。

Cheney的博客 1103

晶振(晶体振荡器)测试方法详解

晶振测试方法分为无源和有源两种类型。无源晶振(两脚)需用示波器测试波形,重点关注正弦波形状、200mV-1.5Vpp幅值和频率精度;有源晶振(四脚)通电后直接输出方波。测试要点包括:示波器使用10X探头、AC耦合,带宽需5倍于晶振频率;万用表可初筛短路/开路;替换法是工程最有效方法。常见故障排查顺序:供电→复位→焊接→型号→负载电容→波形观察→更换晶振→MCU配置。负载电容需按公式计算匹配,示波器观察是核心测试手段。

jiujiujinyuxi的博客 926

Hystrix的概念、作用、使用方法

Hystrix是什么 hystrix是一个库,通过延迟容忍和容错逻辑,控制分布式服务之间的交互。它通过隔离服务间的访问点、防止级联失败和提供回退选项,保证系统的整体弹性。 Hystrix作用 hystrix被设计的目标是: 1.对通过第三方客户端库访问的依赖项(通常是通过网络)的延迟和故障进行保护和控制。 2.在复杂的分布式系统汇中阻止级联故障。 3.快速失败,快速恢复。 4.回退,尽可能优雅的降级。 5.启用近...

qq_820648091的博客 3971

RK3568平台开发系列讲解(UBOOT篇)u-boot启动流程

U-Boot(Universal Bootloader)是一种开源的引导加载程序,广泛用于嵌入式系统中。它的主要功能是初始化硬件设备,加载操作系统内核,并将控制权交给操作系统。U-Boot的启动流程可以分为多个阶段,以下是典型的U-Boot启动流程:

内核笔记 1234

Sigrity OptimizePI Best Capacitor Location Estimation模式如何评估电容最佳位置操作指导

Sigrity OptimizePI Best Capacitor Location Estimation模式用于前仿真分析,评估电容的最佳位置以获得最小回路电感,如何分析,以下图为例进行说明。IC devices,输入U*, A*, B*, Q*, P*,将所有这些字母开头的器件都识别为IC。Min设置为1(最少电容个数为1),max设置为28(最多电容个数为28)Capacitors 输入C*,将所有C开头的器件都识别为电容。Grid X设置为8,Grid Y也设置为8。

weixin_54787054的博客 382

springcloud 学习笔记

1创建父类工程

caoyanzhi的博客 350

实现Win10环境下的MATLAB与虚拟机Ubuntu中的ROS的通讯的方法

   本文主要介绍如何实现Win10环境下的MATLAB与虚拟机Ubuntu中的ROS的通讯,虚拟机我采用的是VMware16.1.1中安装了Ubuntu20.04,并安装ROS Noetic 版本    一、虚拟机Ubuntu中配置    1、在ubuntu终端输入以下命令查看本机地址 ifconfig    如下图所示我目前的IP是192.168.3.128    2、将本机IP写入到.bashrc文件    打开home文件夹,按Ctrl+h显示隐藏的文件,选择.bashrc并打开(

慕羽★的博客 7517

Spring Cloud - 搭建 Eureka 服务模块

本文通过具体的步骤介绍了如何使用 Spring Cloud 搭建一个 Eureka 服务模块,包含服务端和客户端的配置、启动以及服务注册与发现等功能。:负责服务的注册与管理,提供服务发现功能。:将服务注册到 Eureka Server,并且可以发现和调用其他服务。Spring Cloud 为我们简化了服务注册与发现的过程,使得微服务架构更加易于搭建和管理。在实际生产环境中,可以根据需要扩展 Eureka 服务模块,支持更多的服务实例和负载均衡策略。

小蜗牛的珍贵百宝箱 1525

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spring Cloud Eureka 快速开始

Eureka注册中心原理 Eureka高可用集群 SpringCloud实践(三) 高可用的Eureka注册中心 参考URL: https://blog.youkuaiyun.com/csolo/article/details/80540359?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_re...

西京刀客 1286

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring Cloud 之 Eureka

eureka 服务注册与发现,该部分内容基于spring cloud 当前最新版本 2021.0.0学习

风儿甚是喧嚣的博客 2431

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring Cloud 微服务系列:深入解析 Eureka 的自我保护机制

简单来说,当 Eureka 服务器检测到心跳超时时,它会进入自我保护模式,并暂停剔除被认为“死亡”的服务实例。然而,在实际应用中,Eureka 的一个独特机制——Eureka 的自我保护机制是一项非常重要的特性,它能够帮助微服务系统在面对网络分区或瞬时故障时保持稳定。本文将深入探讨 Eureka 的自我保护机制,从原理到实际应用,帮助你更好地理解和利用这一特性,提升微服务系统的稳定性和可靠性!通过启用自我保护机制,Eureka 能够在网络分区或瞬时故障期间保持服务注册表的稳定性,避免服务雪崩。

Leaton的博客 1741

Eureka-Eureka的介绍与搭建

文章目录1:Eureka介绍1:Eureka是什么2:EUREKA中的几个概念服务治理服务注册服务发现2:Eureka搭建1:创建cloud-eureka(springboot)项目2:引入依赖eureka-server3:配置application.yml4:主启动添加@EnableEurekaServer启动服务5:启动服务,访问eureka注册中心3:Eureka服务提供者1:创建项目: springcloud-common12:添加pom依赖3:配置applicaton.yml4:主启动类添加@E

苍煜 3956

spring cloud eureka 集群搭建、eureka学习、spring cloud组件学习

通过配置文件多集群搭建 在 application.properties 中指定要加载的配置文件 #加载的配置文件,配置文件必须以 application- 开头,值为- 后面的值 spring.profiles.active=eur8100 这里创建了三个,分别是application-eur8100.properties、application-eur8200.properties、application-eur8300.properties 通过指定,来加载不同的配置文件。 ...

dandanforgetlove的专栏 707

eureka自我保护功能(五)

本文介绍了Spring Cloud中Eureka的自我保护机制及其配置方法。Eureka采用平等节点设计,默认90秒无心跳会移除实例,但网络故障时可能误删正常服务,因此引入自我保护机制:当15分钟内超过85%节点无心跳时,Eureka会保留过期实例、允许新注册但不同步。文章详细展示了注册中心(7001端口)和服务提供者(8001端口)的POM依赖、启动类配置和YML文件,包括自我保护开关(eureka.server.enable-self-preservation)和心跳参数调整方法。测试演示了服务注册过程

ywl470812087的博客 12万+

【spring cloud Netflix】Eureka注册中心

就好比是滴滴,负责管理、记录的信息。无需自己寻找服务,而是把自己的 需求告诉,然后会把符合你需求的服务告诉你。同时,与之间通过“心跳” 机制进行监控,当某个出现问题,自然会把它从服务列表中剔除。这就实现了服务的自动注册、发现、状态监控。Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址服务提供者:启动后向Eureka注册自己信息(地址,提供什么服务)服务消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定 期更新。

L3526581402的博客 1348

Spring Cloud——Eureka

一.简介 1.1 什么是服务的注册与发现? 服务注册是指向服务注册中心注册一个服务实例,服务提供者将自己的服务信息(如服务名,IP地址等)告知服务注册中心。服务发现是指当服务消费者需要消费另外一个服务时,服务注册中心能够告知服务消费者它需要消费服务的实例信息(如服务名,IP地址等)。通常情况下,一个服务既是服务提供者,也是服务消费者。服务消费者一般使用HTTP协议或者消费组件这种轻量级的通信机制来进行服务消费。 服务注册中心会提供服务的健康检查方案,检查被注册的服务是否可用。通常一个服务实例注册后,会

努力找工作呀 717

Spring Cloud Eureka 是什么?

Spring Cloud Eureka 是 Spring Cloud Netflix 组件之一,是基于 Netflix Eureka 实现的。Eureka 包括服务注册、服务发现和服务检测监控等。

冯小石 3521

spring-cloud搭建踩坑--eureka

spring-cloud搭建-eureka 1、搭建过程中遇到java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder; 最后定位是由于直接使用spring-cloud的Finchley.RELEASE作为版本,这里默认使用的是spring-boot...

龙小白的专栏 3457

【Spring Cloud】Spring Eureka自我保护机制

背景:项目进入编码阶段,首先要实现一个注册中心给其他服务用,过程中开启了两个注册中心实例:peer1和peer2,它们互相注册为对方的服务。 疑惑:查看Dashboard的时候,除了查看实例的那一部分比较明白,偶尔会出现这样的红色警告: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NO...

Max的专栏 984

k8s部署spring cloud eureka集群

1. 系统环境 java JDK 11 docker 19.03.9 k8s 1.18 2. eureka架构图 3. eureka配置 application.yml eureka: instance: prefer-ip-address: false # 我们使用的是hostname注册,要设置为false,否则注册不成功 client: register-with-eureka: true #相互注册 fetch-registry: true service

xgw的专栏 4916
上一篇: SpringCloud之客户端连接Eureka集群
下一篇: Spring Cloud之整合ZK作为注册中心
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值