Spring Cloud 学习2-Eureka用户认证、服务续约保活、健康检测以及服务下线

2021-01-18 目录 相关术语介绍 实战 搭建父工程(聚合工程) 搭建注册中心微服务 搭建生产者和消费者微服务 新增Eureka用户认证 新增健康检测 手动维护注册列表 剔除微服务 up微服务 down微服务 搭建Eureka注册中心集群 远程调用&负载均衡 服务隔离&降级 Hystrix数据监控 Hystrix熔断器 Feign远程调用 服务网关 admin服务监控 总结 项目结构 下载地址 相关术语介绍 服务注册与发现:微服务作为服务提供方主动向注册中心注 阅读详情

Eureka 用户认证

连接到 eureka 的时候需要带上连接的用户名和密码。

我们需要对之前写的Eureka的服务端,和客户端进行改造。

服务端及我们的 注册中心(springcloud-eureka),客户端 包含我们的 服务提供者(springcloud-provider)和服务消费者(springcloud-consumer)。

eureka 服务端改造

认证依赖引入

        <!--security安全认证框架:身份验证和访问控制-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

代码配置 关闭CSRF

@EnableWebSecurity
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //关闭csrf
        http.csrf().disable();
        //开启认证:URL格式登录必须是httpBasic
        http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
    }
}

application.yml 配置文件修改

# 设置登录用户名和密码
spring:
  security:
    user:
      name: admin
      password: admin
#开启 basic 校验
security:
  basic:
    enabled: true

启动注册中心浏览器访问地址,需要用户名密码才能访问

 

Eureka 客户端改造

连接 eureka 注册中心的时候要带上用户名密码

eureka:
  client: #将客户端注册到 eureka 服务列表内
    service-url:
      defaultZone: http://admin:admin@eureka8763:8763/eureka/  #注册中心地址 添加用户密码admin:admin@

关于关闭CSRF的说明

加入了安全认证模块后,默认会开启 CSRF 跨站脚本攻击。

新版(Spring Cloud 2.0 以上)的security默认启用了csrf检验。对下面这样的访问会拦截:

http://admin:admin@192.168.1.1

如果不关闭csrf,eureka客户端连接不上服务端,启动报Cannot execute request on any known server的错误。

  服务续约保活

  • 客户端启需要隔段时间发送一次心跳给 eureka 服务端来证明自己还活着,当 eureka 服务端收到这个心跳请求后才会知道客户端还活着,才会维护该客户端的服务列表信息。
  • 一旦因为某些原因导致客户端没有按时发送心跳给 eureka 服务端,这时候 eureka 服务端可能会认为你这个客户端已经挂了,它就有可能把该服务从服务列表中删除掉。
  • Eureka Server 自我保护模式默认开启,在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期。

有关续约保活的客户端配置

eureka:
  client: 
    #表示eureka client间隔多久去拉取服务注册信息,默认为30秒
    registry-fetch-interval-seconds: 30
  instance:
    #服务续约,心跳的时间间隔
    lease-renewal-interval-in-seconds: 30
    #从前一次发送心跳时间起,90秒没接受到新的心跳,则剔除服务
    lease-expiration-duration-in-seconds: 90

服务端配置

eureka:
  server:
    #自我保护模式,当出现出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除,默认为true
    enable-self-preservation: true
    #Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来
    renewal-percent-threshold: 0.85
    #eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
    eviction-interval-timer-in-ms: 60000

自我保护的意义

Eureka 的自我保护模式是有意义的,该模式被激活后,它不会从注册列表中剔除因长时间没收到心跳的服务,而是等待修复,直到心跳恢复正常之后,它自动退出自我保护模式。这种模式旨在避免因网络分区故障导致服务不可用的问题。

例如,两个客户端实例 C1 和 C2 的连通性是良好的,但是由于网络故障,C2 未能及时向 Eureka 发送心跳续约,这时候 Eureka 不能简单的将 C2 从注册表中剔除。因为如果剔除了,C1 就无法从 Eureka 服务器中获取 C2 注册的服务,但是这时候 C2 服务是可用的。

自我保护存在的问题

在保护期内如果服务刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。

Eureka  健康检测

默认情况下,Eureka使用客户端心跳来确定客户端是否启动。

