当前位置: 首页 > news >正文

SpringCloud------Eureka修改实例显示信息、服务发现Discovery、自我保护(六)

SpringCloud------Eureka修改实例显示信息、服务发现Discovery、自我保护(六)

1.actuator微服务信息完善
2.服务发现Discovery
3.Eureka自我保护

actuator微服务信息完善

web和actuator依赖用于图形化监控

1.主机名称:服务名称修改

新增:instance-id

eureka:client:register-with-eureka: true # 表示是否将自己注册进EurekaServer默认为true# 是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须为true,才能配合ribbon使用负载均衡fetch-registry: trueservice-url:#defaultZone: http://localhost:7001/eureka#defaultZone: http://eureka7001.com/7001/eureka,http://eureka7002.com/7002/eurekadefaultZone: http://localhost:7001/eureka,http://localhost:7002/eurekainstance:instance-id: payment8001 #8002的改为payment8002

修改完重启后:
在这里插入图片描述
在这里插入图片描述

健康检查

点击对应的服务名
会进入对应的地址:

http://01za3zd23001166.corp.haier.com:8001/actuator/info

改为health:

http://01za3zd23001166.corp.haier.com:8001/actuator/health

会打印出:
{“status”:“UP”}

2.访问信息有IP信息提示

  instance:instance-id: payment8001prefer-ip-address: true  # 访问路径可以显示IP地址

如图所示
在这里插入图片描述

服务发现Discovery

对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息。
对于服务提供者Controller进行改造
新增如下代码:

import org.springframework.cloud.client.discovery.DiscoveryClient;@Resourceprivate DiscoveryClient discoveryClient;@GetMapping("/discovery")public Object discovery(){/*** 获取服务清单列表*/List<String> services = discoveryClient.getServices();for (String element:services){log.info("***element:*"+element);}/*** 服务名,获取这个服务下多个实例*/List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");for (ServiceInstance instance:instances){// 实例id/实例IP/实例端口/实例的urllog.info(instance.getInstanceId() +"。"+instance.getHost()+"。"+instance.getPort()+"。"+instance.getUri());}return this.discoveryClient;}

接下来在对生产者的启动类新增 @EnableDiscoveryClient注解

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PaymentMain8001 {public static void main(String[] args) {SpringApplication.run(PaymentMain8001.class,args);}
}

调用该接口测试效果如图:
在这里插入图片描述
返回结果:

{
“services”: [
“cloud-payment-service”,
“cloud-consumer-service”
],
“order”: 0
}

Eureka自我保护

保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。

一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。

如果Eureka Serve页面中看到如下信息,说明Eureka进入了保护模式:
在这里插入图片描述

意思是:

某一时刻某个微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存。
属于CAP理论中的AP分支

设计原因:
为了防止Client可以正常运行,但是Eureka Server网络不通情况下,Eureka Server不会立刻将Client服务剔除。

默认时间是90s
简单地说就是防止因为网络原因,错误注销正常的服务。
宁可保护错误的服务注册信息,也不盲目注销任何可能健康的服务实例

如何禁止自我保护

修改注册端的配置

默认开启自我保护

eureka.server.enable-self-preservation: true 默认为true开启
eviction-interval-timer-in-ms: 2000 # 心跳时间改为2s,2000毫秒

改为false即可禁止自我保护。

eureka:client:register-with-eureka: true # 表示是否将自己注册进EurekaServer默认为true# 是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须为true,才能配合ribbon使用负载均衡fetch-registry: trueservice-url:#defaultZone: http://localhost:7001/eureka#defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eurekadefaultZone: http://localhost:7001/eureka# ,http://localhost:7002/eurekaserver:enable-self-preservation: false  # 禁用自我保护eviction-interval-timer-in-ms: 2000 # 心跳时间改为2s,2000毫秒

客户端同样可以修改发送心跳时间间隔

lease-renewal-interval-in-seconds: 10 #默认为30s,发送一次心跳, 修改客户端向服务器端发送心跳的时间间隔,单位为秒
lease-expiration-duration-in-seconds: 2 #eureka服务器端在收到最后一次心跳后等待时间的上线,单位为秒,默认为90s
# 超时将剔除服务

eureka:client:register-with-eureka: true # 表示是否将自己注册进EurekaServer默认为true# 是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须为true,才能配合ribbon使用负载均衡fetch-registry: trueservice-url:#defaultZone: http://localhost:7001/eureka#defaultZone: http://eureka7001.com/7001/eureka,http://eureka7002.com/7002/eurekadefaultZone: http://localhost:7001/eureka# ,http://localhost:7002/eurekainstance:instance-id: payment8001prefer-ip-address: true  # 访问路径可以显示IP地址lease-renewal-interval-in-seconds: 1  #默认为30s,发送一次心跳,   修改客户端向服务器端发送心跳的时间间隔,单位为秒lease-expiration-duration-in-seconds: 2 #eureka服务器端在收到最后一次心跳后等待时间的上限,单位为秒,默认为90s# 超时将剔除服务

以上是Eureka的全部内容。

Eureka停更后怎么办?

切换其他的注册中心,或者继续使用。
目前是停更不停用的阶段。

https://github.com/Netflix/eureka/wiki

2.0以后就不再更新
1.x依然是一个活动的工程

http://www.lryc.cn/news/65984.html

相关文章:

  • Java 远程debug,IDEA 远程 Debug 调试
  • 将webrtc的音频模式改为共享模式
  • 电脑cpu占用率高?怎么办?1分钟快速解决!
  • 使用JPA自动生成代码(轻松上手看了就会版)
  • jdk动态代理
  • 备忘录模式
  • 问题解决:跨域访问错误
  • 程序员应该怎么自学才能入门 ?我来聊聊自己的经历
  • 听我一句劝,别去外包,干了6年,废了....
  • leetcode 88 合并两个有序数组
  • 软件项目成本控制的5大关键点 不得不重视
  • CSS样式更改:边框Border的另类用法
  • shell的灵活运用 (函数,关联数组,循环,awk,sed等)
  • 大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<1>
  • mysql数据库之事务
  • 安装运行Hyperf
  • 回收站文件恢复,分享4个巧妙解决方法!
  • CTF权威指南 笔记 -第三章汇编基础-3.2-x86/x64汇编基础
  • 争夺汽车芯片「高地」
  • SuperMap GIS基础产品三维GIS FAQ集锦(2)
  • 11.streamFile
  • 如何裁剪图片大小尺寸?
  • 深度学习笔记之梯度下降、反向传播与内置优化器
  • Visual Studio 2022 搭建GLFW OpenGL开发环境
  • 四元数快速入门【Quaternion】
  • 为什么我们要使用向量化运算
  • Makefile零基础教学(一)初识makefile
  • 如何使用SpringMVC之常用注解
  • Vue3的axios请求封装,请求拦截,相应拦截
  • ZC706P试验PL_DDR3内存条的步骤方法