最近由于微服务会莫名其妙挂掉,导致一些服务宕机;

固所以寻找解决办法,莫名宕机暂时还未查明原因,先人肉解决办法

Eureka的server端会发出5个事件通知,分别是:

EurekaInstanceCanceledEvent 当有服务下线时会执行
EurekaInstanceRegisteredEvent 当有服务注册时会执行
EurekaInstanceRenewedEvent 当有服务续约时会执行
EurekaRegistryAvailableEvent Eureka注册中心启动执行

EurekaServerStartedEvent Eureka Server启动时执行

由于Eureka拥有自我保护机制,当其注册表里服务因为网络或其他原因出现故障而关停时,Eureka不会剔除服务注册,而是等待其修复。这是AP的一种实现。

我们可以采取关闭此功能,让其剔除不健康节点,从而导致执行EurekaInstanceCanceledEvent事件

服务端

eureka:
server:
#设为false,关闭自我保护
enableSelfPreservation: false
#检测间隔(单位毫秒,默认是1分钟)
evictionIntervalTimerInMs: 4000

客户端

eureka:
instance:
#租期更新时间间隔 (单位秒,默认30秒)
leaseRenewalIntervalInSeconds: 10
#租期到期时间 (单位秒,默认90秒)
leaseExpirationDurationInSeconds: 30
#开启健康检查(需要spring-boot-starter-actuator依赖)
client:
healthcheck: enabled

注意:更改Eureka更新频率将打破服务器的自我保护功能

现在开始说eureka服务端代码事件

之前博客有集成邮件的,在此略过。。直接上代码

在Eureka server里直接添加就行

/**
* eureka状态改变监听器
*
* @Author zyt
* @Date 2018/10/29 10:15
*/
@Component
public class EurekaStateChangeListener { private static final Logger logger = LoggerFactory.getLogger(EurekaStateChangeListener.class); /** 区分生产环境 */
@Value("${spring.profiles.active}")
String active; /**
* 服务下线事件
* @param event
*/
@EventListener
public void listenDown(EurekaInstanceCanceledEvent event){
if (active.equals("production")) {
// 发送邮件
logger.info(MarkerFactory.getMarker("DOWN"), "服务ID:" + event.getServerId() + "\t" +
"服务实例:" + event.getAppName() + "\t服务下线");
}
logger.info(event.getServerId() + "\t" + event.getAppName() + "服务下线");
}

里面加了个判断,当为生产环境时则发送邮件

    /**
* 服务注册事件
* @param event
*/
@EventListener
public void listenDown(EurekaInstanceRegisteredEvent event){
InstanceInfo instanceInfo = event.getInstanceInfo();
logger.info(MarkerFactory.getMarker("DOWN"), instanceInfo.getAppName() + "服务注册");
}

springcloud Eureka设置服务下线上线事件通知的更多相关文章

  1. Eureka 中服务下线的几种方式

    原文:https://blog.csdn.net/qq_15071263/article/details/85276486#1_6 Eureka 中服务下线的几种方式1.直接停掉服务根据默认的策略,如 ...

  2. 《springCloud系列》——Eureka 进行服务治理