但是有的情况下,虽然服务连接是好的,但是有可能这个服务的某些接口不是正常的,可能由于需要连接 Redis,mongodb 或者 DB 有问题导致接口调用失败,所以理论上服务虽然能够正常调用,但是它不是一个健康的服务。所以我们就有必要对这种情况做自定义健康检测。

我们在springcloud-provider中实现自定义的HealthCheckHandler。

依赖引入:

        <!--spring-boot监控模块-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

配置开启健康检测

eureka:
  client:
    healthcheck:
      enabled: true #健康检测

自定义健康检测代码实现

我们可以在 health 方法里面去连接数据库或者redis,如果连接异常了则返回 DOWN,如果没异常则返回 UP,这个 health 方法每隔一段时间被调用一次。

@Configuration
public class ProviderHealthIndicator implements HealthIndicator {
    public static int i = 0;
    @Override
    public Health health() {
        boolean isHealth = true;

        /*业务判断逻辑 可以连接数据库、redis等设置isHealth的值*/
        //******************* 模拟判断 第三次判断之后 返回false
        i++;
        if(i>2){
            isHealth = false;
        }
        System.out.println("I"+i+";"+isHealth);
        //*************模拟判断END************************

        if(isHealth) {
            return new Health.Builder(Status.UP).build();
        } else {
            return new Health.Builder(Status.DOWN).build();
        }
    }
}

启动后状态为UP

当helth方法被调用三次后,状态变为DOWN 

 

  服务下线

比如有些情况是服务主机意外宕机了,也就意味着服务没办法给 eureka 心跳信息了,但是
eureka 在没有接受到心跳的情况下依然维护该服务 90s,在这 90s 之内可能会有客户端调用
到该服务,这就可能会导致调用失败。所以我们必须要有一个机制能手动的立马把宕机的服
务从 eureka 服务列表中清除掉,避免被服务调用方调用到。

查看服务列表

接口地址:http://localhost:8763/eureka/apps

使用postman调用接口,返回两个服务

服务下线的接口 

接口:http://localhost:8763/eureka/apps/CONSUMER/localhost:consumer:8082

我们把consumer这个服务下线。

用postman调用这个接口使服务下线

 再次调用获取服务列表接口发现只有一个服务了,下线成功

【信息科学与工程学】计算机科学与自动化——第八十一篇 Java分布式软件高并发/高可用算法01 4. 消息队列(如Kafka的Topic分区,本质是范围)。3. 若是ACCEPT事件,bossGroup线程接受连接,创建SocketChannel,并将其注册到workerGroup的一个EventLoop的Selector上,关注READ事件。1. 分布式缓存分片(如Redis Cluster)。4. 分布式文件存储(如Ceph CRUSH)。6. 调用栈的模拟(如协程)。3. 服务网格(如Istio)的基础。2. 本地缓存与集中式缓存(如Redis)的一致性维护。3. 静态数据(如配置)缓存。 阅读详情

相关推荐

Navcat最新版的激活和安装教程(全网最靠谱,最快捷的方式)

现在最新版本navcat已经出到了16.3了,并且新版navcat也支持连接redis和图标等更多样化的功能,但是比较头疼的一件事就是,只能试用14天。那么接下来小编教大家如何用最简单的方式使用最新版navcat16.

weixin_50737119的博客 2万+

SpringCloud之Eureka原理和eureka优雅停服和安全认证

文章目录1 Eureka1.1 什么是Eureka注册中心1.2 Eureka注册中心三种角色1.2.1 Eureka Server1.2.2 Application Service (Service Provider)1.2.3 Application Client (Service Consumer)1.3 原理图2 CAP2.1 什么是CAP原则2.1.1 数据一致性2.2 如何舍弃2.3 eureka与zookeeper区别3 eureka优雅停服3.1 Eureka自我保护3.1.1 自我保护的条

上善若泪 6653

从报错到成功:手把手教你避坑clusterProfiler安装全流程

本文详细解析了clusterProfiler安装过程中的常见报错及解决方案,从CRAN安装误区到Bioconductor拼写错误,再到依赖包安装失败等问题,提供了五步正确安装法。特别适合生物信息分析新手快速掌握R包安装技巧,避免踩坑。

weixin_30859423的博客 381

SpringCloud系列 (一) Eureka

