【微服务~Sentinel】Sentinel降级、限流、熔断

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 【微服务~Sentinel】Sentinel降级、限流、熔断

微服务常见概念

官网:quick-start

服务雪崩

  • 服务雪崩:在整条链路的服务中,一个服务失败,导致整条链路的服务都失败的情形。
  1. 存在整条链路服务(Service A、Service B、Service C)
  2. Service A 流量突然性增加,导致Service B 和Service C 流量也增加。
  3. Service C 因为抗不住请求,变得不可用。导致Service B的请求变得阻塞。
  4. 当Service B的资源耗尽,Service B就会变得不可用。
  5. 最后 Service A 不可用。

image.png

服务熔断

  • 服务熔断:当下游的服务因为某种原因突然变得不可用响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

image.png

  1. 最开始处于closed状态,一旦检测到错误到达一定阈值,便转为open状态;
  2. 这时候会有个 reset timeout,到了这个时间了,会转移到half open状态;
  3. 尝试放行一部分请求到后端,一旦检测成功便回归到closed状态,即恢复服务;  

服务降级

  • 什么是服务降级呢?
  • 当下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度!
  • 当下游的服务因为某种原因不可用,上游主动调用本地的一些降级逻辑,避免卡顿,迅速返回给用户!

熔断和降级的区别

  • 服务熔断和服务降级的区别?
  • 服务降级有很多种降级方式!如开关降级、限流降级、熔断降级!
  • 服务熔断属于降级方式的一种!
  • 当发生下游服务不可用的情况,熔断和降级必定是一起出现。
  • 服务降级大多是属于一种业务级别的处理,熔断属于框架层级的实现
  • 开关降级

在配置中心配置一个开关(变量),在配置中心更改开关,决定哪些服务进行降级

Sentinel介绍

  • Sentinel :一个高可用的流量控制与防护组件,保障微服务的稳定性。
  • Sentinel分为两个部分,sentinel-core与sentinel-dashboard。
  • sentinel-core 部分能够支持在本地引入sentinel-core进行限流规则的整合与配置。
  • sentinel-dashboard 则在core之上能够支持在线的流控规则与熔断规则的维护与调整等。

core降级

image.png


现象1

  • 提供者搭建集群(8170/8270),调用者调用,此时关闭提供者的一个服务(8270)
  • 存在现象:访问8170成功访问,不能访问8270
  • 略有卡顿,稍等片刻后,不再卡顿。

现象2

  • 提供者搭建集群(8170/8270),调用者调用,此时关闭提供者的所有服务
  • 现象:无法访问

image.png

降级操作

添加坐标

image.png

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

修改yml文件,开启feign对sentinel的支持

image.png

feign:
  sentinel:
    enabled: true

修改启动类,开启feign

image.png

package com.czxy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient  //服务发现
@EnableFeignClients     //远程调用
public class TestNacosConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestNacosConsumerApplication.class, args );
    }
}

修改Feign实现

package com.czxy.feign;
import org.springframework.stereotype.Component;
@Component
public class EchoFeignFallback implements EchoFeign {
    @Override
    public String echo(String string) {
        return "降级处理:" + string;
    }
}
package com.czxy.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
// @FeignClient(value = "服务名", path = "controller配置的路径" )
@FeignClient(value = "service-provider", fallback = EchoFeignFallback.class )
public interface EchoFeign {
    // 与 nacos-provider-2.1>EchoController声明的方法的完全一致
    @GetMapping("/echo/{string}")
    public String echo(@PathVariable String string);
}

关闭服务提供者,测试

  • 注意:需重启服务

image.png




相关文章
|
3月前
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
87 1
|
5月前
|
监控 Java Sentinel
使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
156 3
|
2月前
|
监控 Java API
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
先简单介绍熔断、降级等核心概念,然后阐述SpringBoot整合Sentinel的实现方式,最后介绍Sentinel在本项目中的应用。
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
|
3月前
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
2月前
|
Java API 微服务
微服务保护之熔断降级
在微服务架构中,服务之间的调用是通过网络进行的,网络的不确定性和依赖服务的不可控性,可能导致某个服务出现异常或性能问题,进而引发整个系统的故障,这被称为 微服务雪崩。
36 0
|
4月前
|
负载均衡 监控 Kubernetes
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
Service Mesh 是一种用于处理服务间通信的基础设施层,它通常与微服务架构一起使用,以提供诸如服务发现、负载均衡、熔断、监控、追踪和安全性等功能。
|
3月前
|
监控 供应链 安全
构建高效微服务架构:API网关与服务熔断策略
【7月更文挑战第38天】随着现代应用程序向微服务架构的转型,系统的稳定性和效率成为了开发团队关注的焦点。本文将探讨在微服务环境中实现系统可靠性的关键组件——API网关,以及如何在服务间通讯时采用熔断机制来防止故障蔓延。通过分析API网关的核心功能和设计原则,并结合熔断策略的最佳实践,我们旨在提供一套提高分布式系统弹性的策略。
|
4月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
4月前
|
监控 Java 开发者
实现Java微服务架构下的服务熔断与降级
实现Java微服务架构下的服务熔断与降级
|
5月前
|
自然语言处理 监控 开发者
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
126 0
下一篇
无影云桌面