1.Sentinel简介
- 我们如何在业务流量变化无常的情况下,保证各种业务安全运营,系统在任何情况下都不会崩溃呢?
- 我们可以在系统负载过高时,采用限流,降级和熔断,三种措施来保护系统,由此一些流量控制中间件诞生,例如sentinel
1.1 概述
sentinel(分布式系统的流量防卫兵)是阿里开源的一套用于服务容错的综合性解决方案,他以流量为切入点,从流量控制,熔断降级,系统负载保护等多个维度来保护服务的稳定性
承接:
- 秒杀(突发流量控制在系统容量可以承受的范围)
- 消息削峰填谷
- 集群流量控制
- 实时熔断下游不可用应用
核心:
- 核心库(java客户端):能够运行于所有java运行时环境,同时对Dubbo/Spring Cloud 等框架有较好的支持
- 控制台(Dashboard):基于Spring Boot开发,打包后可以直接运行
2.Sentinel限流
2.1 概述
我们系统中的数据库连接池,线程池,nginx的瞬时并发等在使用时都会给定一个限定的值,这本身就是一种限流的设计
限流的目的是为了防止恶意请求流量,恶意攻击,或者防止流量超过系统的峰值
2.2 过程
2.2.1 Sentinel应用于服务的提供方(sca-provider),在pom中添加依赖
<!--添加sentinel依赖,此依赖添加以后,会在我们的项目中添加一个拦截器
这个拦截器会指定请求进行拦截,然后检测你的请求是否在限流的范围内,假如在这个范围内
就会对请求进行限流操作-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2.2.2 在配置文件中,添加Sentinel配置
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8180 # 指定sentinel控制台地址。
2.2.3 创建一个Controller对象,用于演示限流操作
package com.jt.provider.controller;
import org.springframework