【SpringCloud】Eureka 整体架构 | CAP 原则 | Eureka 自我保护 | Eureka 优雅停服

在这里插入图片描述

Eureka 整体架构image-20220430174204301

Register(服务注册):把自己的 IP 和端口注册给 Eureka

Renew(服务续约):发送心跳包,每 30 秒发送一次,告诉 Eureka 自己还活着,如果 90 秒还未发送心跳,宕机

Cancel(服务下线):当 Provider 关闭时会向 Eureka 发送小心,把自己从服务列表中删除,防止 Consumer 调用到不存在的服务

Get Registry(获取服务注册列表):获取其他服务列表

Replicate(集群中数据同步):Eureka 集群中的数据复制与同步

Make Remote Call(远程调用):完成服务的远程调用

22222

CAP 原则

image-20220430174807449

  • 一致性:数据一致等
  • 可用性:快速响应等
  • 分区容错性:做分区,提高容错等

不可三者兼得,最多保证两项

CA:单节点,无分区

CP:分区之间要保证数据一致,导致耗时增加,可用性差

AP:响应快速,分区容错,但是数据一致没有保证

Eureka 自我保护

自我保护的条件

一般情况下,服务在 Eureka 上注册后,会每 30 秒发送心跳包,Eureka 通过心跳来判断服务是否健康,同时会定期删除超过 90 秒没有发送心跳的服务。

img

有两种情况会导致 Eureka Server 收不到微服务的心跳

  • 微服务自身内部的原因
  • 微服务与 Eureka 之间的网络故障

Eureka Server 在运行期间回去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于,Eureka Server 会将这些实例保护起来,让这些实例不会过期,同时提示一个警告。这种机制叫做 Eureka Server 的自我保护模式。

为什么要启动自我保护

  • 同时保留好数据与坏数据总比丢掉所有数据要好,当网络故障恢复后,这个 Eureka 节点会退出”自我保护模式“。
  • Eureka 具有客户端缓存功能(也就是微服务的缓存功能)。即使 Eureka 集群中所有节点都宕机失效,微服务的 Provider 和 Consumer 都能正常通信
  • 微服务的负载均衡策略会自动剔除死亡的微服务节点

如何关闭自我保护机制

注册中心配置自我保护 application.xml

eureka:
  server:
    enable-self-preservation: false   # true:开启自我保护模式
    eviction-interval-timer-in-ms: 60000   # 清理间隔,单位:毫秒

Eureka 优雅停服

配置了优雅停服以后,就不需要 Eureka Server 配置关闭自我保护。

通过 actuator 实现。

添加依赖

Spring Boot Actuator 模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用。

服务提供者添加 actuator 依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

配置文件

服务提供者配置度量指标监控与健康检查

# 度量指标监控与健康检查
management:
  endpoints:
    web:
      exposure:
        include: shutdown # 开启 shutdown 访问
  endpoint:
    shutdown:
      enabled: true # 开启 shutdown 实现停服

优雅停服

使用 post 请求访问 http://localhost:7070/actuator/shutdown

image-20220430181246709

然后,对应服务提供者立即停止服务,在 Eureka 服务列表中也删除了!

image-20220430181538759

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风落_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值