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

news2024/10/6 22:20:09

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: true
    service-url:
      #defaultZone: http://localhost:7001/eureka
      #defaultZone: http://eureka7001.com/7001/eureka,http://eureka7002.com/7002/eureka
      defaultZone: http://localhost:7001/eureka,http://localhost:7002/eureka
  instance:
    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: payment8001
    prefer-ip-address: true  # 访问路径可以显示IP地址

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

服务发现Discovery

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

import org.springframework.cloud.client.discovery.DiscoveryClient;

    @Resource
    private 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/实例端口/实例的url
            log.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: true
    service-url:
    #defaultZone: http://localhost:7001/eureka
      #defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
      defaultZone: http://localhost:7001/eureka
      # ,http://localhost:7002/eureka
  server:
    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: true
    service-url:
      #defaultZone: http://localhost:7001/eureka
      #defaultZone: http://eureka7001.com/7001/eureka,http://eureka7002.com/7002/eureka
      defaultZone: http://localhost:7001/eureka
      # ,http://localhost:7002/eureka
  instance:
    instance-id: payment8001
    prefer-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.coloradmin.cn/o/496262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新库上线 | CnOpenData缺陷产品召回数据

缺陷产品召回数据 一、数据简介 缺陷产品召回&#xff0c;是指缺陷产品的生产商、销售商、进口商在得知其生产、销售或进口的产品存在可能引发消费者健康、安全问题的缺陷时&#xff0c;依法向职能部门报告&#xff0c;及时通知消费者&#xff0c;设法从市场上、消费者手中收回…

快速跑通环信IM Android Demo

1、以Android 4.0.0 Demo为例 https://www.easemob.com/download/demo &#xff08;下载别的版本的demo 可以修改版本号直接下载就就可以&#xff09; https://downloadsdk.easemob.com/downloads/easemob-sdk-4.0.0.zip 运行时遇到以下报错在项目build.gradle中添加运行时遇…

SAXS测试在材料结构表征中的应用与优势

SAXS测试在材料结构表征中的应用与优势 SAXS是指小角X射线散射&#xff0c;是一种用于研究物质结构的重要技术。SAXS技术可以用于表征各种材料的结构&#xff0c;如聚合物、胶体、纳米粒子等。本文将介绍SAXS测试在材料测试表征中的应用&#xff0c;包括SAXS曲线、比表面积、粒…

MySQL基础(四)运算符

1. 算术运算符 算术运算符主要用于数学运算&#xff0c;其可以连接运算符前后的两个数值或表达式&#xff0c;对数值或表达式进行加&#xff08;&#xff09;、减&#xff08;-&#xff09;、乘&#xff08;*&#xff09;、除&#xff08;/&#xff09;和取模&#xff08;%&am…

选对信息化管理系统,企业运营效率大幅提升!

随着信息化的发展&#xff0c;企业信息化管理系统已经成为企业独立商业活动和发展的重要基础设施之一。然而&#xff0c;在众多的信息化管理系统中&#xff0c;选择一款适合企业的信息化管理系统并不是一件易事&#xff0c;本文将从选型的角度&#xff0c;为企业提供一些选对合…

第二章 图像基本运算及变换

文章目录 前言一、图像运算1. 加减乘除2. 位运算 二、翻转与旋转1.翻转2.旋转 三、仿射变换1. 介绍2. 变换的数学表达2.1 平移2.2 缩放2.3 旋转 3. 变换矩阵4. 变换叠加5. 变换矩阵的逆推6.OpenCV实现以及手动实现6.1 手动实现6.2OpenCV实现 7.向量空间----补充 四、透视变换1.…

人脉变现小程序裂变定制开发

人脉变现小程序裂变定制开发可以提供以下服务&#xff1a; 需求分析&#xff1a;了解客户的业务需求和目标&#xff0c;并为其量身定制开发方案&#xff0c;提供专业的建议和意见。 UI/UX设计&#xff1a;根据客户的品牌形象和用户体验要求&#xff0c;设计出符合客户需…

简单实现基于UDP与TCP的回显服务器

目录 前言UDP 版的回显服务器需要用到的 api服务端客户端UDP 版本的字典客户端和字典服务器 TCP 版的回显服务器需要用到的 api服务器客户端对服务器进行改进(使用线程池)TCP 版本的字典客户端和字典服务器 前言 我们写网络程序, 主要编写的是应用层代码. 真正要发送这个数据,…

浅谈联网汽车安全漏洞

