首页 > 其他分享 >Sentinel部署和使用教程

Sentinel部署和使用教程

时间:2024-09-03 11:40:29浏览次数:9  
标签:教程 部署 flow Nacos sentinel 限流 Sentinel import com

1、部署:通过Docker镜像 或者 安装包解压到Linux系统的方式

下载docker镜像可参考:https://www.cnblogs.com/xd99/p/18386275

docker run -d --name sentinel-dashboard \
--restart unless-stopped \
-p 8080:8080 \
registry.cn-hangzhou.aliyuncs.com/zxd-docker-images/sentinel-dashboard:1.8.6

 

2、接入项目并持久化

  2.1 引入主依赖和持久化依赖 

        <!--主依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <!--Sentinel和Nacos持久化依赖-->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
            <version>1.8.6</version>
        </dependency>

   2.2 修改nacos中的yml文件

  注:需要手动修改其中的ip地址和账号密码

.yml
 spring:
  cloud: 
    #sentinel控制台
    sentinel:
      # sentinel开关
      enabled: true
      # 是否饥开启饿加载(默认为false) 默认情况下Sentinel会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包
      eager: true
      transport:
        dashboard: 《你的Sentinel部署ip地址》:8082
        client-username: 《Sentinel账号》
        client-password: 《Sentinel密码》
      datasource:
        #限流持久配置
        flow:
          nacos: 
            server-addr: 《你的Nacos部署ip地址》:8848
            username: 《Nacos账号》
            password: 《Nacos密码》
            dataId: sentinel-flow
            groupId: DEFAULT_GROUP
            rule-type: flow
            data-type: json
        # 降级熔断规则配置
        degrade:
          nacos:
            server-addr: 《你的Nacos部署ip地址》:8848
            username: 《Nacos账号》
            password: 《Nacos密码》
            dataId: sentinel-degrade
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: degrade
        # 热点参数限流规则配置
        param-flow:
          nacos:
            server-addr: 《你的Nacos部署ip地址》:8848
            username: 《Nacos账号》
            password: 《Nacos密码》
            dataId: sentinel-param-flow
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: param-flow

        # 系统规则配置
        system:
          nacos:
            server-addr: 《你的Nacos部署ip地址》:8848
            username: 《Nacos账号》
            password: 《Nacos密码》
            dataId: sentinel-system
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: system

  2.3 配置几个基础的json文件

  

    2.3.1 限流规则

sentinel-flow
 [
    {
   

        "resource": "hello",
        "limitApp": "default",
        "grade": 1,
        "count": 1,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode": false
    }
]

    2.3.2 熔断规则

sentinel-degrade
 [
    {
        "count": 1,
        "enable": false,
        "grade": 0,
        "limitApp": "default",
        "minRequestAmount": 1,
        "resource": "hello",
        "slowRatioThreshold": 0.5,
        "statIntervalMs": 1000,
        "strategy": 0,
        "timeWindow": 10
    }
]

    2.3.3 热点限流规则

sentinel-param-flow
 [
  {
    "resource": "service-hotspot",
    "paramIdx": 0,
    "count": 100,
    "grade": 1,
    "durationInSec": 60,
    "controlBehavior": 0,
    "paramFlowItemList": [
      {
        "object": "specific_value",
        "count": 50
      }
    ]
  }
]

    2.3.4 系统规则

sentinel-system
 [
  {
    "grade": 3,
    "count": 0.8
  }
]

持久化参考链接:https://blog.csdn.net/aa35434/article/details/1407395163.

重启项目进入Sentinel就可以看到上面json定义的规则了

 

3、自定义异常

SentinelExceptionHandler
 package org.auth.exception;

import com.alibaba.csp.sentinel.slots.block.authority.AuthorityException;
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.HashMap;
import java.util.Map;


@RestControllerAdvice
public class SentinelExceptionHandler {

    /**
     * 限流全局异常
     */
    @ExceptionHandler(FlowException.class)
    public Map handlerFlowException(){
        return new HashMap(){{
            put("code", HttpStatus.TOO_MANY_REQUESTS.value());
            put("msg", "被限流,请稍后重试");
        }};
    }

    /**
     * 熔断全局异常
     */
    @ExceptionHandler(DegradeException.class)
    public Map handlerDegradeException(){
        return new HashMap(){{
            put("code", HttpStatus.TOO_MANY_REQUESTS.value());
            put("msg", "被熔断,请稍后重试");
        }};
    }