    整理一下: @EnableEurekaServer 注册中心 @EnableDiscoveryClient 提供服务 @EnableFeignClients 消费者(Feign特有的,而且他自带断路器 ...

  3. Eureka服务下线(Cancel)源码分析

    Cancel(服务下线) 在Service Provider服务shut down的时候,需要及时通知Eureka Server把自己剔除,从而避免其它客户端调用已经下线的服务,导致服务不可用. co ...

  4. 优雅关闭服务下线(Jetty)

    在很多时候 kill -9 pid并不是很友好的方法,那样会将我们正在执行请求给断掉,同时eureka 中服务依旧是处于在线状态,这个时候我们可以使用官方提供的actuator来做优雅的关闭处理 - ...

  5. SQL Server 事件通知(Event notifications)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) 事件通知监控DDL(NotifyQue ...

  6. 9.5 dubbo事件通知机制

    dubbo事件通知机制:http://dubbo.io/books/dubbo-user-book/demos/events-notify.html 一.使用方式 两个服务: DemoService: ...

  7. dubbo事件通知机制(1)

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. dubbo事件通知机制:http://dubbo.io/books/dubbo-user-book/demos ...

  8. 基于Eureka的服务治理

    代码地址如下:http://www.demodashi.com/demo/11927.html 一.服务的注册与发现 关系调用说明: 服务生产者启动时,向服务注册中心注册自己提供的服务 服务消费者启动 ...

  9. 【一起学源码-微服务】Nexflix Eureka 源码十:服务下线及实例摘除,一个client下线到底多久才会被其他实例感知?

    前言 前情回顾 上一讲我们讲了 client端向server端发送心跳检查,也是默认每30钟发送一次,server端接收后会更新注册表的一个时间戳属性,然后一次心跳(续约)也就完成了. 本讲目录 这一 ...

随机推荐

  1. mysql中information_schema.triggers字段说明

    1. 获取所有触发器信息(TRIGGERS) SELECT  *  FROM information_schema.TRIGGERS WHERE  TRIGGER_SCHEMA='数据库名';  TR ...

  2. $Codeforces\ 522D\ Closest\ Equals$ 线段树

    正解:线段树 解题报告: 传送门$QwQ$ 题目大意是说给定一个数列,然后有若干次询问,每次询问一个区间内相同数字之间距离最近是多少$QwQ$.如果不存在相同数字输出-1就成$QwQ$ 考虑先预处理出 ...

  3. spring 与mybatis 整合

    步骤: pom文件添加依赖 创建包结构 添加application.yml, 配置数据库信息 使用mybatis-gennerator 生成三个文件 实体类 接口类 xml 文件 错误信息 xml 绑 ...

  4. 【python小随笔】将一个列表的值,分成10个一组,遍历的时候每10个遍历一次

    t = ['B071LF9R6G', 'B0714BP3H4', 'B0756FL8R7', 'B072HX95ZR', 'B07CX389LX', 'B07D9MZ7BD', 'B07D9L15L5 ...

  5. Java框架之Spring01-IOC-bean配置-文件引入-注解装配

    Spring 框架,即framework.是对特定应用领域中的应用系统的部分设计和实现的整体结构.就相当于让别人帮你完成一些基础工作,它可以处理系统很多细节问题,而且框架一般是成熟,稳健的. Spri ...

  6. 【JavaScript学习笔记】函数、数组、日期

    一.函数 一个函数应该只返回一种类型的值. 函数中有一个默认的数组变量arguments,存储着传入函数的所有参数. 为了使用函数参数方便,建议给参数起个名字. function fun1(obj, ...

  7. python检查是否是闰年

    检查的依据: 闰年可以被4整除不能被100整除,或者可以被400整除. year = int(input("请输入年份:")) if year % 4 == 0 and year ...

  8. 性能测试-详细的 TPS 调优笔记

    概述 在本地针对项目的登录接口做了一次简单的压力测试.200并发持续120s,观察吞吐量 运行结束之后,吞吐量是这样的 如图所示,吞吐量波动巨大,完全不正常.现在我们需要去观察一下服务器了 mpsta ...

  9. 使用“1”个参数调用“DownloadString”时发生异常:“操作超时”

    我今天在终端美化时间遇到一个问题是这样的 使用“1”个参数调用“DownloadString”时发生异常:“操作超时” 然后网我看了下,访问链接属于https的东西,根据直觉我觉得是这样的,是由于访问 ...

  10. Spring Boot2 系列教程 (九) | SpringBoot 整合 Mybatis

    前言 如题,今天介绍 SpringBoot 与 Mybatis 的整合以及 Mybatis 的使用,本文通过注解的形式实现. 什么是 Mybatis MyBatis 是支持定制化 SQL.存储过程以及 ...