​“智能网联汽车存在内生共性问题&#xff0c;即软硬件的漏洞后门&#xff0c;基于此进行的网络攻击可以直接带来勒索、盗窃、大规模车辆恶意操控风险&#xff0c;还有数据泄露等网络安全事件。如果内生的漏洞后门问题不解决&#xff0c;系统自身难保&#xff0c;很难谈系统安…

浙大数据结构第四周之二叉搜索树与平衡二叉搜索树(AVL)

题目详情&#xff1a;04-树4 是否同一棵二叉搜索树 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而&#xff0c;一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树&#xff0c;都得到一样的结果。于是…

【Python系列】一个简单的抽奖小程序

序言 很开心你能在万千博文中打开这一篇&#xff0c;希望能给你带来一定的帮助&#xff01;&#x1f44d;&#x1f3fb; 如果有什么问题&#xff0c;都可以添加下方我的联系方式&#xff0c;联系我噢~&#x1f601; ⭐️⭐️⭐️⭐️⭐️沟通交流&#xff0c;一起成为技术达人&…

SpringMVC底层原理源码解析

SpringMVC的作用毋庸置疑&#xff0c;虽然我们现在都是用SpringBoot&#xff0c;但是SpringBoot中仍然是在使用SpringMVC来处理请求。 我们在使用SpringMVC时&#xff0c;传统的方式是通过定义web.xml&#xff0c;比如&#xff1a; <web-app><servlet><servle…

jenkins配置笔记

文章目录 1.装Gogs插件2.配置截图及说明3.其他1.装Gogs插件 Gogs 插件是一个专门为集成 Gogs(一种类似于 Git 的开源版本控制系统)与 Jenkins 进行交互的插件。它允许 Jenkins 与 Gogs 之间进行双向通信,提高了 Jenkins 对于代码管理和构建的支持。 2.配置截图及说明 目前…

【操作系统】第二章进程与线程、处理机调度与调度算法

文章目录 &#x1f337; 一、进程的定义、组成、组织方式及特征⭐️ 1、 进程的定义⭐️ 2、 进程实体的组成⭐️ 3、 进程的组织⭐️ 4、 进程的特征 &#x1f337; 二、进程的状态与转换⭐️ 1、 状态⭐️ 2、 进程状态间的转换 &#x1f337; 三、进程控制⭐️ 1、 定义⭐️…

SwiftUI 新 Alert 弹出窗口圆你文本输入之梦

概览 小伙伴们都知道&#xff0c;弹出 Alert 不能包含文本输入框是 SwiftUI 的阿喀琉斯之踵(Achilles’ Heel) 。当然&#xff0c;这说的有些夸张了。&#x1f609; 不过&#xff0c;Alert 不能包含 TextField 在某些情况下着实不方便。于是乎&#xff0c;从 SwiftUI 3.0&…

JAVA模拟堆

堆的性质 堆是一种特殊的树。 只要满足以下两点&#xff0c;它就是一个堆&#xff1a; 堆是一个完全二叉树。堆中每一个节点的值都必须大于等于&#xff08;或小于等于&#xff09;其子树中每个节点的值。 第一点&#xff0c;堆必须是一个完全二叉树。完全二叉树要求&#…

O2OA (翱途) 平台 V8.0 发布新增数据台账能力

亲爱的小伙伴们&#xff0c;O2OA (翱途) 平台开发团队经过几个月的持续努力&#xff0c;实现功能的新增、优化以及问题的修复。2023 年度 V8.0 版本已正式发布。欢迎大家到 O2OA 的官网上下载进行体验&#xff0c;也希望大家在藕粉社区里多提宝贵建议。本篇我们先为大家介绍应用…

Android 输入系统

概述 Android 输入系统的工作原理概括来说&#xff0c;内核将原始事件写入到设备节点中&#xff0c;InputReader 不断地通过 EventHub 将原始事件取出来并翻译加工成 Android 输入事件&#xff0c;然后交给 InputDispatcher。 InputDispatcher 根据 WMS 提供的窗口信息将事件…

24.Stream流

Stream流 一、什么是Stream流 Stream流操作是Java 8提供一个重要新特性&#xff0c;它允许开发人员以声明性方式处理集合&#xff0c;其核心类库主要改进了对集合类的 API和新增Stream操作。Stream类中每一个方法都对应集合上的一种操作。将真正的函数式编程引入到Java中&…

2023全栈开发人员职业路线图

0. 全栈开发人员职业路线图 全栈开发人员是IT行业中薪资最高的职业之一。 如果您想成为一名全栈开发人员&#xff0c;以下是2023年全栈开发人员路线图上的十一个步骤&#xff1a; 掌握敏捷开发和Scrum学习浏览器技术&#xff0c;如HTML和CSS熟练掌握JavaScript或TypeScript了…