• Eureka自我保护机制

接着以上篇文章建立的三个工程为基础(eureka-server,uerreg,myweb),默认Eureka是开启自我保护的。我们来做个测试,我们先启动三个工程,我们访问注册中心http://localhost:8761/,

 
image.png

可以看到,实例是成功注册到中心的。此时我们将uerreg服务关闭,刷新注册中心,我们会发现如下界面

 
image.png

我们除了看到了一行红色的警告信息,还发现了一件神奇的事情,就是我们的服务实例虽然被kill了,但是在服务注册中心他还是存在的。这就是Eureka自我保护机制,他不会剔除已经挂掉的服务,他会认为这个服务是在尝试重新连接的。
我们在开发过程中肯定是不希望这样的,不利于开发。我们可以关闭Eureka的自我保护机制(实际生产环境不建议关闭)。

  • eureka-server服务端
    配置文件中我们添加如下配置
#关闭保护机制,以确保注册中心将不可用的实例正确剔除
eureka.server.enable-self-preservation=false
#(代表是5秒,单位是毫秒,清理失效服务的间隔 )
eureka.server.eviction-interval-timer-in-ms=5000
  • userreg客户端
    配置文件中我们添加如下配置
# 心跳检测检测与续约时间
# 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务
# 配置说明
#  lease-renewal-interval-in-seconds 每间隔10s,向服务端发送一次心跳,证明自己依然”存活“
#  lease-expiration-duration-in-seconds 告诉服务端,如果我20s之内没有给你发心跳,就代表我“死”了,将我踢出掉。
eureka.instance.lease-renewal-interval-in-seconds=10
eureka.instance.lease-expiration-duration-in-seconds=20

  

我们重新启动服务,然后关闭userreg客户端进行测试。

 
 

此时我们发现,红色警告变成了自我保护被关闭的警告,且实例被注册中心剔除,表明此时自我保护机制被关闭。

  • 健康检查

人会生病,就像人一样服务有时候也会出现异常情况,我们也需要知道某个服务的健康状况。我们可以通过添加如下依赖,开启某个服务的健康检查。以userreg服务为例
pom文件中添加如下依赖

<!--健康检查依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

  

ok,其他的什么都不变,我们来访问一下这个接口http://localhost:9001/health
我们看到了一个很简短的健康报告:{"description":"Spring Cloud Eureka Discovery Client","status":"UP"},类似的还有

info 显示任意的应用信息
metrics 展示当前应用的指标信息 true
mappings 显示所有@RequestMapping路径的整理列表
trace 显示trace信息(默认为最新的一些HTTP请求)
health 展示应用的健康信息
beans 显示一个应用中所有Spring Beans的完整列表

这其中有一些是敏感信息,出于安全考虑,如果不设置

#关掉认证(公网下的生产环境不建议,内网部署可以)
#management.security.enabled=false

默认是无法访问的。
如果我们要访问查看而且想保证一定的安全性,我们应该做什么呢?我们在userreg的pom文件中引入

<!--安全认证依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

  

此时我们访问/beans敏感信息时,弹出如下信息,需要我们进行身份认证

 
 

仅仅引入依赖其实是有问题的,因为我们请求正常的业务接口他也会要求进行认证,解决办法可以在userreg工程的配置文件中添加如下设置:

#(增加了访问路径)
management.context-path=/admin
security.user.name=root
security.user.password=123
#只对/admin进行安全认证
security.basic.path=/admin

重启服务,我们访问http://localhost:9001/admin/beans,注意哦,我们在配置文件中添加了相对路径,只对admin进行验证,此时我们输入正确的用户名和密码(已在配置文件中配置)会显示我们需要的信息。

  • 实战健康检查

健康检查在实际应用场景中有哪些呢?举个例子,我们配置userreg工程数据源
在pom文件中引入以下依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

然后建立一个配置类,配置数据源DataSource

@Configuration
public class Myconfig {
@Bean
public DataSource dataSource()
{
org.apache.tomcat.jdbc.pool.DataSource dataSource=new org.apache.tomcat.jdbc.pool.DataSource();
dataSource.setUrl("jdbc:mysql://localhost/test?characterEncoding=UTF-8");
dataSource.setUsername("root");
dataSource.setPassword("mysql");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
return dataSource;
}
}

这个在springboot中已经学习过,后续我会把springboot学习过程以博客的方式记录下来,配置完成数据源之后,我们启动服务,访问http://localhost:9001/admin/health 查看健康情况

 
image.png

我们可以看到db的健康情况。假如此时我们的mysql服务挂掉,会怎样呢?

 
image.png

我们手动停止mysql服务,然后再看健康情况

 
image.png

