springcloud Eureka设置服务下线上线事件通知
最近由于微服务会莫名其妙挂掉,导致一些服务宕机;
固所以寻找解决办法,莫名宕机暂时还未查明原因,先人肉解决办法
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设置服务下线上线事件通知的更多相关文章
- Eureka 中服务下线的几种方式
原文:https://blog.csdn.net/qq_15071263/article/details/85276486#1_6 Eureka 中服务下线的几种方式1.直接停掉服务根据默认的策略,如 ...
- 《springCloud系列》——Eureka 进行服务治理
整理一下: @EnableEurekaServer 注册中心 @EnableDiscoveryClient 提供服务 @EnableFeignClients 消费者(Feign特有的,而且他自带断路器 ...
- Eureka服务下线(Cancel)源码分析
Cancel(服务下线) 在Service Provider服务shut down的时候,需要及时通知Eureka Server把自己剔除,从而避免其它客户端调用已经下线的服务,导致服务不可用. co ...
- 优雅关闭服务下线(Jetty)
在很多时候 kill -9 pid并不是很友好的方法,那样会将我们正在执行请求给断掉,同时eureka 中服务依旧是处于在线状态,这个时候我们可以使用官方提供的actuator来做优雅的关闭处理 - ...
- SQL Server 事件通知(Event notifications)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) 事件通知监控DDL(NotifyQue ...
- 9.5 dubbo事件通知机制
dubbo事件通知机制:http://dubbo.io/books/dubbo-user-book/demos/events-notify.html 一.使用方式 两个服务: DemoService: ...
- dubbo事件通知机制(1)
此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. dubbo事件通知机制:http://dubbo.io/books/dubbo-user-book/demos ...
- 基于Eureka的服务治理
代码地址如下:http://www.demodashi.com/demo/11927.html 一.服务的注册与发现 关系调用说明: 服务生产者启动时,向服务注册中心注册自己提供的服务 服务消费者启动 ...
- 【一起学源码-微服务】Nexflix Eureka 源码十:服务下线及实例摘除,一个client下线到底多久才会被其他实例感知?
前言 前情回顾 上一讲我们讲了 client端向server端发送心跳检查,也是默认每30钟发送一次,server端接收后会更新注册表的一个时间戳属性,然后一次心跳(续约)也就完成了. 本讲目录 这一 ...
随机推荐
- 最小化centos7.4系统静默安装oracle12.2
一 orace简介 ORACLE(甲骨文)公司.Oracle Database (甲骨文数据库) 是一个具有对象和可扩展标记语言(XML)功能的关系数据库,提供的以分布式数据库为核心的一组软件产品,是 ...
- Mysql 表与表之间的关系
一.前言 二.表与表之间的关系 (一) 一对多 (二) 一对一 (三) 多对多 一.前言 研究表与表之间的关系前,先要知道将所有数据存放在一张表中的弊端: 1.结构不清晰 ---> 不致命 2. ...
- 分表分库解决方案(mycat,tidb,shardingjdbc)
公司最近有分表分库的需求,所以整理一下分表分库的解决方案以及相关问题. 1.sharding-jdbc(sharding-sphere) 优点: 1.可适用于任何基于java的ORM框架,如:JPA. ...
- 洛谷P1248 加工生产调度 贪心
正解:贪心 解题报告: 传送门$QwQ$ $umm$直接看可能比较难想,可以先考虑另一个题? 有$n$个小怪,每打一只小怪会扣$a_i$的血,打完之后会回升$b_i$的血,问至少要多少血量才能使全程血 ...
- docker-覆盖网络
docker network rm docker_gwbridge Error response from daemon: Error response from daemon: network ne ...
- Codeforces Round #609 (Div. 2)前五题题解
Codeforces Round #609 (Div. 2)前五题题解 补题补题…… C题写挂了好几个次,最后一题看了好久题解才懂……我太迟钝了…… 然后因为longlong调了半个小时…… A.Eq ...
- YOLO V3训练自己的数据集
数据的输入几乎和Faster rcnn一样,标签格式xml是一样的. 相比Faster rcnn,数据多了一步处理,通过voc_annotation.py将图片路径和bbox+class存储在txt下 ...
- Java BIO NIO 与 AIO
回顾 上一章我们介绍了操作系统层面的 IO 模型. 阻塞 IO 模型. 非阻塞 IO 模型. IO 复用模型. 信号驱动 IO 模型(用的不多,知道个概念就行). 异步 IO 模型. 并且介绍了 IO ...
- 区间dp - 不连续的回文串
Long long ago, there lived two rabbits Tom and Jerry in the forest. On a sunny afternoon, they plann ...
- Java设计模式之三种工厂模式
工厂模式实现了创建者和调用者的分离,实现了更好的解耦. 详细分类: 1) 简单工厂模式(静态工厂模式): 2) 工厂方法模式: 3) 抽象工厂模式 面向对象设计的基本原则: 1) OC ...