Sentinel+Nacos实现资源流控、降级、热点、授权

Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard 。核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果 。
这篇文章主要介绍 Sentinel 引入和规则配置等使用方法 。我们说的资源,可以是任何东西,服务,服务里的方法,甚至是一段代码 。
因为Sentinel控制台配置的规则是在内存中的,所以我们需要Nacos来存储规则实现持久化 。
 
本文主要分为四个部分:

  • Sentinel代码方式示例效果
  • Sentinel控制台安装
  • Springboot项目接入Sentinel控制台配置规则
  • 使用Nacos存储规则并实时更新
Sentinel代码方式示例效果在讲解如何使用nacos存储规则之前,我们先来看下直接代码定义规则和资源的使用方式,这部分不是本文重点 。
Sentinel的使用步骤大致可以分为三步:
  1. 引入依赖
  2. 定义资源
  3. 定义规则
我们先来看下Sentinel文档上的一段代码 。
1.引入依赖
<dependency>    <groupId>com.alibaba.csp</groupId>    <artifactId>sentinel-core</artifactId>    <version>1.8.0</version></dependency>2.定义资源
public static void main(String[] args) {    // 配置规则.    initFlowRules();    while (true) {        // 1.5.0 版本开始可以直接利用 try-with-resources 特性,自动 exit entry        try (Entry entry = SphU.entry("HelloWorld")) {            // 被保护的逻辑            System.out.println("hello world");        } catch (BlockException ex) {            // 处理被流控的逻辑            System.out.println("blocked!");        }    }}在这里我们定义了一个“HelloWorld”的资源,不断打印hello world 。
3.定义规则
private static void initFlowRules(){    List<FlowRule> rules = new ArrayList<>(); //定义规则列表    FlowRule rule = new FlowRule(); //定义一个规则    rule.setResource("HelloWorld"); //什么资源应用此规则    rule.setGrade(RuleConstant.FLOW_GRADE_QPS);    rule.setCount(20); //没秒只能20次请求    rules.add(rule);//加入该规则    FlowRuleManager.loadRules(rules); //载入规则列表}这里定义了资源“HelloWorld”每秒只能通过20个请求 。
运行该main方法,可以看到控制台输出以下内容 。
Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
Sentinel代码方式示例效果
可以看到请求通过20次打印hello world后再请求会阻塞打印blocked!,等到下一秒才会继续打印hello world 。
这是一个简单的示例用于说明下Sentinel的作用,下面我们会介绍Sentinel控制台的使用以及搭配Nacos存储规则并实时更新规则 。
Sentinel控制台安装Sentinel控制台提供web可视化页面配置规则,我们需要下载官方提供的jar包安装启动该服务 。
1.jar包下载
可以在官网github上下载:https://github.com/alibaba/Sentinel/releases
拉到每个版本信息区块的最下方有jar文件的下载地址 。
Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
jar文件的下载地址
2.启动脚本:
注意根据下载的jar包修改文件名
JAVA -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar
Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
启动Sentinel控制台
3.访问Sentinel控制台
地址和账号密码 http://localhost:8080 账号:sentinel 密码:sentinel
Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
访问Sentinel控制台

Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
访问Sentinel控制台
控制台已经启动完成,可以看到左边首页下面显示了一个sentinel-dashboard的项目,项目包含了监控、链路、各种规则配置和机器列表等菜单可以管理该项目规则,如果有新项目连接到控制台,这里会出现新的项目菜单 。


推荐阅读