发现db状态已经由“UP”变成了“DOWN”并显示了错误信息,这样就很方便我们查看服务的健康情况了。

作者:谜00016
链接:https://www.jianshu.com/p/df61a3273528
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

[转]Eureka自我保护机制、健康检查的作用、actuator模块监控的更多相关文章

  1. Eureka自我保护机制、健康检查的作用、actuator模块监控

    在上一篇文章微服务入门之服务的注册以及服务之间的调用中,我们基本实现了服务之间的调用,今天我们来了解一下Eureka自我保护机制以及健康检查. Eureka自我保护机制 接着以上篇文章建立的三个工程为 ...

  2. Spring Cloud系列教程第九篇-Eureka自我保护机制

    Spring Cloud系列教程第九篇-Eureka自我保护机制 本文主要内容: 1:自我保护介绍 2:导致原因分析 3:怎么禁止自我保护 本文是由凯哥(凯哥Java:kagejava)发布的< ...

  3. springcloud Eureka自我保护机制

    自我保护背景 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行. 默认情况下,如果Eureka Serve ...

  4. Spring Cloud Eureka自我保护机制

    自我保护背景 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行. 默认情况下,如果Eureka Serve ...

  5. Spring Cloud Eureka 自我保护机制

    Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期,但是在保护期内如果 ...

  6. Spring Cloud Eureka自我保护机制(服务无法剔除)

    说明 自我保护背景 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行. 默认情况下,如果Eureka Se ...

  7. Spring Cloud Eureka 自我保护机制实战分析

    前些天栈长在Java技术栈微信公众号分享过 Spring Cloud Eureka 的系列文章: Spring Cloud Eureka 自我保护机制 Spring Cloud Eureka 常用配置 ...

  8. SpringCloud服务的注册发现--------Eureka自我保护机制

    1,Eureka 自我保护机制 Eureka注册中心,一些服务会注册到Eureka 服务器上,例如之前的member服务,order服务. 在网络不通的情况下,如果一个bmember 挂了,但是Eur ...

  9. Eureka系列(九)Eureka自我保护机制

      因为本篇简文并不是自己总结的,而是当了下搬运工,所以直接直接附上原作者博客链接. 参考链接:   1.SpringCloud Eureka自我保护机制   2.Spring Cloud Eurek ...

随机推荐

  1. 2017中国无人机公开赛 总决赛 CDR Final 竞赛规则

    2017中国无人机公开赛总决赛 CDR Final竞赛规则 V2 二〇一七年八月(修订) 一. 竞赛项目描述(一) 无人机绕标竞速赛(专业组)飞行员通过佩戴眼镜或显示屏采用第一视角飞行,使用无线电遥控 ...

  2. HDU5518 : John's Fences

    求出平面图的对偶图,那么需要选择一些环,使得这些环可以异或出所有环. 对于两个不同的区域,需要用一个代价最小的环把它们区分开,这对应最小割. 那么求出对偶图的最小割树,所有树边之和就是把所有区域都区分 ...

  3. mysql:general_log 日志、数据库线程查询、数据库慢查询

    开启general log会将所有到达MySQL Server的SQL语句记录下来.一般不会开启开功能,因为log的量会非常庞大.但个别情况下可能会临时的开一会儿general log以供排障使用.  ...

  4. Linq.js表达式常见写法

    1.回调函数法 2.lambda表达式字符串 3.$符号的表达式

  5. HTML常用标签3

    1.<a>标签,是内联标签 href:需要跳转的网址 2.id属性: 相当于一个身份证 例如: 设置id属性 3.列表标签 <ul>: 无序列表 [type属性:disc(实心 ...

  6. 【原】通过AOP实现MyBatis多数据源的动态切换

    [环境参数]1.开发框架:Spring + SpringMVC + MyBatis 2.数据库A的URL:jdbc.url=jdbc:mysql://172.16.17.164:3306/ test? ...

  7. 牛客网-C++

    2017/8/18 程序运行结束时才释放:静态变量在内存的静态存储区,静态数据一直占有着该存储单元直到程序结束:一般局部变量在函数调用结束后释放变量占用的存储单元,而静态局部变量不释放. 静态全局变量 ...

  8. javaScript系列 [01]-javaScript函数基础

    [01]-javaScript函数基础 1.1 函数的创建和结构 函数的定义:函数是JavaScript的基础模块单元,包含一组语句,用于代码复用.信息隐蔽和组合调用. 函数的创建:在javaScri ...

  9. Node + Selenium使用小结

    可参考网上的步骤进行操作.例如这篇文章:https://wangheng3751.github.io/2018/01/17/selenium/ 1.安装Node.js,去官网下载最新版本的Node.j ...

  10. RbbitMQ消息队列及python实现

    1.简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的 ...