Eureka 文章目录Eureka一. Eureka搭建1. Eureka服务端,客户端搭建2. 搭建双节点服务端Eureka3. 搭建三节点服务端Eureka(客户端集群也可这么搭)4. 搭建三节点unavailable-replicas情况4.1 为什么写上向注册中心注册就变成了available-replicas4.2 available底层实现原理:4.3 unavailable-replicas所带来的的问题二. Eureka原理1. Renew:心跳,续租2. 自我保护自我保护触发三. Eure

学习学习学习学习 1734

手把手教你用PlantVillage数据集搭建农作物病害识别模型(Python实战)

本文详细介绍了如何使用PlantVillage数据集和Python构建农作物病害识别模型。从环境准备、数据获取到模型构建、训练与评估,手把手教你实现一个实用的农业AI应用。特别针对PlantVillage数据集的特点,提供了处理类别不平衡、图像预处理和模型优化的实战技巧,帮助开发者快速掌握农作物病害识别技术。

weixin_29184371的博客 481

RK3588 部署 ArcFace(r100)人脸识别模型:ONNX 转 RKNN 全流程详解

本文介绍了将ArcFace人脸识别模型转换为RKNN格式并部署到RK3588 NPU的方法。ArcFace是主流的人脸特征提取模型,适用于1:1比对和1:N检索等场景。文章详细说明了模型特点(输入112x112 RGB图像,输出512维特征向量)及转换步骤:首先使用torch2onnx将PyTorch模型转为ONNX格式,再通过RKNN工具进行量化转换。提供了完整的Python转换代码,包括预处理配置、模型加载、构建和导出过程。该方法能有效提升边缘设备上的人脸识别实时性,适用于门禁、考勤等应用场景。

J。 421

SpringCloud之Eureka注册中心安全校验

为了避免恶意服务被注册到Eureka,需要对注册中心服务进行安全校验,具体如下: (1)Eureka Server pom文件中添加相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> (2)Eureka S.

javaway_love的博客 571

lammps原子组速度的计算方法

在lammps摩擦、冲击、压痕等模拟过程中,涉及到某个原子组的整体移动,如果要输出这个原子组的整体移动速度,可以使用vcm()函数。下面是一个具体的使用案例,金刚石球在盒子内移动,输出移动过程中金刚石球在x方向的质心速度。vcm()是lammps自带的一个函数,返回原子组质心在设定方向的速度。其中,ID为group-ID,dim为方向,可设置x、y或者z方向。大家好,我是小马老师。

lammps_jiayou的博客 343

疯狂SpringCloud微服务架构实战 (Eureka -- 服务健康检查)

在前面的测试案例中,服务器实例、服务提供者实例都只启动了一个,并没有体现出 Eureka 的高可用性的特性;接下来试着构建 Eureka 集群;为了能看到负载均衡的效果,这里编写一个 HttpClient 的 REST 客户端访问服务消费者发布的服务。 在一台 Windows 机器机上,若要构建集群,需要修改系统的 hosts 文件,为其添加主机名的映射:修改 ...

伱糸淂忄 688

【温室气体数据集】全球总碳柱观测网络 TCCON

【温室气体数据集】全球总碳柱观测网络 TCCON

WW、forever的博客 437

QEMU源码全解析7 —— QEMU主函数

QEMU源码全解析7 —— QEMU主函数

phmatthaus的专栏 1295

SpringCloud 3:Eureka 健康检测

目录1. 健康检测2. application.properties 配置3. 引入jar包4. 添加一个接口检测数据库连接5. 创建一个健康检测实现类6. 启动项目,查看服务列表7. 查看健康状态8. 修改数据库连接状态9. 再次查看健康状态10. 再次查看服务列表代码下载地址 项目搭建参考https://blog.csdn.net/qq_40977118/article/details/104738485 1. 健康检测 Eureka 默认的健康检测只是你校验服务连接是否是 UP 还是 DOWN 的,

Fisher3652的博客 1133

YOLOv11 改进 - 即插即用 | PST金字塔稀疏Transformer:粗粒度到细粒度推理优化特征提取,提升复杂场景适应性

本文介绍了金字塔稀疏 Transformer(PST)与 YOLOv11 的结合。主流基于注意力的特征融合方法计算复杂度高、实现难度大,作者提出 PST 模块,融合粗到细令牌选择与共享注意力参数机制,在保留空间细节的同时降低计算量。该模块通过层级化注意力机制、动态令牌选择与参数共享,实现高效多尺度特征融合