    /**
     * 热点限流异常
     */
    @ExceptionHandler(ParamFlowException.class)
    public Map handlerparamFlowException(){
        return new HashMap(){{
            put("code", HttpStatus.TOO_MANY_REQUESTS.value());
            put("msg", "热点限流,请稍后重试");
        }};
    }

    /**
     *  Sentinel 权限拦截全局异常
     */
    @ExceptionHandler(AuthorityException.class)
    @ResponseBody
    public Map handlerAuthorityException(){
        return new HashMap(){{
            put("code", HttpStatus.UNAUTHORIZED.value());
            put("msg", "暂无权限");
        }};
    }
}

参考链接:https://www.cnblogs.com/vipstone/p/17848233.html

 

标签:教程,部署,flow,Nacos,sentinel,限流,Sentinel,import,com
From: https://www.cnblogs.com/xd99/p/18394226

相关文章

  • Exchange 2016部署实施案例篇-01.架构设计篇(上)
       前言:此博客为转载,最开始发布这个博客的博主已经看不到了,而网上的一般又不太全,所以我整理起来发布在这里,如果需要删除的化请私信我  年前就答应大家要给大家写一个关于Exchange规划部署的文章,一直忙到现在也没有倒出时间来写这个东西。特别是节后,更是开工不利啊,各种奇......
  • 极速掌握MinIO对象存储:从零部署到实战操作全攻略
    文章目录介绍安装部署安装服务器开放服务使用端口挂载磁盘安装MinIO创建目录下载安装文件设置执行权限目录结构如下所有节点都需要执行上述步骤编写启动脚本使用Console使用JavaApi调用获取永久链接可能报的错误错误1:ispartofrootdrive,willnotbeused错误2:Therequestsig......
  • 5分钟部署Prometheus+Grafana批量监控Linux服务器
    文章目录一键安装NodeExporter安装prometheus创建数据存储目录创建配置文件下载运行Prometheus安装Grafana创建数据目录下载运行Grafana配置Grafana监控Linux服务器登录首次登录后设置密码添加数据源选择prometheus填写prometheus地址导入模板辛苦您也关注下公众号,感谢!本文......
  • NumPyro入门API和开发人员参考 pyro分布推理效果处理程序贡献代码更改日志入门教程使
    NumPyro文档¶NumPyro入门API和开发人员参考烟火元素分布推理效果处理程序贡献代码更改日志入门教程使用NumPyro的贝叶斯回归贝叶斯分层线性回归例如:棒球击球率示例:变型自动编码器例子:尼尔的漏斗例子:随机波动例如:亚麻和俳句可变推断参数化NumPyro模型的自动绘制不良后几何及......
  • 西游再现,函数计算一键部署 Flux 超写实文生图模型部署
    从花果山的灵石出世,到取经路上的九九八十一难,再到大闹天宫的惊心动魄……这些耳熟能详的西游场景,如今都能通过Flux模型,以超乎想象的细节和真实感呈现在你眼前。本次实验在函数计算中内置的flux.1-dev-fp8大模型,搭配Lora模型,无需复杂的配置,一键部署,你就能成为这场视觉盛宴的创造者......
  • 云计算41——部署project_exam_system项目(续)
    #创建脚本,可以在java环境中运行任何的jar包或者war包 #!/bin/bash /usr/local/jdk/bin/java-jar/java/src/*.?ar一、思路分析(1)nginx1、下载镜像,将本地的dist项目的目录挂载在容器的/usr/share/nginx/html/2、启动容器3、该项目是一个前后端分离的项目,并非所有的......
  • springboot代驾管理系统管理系统|【源码+论文+PPT+部署视频】
    我们提供多元化的技术项目服务,涵盖Java、PHP、Python等编程语言,以及前端开发、人工智能、大数据、单片机开发、ASP.NET、物联网等领域。我们还提供简历模板、面试题库和学习资料,帮助用户提升技术能力和就业竞争力。我们的服务内容包括:免费功能设计、任务书和开题报告撰写、中......
  • 基于java+springboot+vue人事人力资源管理系统求职简历系统(源码+LW+部署讲解)
    前言......
  • 基于java+springboot+vue人口老龄化常态下的社区老人管理系统(源码+LW+部署讲解)
    前言......
  • nginx部署前端vue项目
    Nginx部署前端Vue项目的技术分析引言在现代Web开发中,Vue.js作为一种流行的前端框架,被广泛应用于构建单页面应用(SPA)。然而,将Vue项目部署到生产环境时,通常需要依赖一个高效的Web服务器来提供服务。Nginx,作为一个高性能的HTTP和反向代理服务器,因其稳定性、易用性和丰富的功能特......