• Spring Cloud 之 Sentinel简介与GATEWAY整合实现


    简介

    随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。

    熔断

    微服务架构的系统通常会包含多个微服务,各个微服务可能部署在不同的机器上并通过网络进行通信,那么就不可避免会遇到 “网络请求超时” 、“微服务不可用” 等问题,这就会进一步引起依赖它的微服务不可用,这样不断引发服务故障的现象称为『雪崩效应』,最终的结果是整个应用系统瘫痪。
    为了解决上述问题,编程领域提出了熔断器:
    使用熔断器模式,如果请求出现异常,所有请求都会直接返回,而不会等待或阻塞,这样可以减少资源的浪费。
    熔断器所造成的这种现象也叫『快速失败(fast fall)』。

    流控

    限流功能指的是 Sentinel(类似于过滤器、拦截器的效果)在收到请求后,拒绝请求的放行(至 Controller),而是直接返回,从而减少对 Controller,乃至 Service 的触发执行。
    熔断和限流的区别在于,熔断是确确实实发生了错误,而限流是人为(根据设置)强行让一部分请求被打回

    Sentinel实现限流

    Spring Cloud Alibaba Sentinel 可以分别用在服务的 “请求发起方” 和 “请求被调方”一般实现方式为:
    在服务发起方,Sentinel 整合 OpenFeign 实现熔断功能;
    在服务被调方,Sentinel 整合 Spring MVC 实现限流功能。
    总结:流控针对provider,熔断降级针对consumer

    Sentinel监控平台

    下载地址:

    https://github.com/alibaba/Sentinel/releases

    在这里插入图片描述
    下载后使用java -jar xxx.jar 命令启动服务,Sentinel默认端口为8080,默认账号 :sentinel 默认密码:sentinel

    gateway配置:

    gateway中pom引入配置已有配置参见Spring Cloud 之 GateWay简介及简单DEMO的搭建):

    <!--引入sentinel进行服务降级熔断-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            </dependency>
            <!--gateway网关整合sentinel进行限流降级-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    使用的其他版本

            <spring.cloud.version>Hoxton.SR8</spring.cloud.version>
           
            <spring.cloud.alibaba.version>2.2.3.RELEASE</spring.cloud.alibaba.version>
           
          
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.3.RELEASE</version>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    bootstrap.yml追加sentinel配置;

    server:
      port: 8081
    spring:
      profiles:
        active: dev
      application:
        name: tt-sc-gateway
      cloud:
        #sentinel看板相关配置
        sentinel:
          eager: true
          transport:
            dashboard: 192.168.1.10:8080
            #SpringBoot项目与控制台做交互的端口,默认8719
            port: 8719
          #配置限流后响应内容
          scg:
            fallback:
              #两种模式:一种是response返回文字提示信息,一种是redirect,重定向跳转,同时配置跳转路径
              mode: response
              #配置响应状态码
              response-status: 555
              #响应体
              response-body: '{"code":555,"message":"你被限流了"}'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    gateway启动成功后,可在sentinel监控平台中找到网关服务。

    sentinel流控控制配置:

    在这里插入图片描述
    资源名:路由id的名字Spring Cloud 之 Feign 简介及简单DEMO的搭建

    在这里插入图片描述

    流量 QPS(每秒查询率),每秒访问次数超过1次限流:

    测试结果:

    快速刷新访问后返回:

    在这里插入图片描述

  • 相关阅读:
    【在凸多边形的图像中查找顶点】估计具有已知顶点数的像素化凸多边形角点研究(Matlab代码实现)
    机器学习与计算机视觉 D2
    VSG-001
    Vue3中的watch监听
    煤矿皮带运行视频监控系统
    23种设计模式之 : 模板方法设计模式
    Lua速成(7)
    python常见语法
    浅析Redis基础数据结构
    PCDViewer的常用操作
  • 原文地址:https://blog.csdn.net/FORLOVEHUAN/article/details/133940341