前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【微服务~Sentinel】Sentinel降级、限流、熔断

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

作者头像
陶然同学
发布2023-02-27 11:28:46
6700
发布2023-02-27 11:28:46
举报
文章被收录于专栏:陶然同学博客

👀专栏介绍

【微服务~Sentinel】 目前主要更新微服务,一起学习一起进步。

👀本期介绍

本期主要介绍Sentinel

文章目录

微服务常见概念

服务雪崩

服务熔断

服务降级

熔断和降级的区别

Sentinel介绍

core降级

现象1

现象2

降级操作

微服务常见概念

官网: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 不可用。

服务熔断

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

现象1

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

现象2

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

降级操作

添加坐标

代码语言:javascript
复制
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

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

代码语言:javascript
复制
feign:
  sentinel:
    enabled: true

 修改启动类,开启feign

代码语言:javascript
复制
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实现

代码语言:javascript
复制
package com.czxy.feign;

import org.springframework.stereotype.Component;

@Component
public class EchoFeignFallback implements EchoFeign {
    @Override
    public String echo(String string) {
        return "降级处理:" + string;
    }
}
代码语言:javascript
复制
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);
}

关闭服务提供者,测试

  • 注意:需重启服务
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 👀专栏介绍
  • 👀本期介绍
  • 文章目录
  • 微服务常见概念
    • 服务雪崩
      • 服务熔断
        • 服务降级
          • 熔断和降级的区别
            • Sentinel介绍
            • core降级
              • 现象1
                • 现象2
                  • 降级操作
                  相关产品与服务
                  微服务引擎 TSE
                  微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档