魔改工程师的博客 830

架构师--SpringCloud学习笔记:二、服务续约保活、下线和服务的调用负载均衡

Eureka 用户认证 连接到 eureka 的时候需要带上连接的用户名和密码 eureka 服务端改造添加启动器 <!--安全验证--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId&...

Rick1024 350

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringCloud(2)——常用配置

一、eureka用户认证 之前在注册中心项目的配置文件暴露过eureka的地址 eureka项目的配置文件: #暴露eureka的服务地址ַ eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 服务调用方,服务提供方项目的配置文件同样配置了eureka的地址,以便启动时进行服务注册与发现,但是存在安全性问题:只要指定eureka的地址,谁都可以访问,因此需要进行

quge_name_harder的博客 680

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringCloud - 初步认知Eureka来龙去脉

1. Eureka 用户认证 连接到eureka 的时候需要带上连接的用户名和密码 添加启动器 关闭csrf 验证 Application.properties 配置 security.basic.enabled=true spring.security.user.name=admin spring.security.user.password=admin 微服务链接,Eureka 客户端 eureka.client.serviceUrl.defaultZone=http://admin

Andy_Health的博客 268

springCloud-服务注册中心eureka

springCloud之eureka注册中心

y965588107的博客 248

用idea搭建一个Spring Cloud项目(含代码)

目标 熟练使用IDEA搭建Spring Cloud项目,实现服务治理、负载均衡、容错、服务网关等常用功能。

前者已逝,后者未至。 1万+

eureka 用户验证

第一步,为Eureka服务端(eureka-server)添加安全认证依赖: <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> 第二步,增加application.yml配置文件: spring: application: name: app-eureka-center security: basic:

weixin_42381171的博客 425

Eureka增加账号密码认证登录

注册中心Eureka在微服务开发中经常使用到,用来管理发布的微服务,供前端或者外部调用。但是如果放到生产环境,我们直接通过URL访问的话,这显然是不安全的。

JAVA领域优质创作者,基于分片网络查询方法专利发明者。 7243

eureka服务注册踏过的坑

eureka不能正常注册或者注册失败的原因 使用eureka搭建服务注册发现中心时要注意一点,也是初次使用容易踩中的坑,即应用上下文的设置。 背景如下:在配置号eureka服务注册中心和相关微服务之后,且注册中心正常启动的情况下,相关的微服务一直不能成功注册进eureka服务注册中心。找了很久的资料,都在说springboot2.X默认开起了security模块的CSRF认证功能导致的,只要加上spring.security.user=XXX和spring.security.name=XXX或者禁用掉sec

u014794219的博客 523

新版Eureka Server 加上Spring Security安全认证之后,客户端无法注册和客户端启动Up后就Down的问题

继之前Eureka服务端搭建后,新建Eureka客户端 Eureka服务端搭建参考:https://blog.csdn.net/weixin_42465125/article/details/88233722 客户端搭建使用于Eureka Server端同样的方式,在https://start.spring.io/生成一个client-demo的客户端工程 然后在Eureka Serv...

weixin_42465125的博客 3269

Eureka 实现安全认证

使用 SpringCloud 微服务,包括我们的服务消费者、服务提供者,在跟我们的服务注册中心注册时,需要增加验证。

流放深圳 1103

Spring Cloud中eureka注册中心添加security认证

配置信息:eureka.client.serviceUrl.defaultZone=http://admin:admin@localhost:9090/eureka/因为服务端添加了安全认证,如果客户端不添加安全认证,就会出现与服务端连接不上的情况,因此客户端也需要添加安全认证。输入账号信息后能够正常进入注册中心,表示eureka添加security安全认证成功。

z69183787的专栏 784

Eureka配置用户认证

Eureka在注册于消费服务的过程中,可以开启用户认证。首先在注册中心要依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</a...

做GIS梦的人 1429

Eureka的实操--中篇

Eureka的实操--中篇

weixin_45125466的博客 1145
上一篇: Spring Cloud 学习1- 搭建简单的微服务工程
下一篇: Spring Cloud 学习3-Eureka高可用集群快速搭建
一地红尘
博客等级 码龄12年 4粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值