• Sentinel:服务限流


    Sprinig Cloud Alibaba Sentinel:服务限流

    一、Spring Cloud Alibaba Sentinel介绍

    1. Spring Cloud Alibaba Sentinel简介

    ​ Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量控制、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。

    2. 特性

    3.1 丰富的应用场景

    Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

    3.2 完备的实时监控

    Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。

    3.3 广泛的开源生态

    Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。

    3.4 完善的 SPI 扩展点

    Sentinel 提供简单易用、完善的 SPI(Service Provider Interface) 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

    3.5 组件图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCVvcbsr-1661432149712)(images/s1.png)]

    4. Sentinel功能和设计理念

    4.1 流量控制

    ​ 流量控制是互联网应用非常重要的一个概念。Sentinel作为流量控制适配器可以把随机过来的流量调整成合适的形状。当超出服务器上限会丢弃部分请求。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ftGUZIz-1661432149716)(images/s2.png)]

    4.2 熔断降级

    ​ 灾难性雪崩效应是在服务链条中可能出现的问题。熔断降级是在服务链条中不可缺少的一部分。熔断降级就是Sentinel的一大功能。

    4.3 通过控制资源的并发数进行限流

    ​ Sentinel通过控制资源的并发数,来减少不稳定资源对其他资源的影响。当某个资源请求响应变长以后,就会逐渐累积线程数,当线程数到达一定的数量后就会拒绝其他的请求。这样不但没有线程切换的消耗,也不需要预先分配线程池的大小(或信号量的大小)。

    4.4 针对慢调用或异常进行降级

    ​ Sentinel可以根据响应时间或异常等不稳定因素进行熔断。当调用的资源出现响应时间变长,就会拒绝访问,直到调用资源逐渐恢复。

    4.5 系统自适应保护机制

    ​ 无论是单机应用还是集群应用都会有一个负载上限,当超过负载上限就会导致单机或集群应用崩溃。Sentinel会自动监听整个单机或集群应用的入口,让入口流量达到负载均衡,保证系统在能力范围内处理最多请求。

    二、基于Docker安装Sentinel Dashboard

    1. 拉取镜像

    docker pull bladex/sentinel-dashboard
    
    • 1

    2. 创建并运行容器

    docker run --name sentinel -d  -p 8858:8858 --restart=always bladex/sentinel-dashboard
    
    • 1

    3. 访问Dashboard平台

    ​ 访问 http://192.168.8.128:8858 进入控制台,登录用户名和密码都是 sentinel

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4nUpgoBx-1661432149719)(images/s3.png)]

    三、搭建微服务应用并交由Sentinel流控管理

    1. 新建工程

    ​ 新建工程 test_alibaba_sentinel 。

    2. POM依赖

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.3.12.RELEASEversion>
    parent>
    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>Hoxton.SR12version>
                <scope>importscope>
                <type>pomtype>
            dependency>
            
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                <version>2.2.7.RELEASEversion>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        
    • 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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    bp(back propagation)
    class id
    MySQL:基本概念和基础操作
    Docker(五)、容器间数据共享~volume
    移动端上拉分页加载更多(h5,小程序)
    网络安全笔记 -- 文件操作(文件下载读取)
    阿里面试官终于把多年总结的Java八股文PDF版分享出来了,帮我金九银十拿下4个offer
    IBM、华为都在使用的集成产品开发IPD是什么
    苯基硅树脂工艺设计
    java计算机office课程平台计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  • 原文地址:https://blog.csdn.net/woruosuifenglang/article/details/126532520