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

2. 创建并运行容器

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

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.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.12.RELEASE</version>
</parent>
<dependencyManagement>
    <dependencies>
        <!-- spring cloud 总体依赖版本管理 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <!-- spring cloud alibaba 总体依赖版本管理 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.7.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值