springboot sentinel 安装 整合 样例-分布式/微服务流量控制

news2024/11/26 4:34:11

sentinel控制台安装

下载地址:https://github.com/alibaba/Sentinel/releases

本次版本:1.8.6

后台启动:
nohup java -Dserver.port=7080 -Dcsp.sentinel.dashboard.server=localhost:7080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.6.jar &
日志路径:/Users/weidong/logs/csp/。 /Users/weidong为当前用户路径
${user.home}/logs/csp/sentinel-record.log.xxx
登录:localhost:7080
账号密码:sentinel/sentinel

控制台和项目交互端口:8719

控制台配置的流控是临时的,存储在内存,项目重启后,就没有了

目标

我们先说目标,为各位看官节省不匹配的时间
6、使用sentinel流控中心
1、使用nacos做配置中心
2、使用nacos做注册中心
3、微服务模块化
4、使用dubbo作为服务管理
5、使用springboot做脚手架

版本说明

Dubbo :3.1.0
Springboot:2.3.1.RELEASE
sentinel:1.8.6
Nacos-config:0.2.10

整合说明

pom.xml


        <!-- 客户端核心包 -->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-core</artifactId>
        </dependency>
        <!-- 客户端需要引入 Transport 模块来与 Sentinel 控制台进行通信 -->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-transport-simple-http</artifactId>
        </dependency>
        <!-- 开启注解 -->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-annotation-aspectj</artifactId>
        </dependency>

配置注解拦截

注解使用的话,必须要先初始化配置:

package org.lwd.microservice.boot.plat.controller;

import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 注解方式配置
 *
 * @author weidong
 * @version V1.0.0
 * @since 2023/7/14
 */
@Configuration
public class SentinelConfig {
    @Bean
    public SentinelResourceAspect sentinelResourceAspect() {
        return new SentinelResourceAspect();
    }
}


测试controller

可适应controller或者service,关键字在于资源

package org.lwd.microservice.boot.plat.controller;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.fastjson2.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 流量控制-测试控制器
 *
 * @author weidong
 * @version V1.0.0
 * @since 2023/7/14
 */
@Slf4j
@RestController
@RequestMapping("/sentinel/")
@CrossOrigin
public class SentinelController {

    @SentinelResource(value = "sayHello", blockHandler = "sayHelloExceptionHandler")
    @GetMapping(value = "/sayHello")
    public String testInterGet(String name) {
        log.info("----hello sentinel---:{}", name);
        return JSON.toJSONString(name);
    }

    /**
     * 熔断降级
     * @return
     */
    @SentinelResource(value = "circuitBreaker", fallback = "circuitBreakerFallback", blockHandler = "sayHelloExceptionHandler")
    public String circuitBreaker(String name){
        if ("lwd".equals(name)){
            return "hello,"+ name;
        }
        throw new RuntimeException("发生异常");
    }

    public String circuitBreakerFallback(String name){
        return "服务异常,熔断降级, 请稍后重试!";
    }

    public String sayHelloExceptionHandler(String name, BlockException ex){
        return "访问过快,限流降级, 请稍后重试!";
    }


}


客户端接入控制台

启动时加入 JVM 参数 -Dcsp.sentinel.dashboard.server=consoleIp:port 指定控制台地址和端口。更多的参数参见 启动参数文档。

或者我们使用在java中设置启动参数
启动类

package org.lwd.microservice.boot.plat;

import com.alibaba.csp.sentinel.init.InitExecutor;
import org.lwd.microservice.boot.middle.runtime.util.YmlUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

/**
 * @author weidong
 * @version V1.0.0
 * @description
 * @since 2023/4/7
 */
@SpringBootApplication
public class PlatApplication {

    public static void main(String[] args) {
        System.setProperty("project.name", YmlUtils.getApplicationName());
        ConfigurableApplicationContext context = SpringApplication.run(PlatApplication.class, args);

        // 连接到控制台,与sentinel控制台通信
        //System.setProperty("project.name", context.getEnvironment().getProperty("spring.application.name", "sentinel"));
        //System.setProperty("csp.sentinel.dashboard.server", context.getEnvironment().getProperty("sentinel.dashboard.server", "localhost:7080"));
        //System.setProperty("sentinel.dashboard.app.hideAppNoMachineMillis", "60000");
        //dashboard 地址
        System.setProperty("csp.sentinel.dashboard.server", "localhost:7080");
        //API端口
        System.setProperty("csp.sentinel.api.port", "localhost:8719");
        InitExecutor.doInit();

    }

}

测试

sentinel控制台

控制台会在左侧显示启动的项目,并新增控制策略【控制台新增策略,生命周期只在客户端项目运行,一旦重启就没有了】
控制台:http://localhost:7080/
测试接口:http://localhost:8022/sentinel/sayHello?name=lwd

在这里插入图片描述

新增流控策略

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下一篇:配置持久化策略规则和整合nacos

外传

😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于文本内容的垃圾短信识别实战

1、实战的背景与目标 背景&#xff1a; 垃圾短信形式日益多变&#xff0c;相关报告可以在下面网站查看 360互联网安全中心&#xff08;http://zt.360.cn/report/&#xff09; 目标&#xff1a; 基于短信文本内容&#xff0c;建立识别模型&#xff0c;准确地识别出垃圾短信…

【LeetCode热题100】打卡第38天:课程表实现前缀树

文章目录 【LeetCode热题100】打卡第38天&#xff1a;课程表&实现前缀树⛅前言 课程表&#x1f512;题目&#x1f511;题解 实现前缀树&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第38天&#xff1a;课程表&实现前缀树 ⛅前言 大家好&#xff0c;我是…

udx实现揭秘之---------udx的慢启动带宽探测

我们都知道bew wnd*1000/rtt 当慢启动的时候&#xff0c;每收一个ack,可以这样调整发送速度当前sendspeed sendspeed mss/rtt.并且更新wnd->wnd1. udx的变形版本是sendspeed checksize/rtt; 但是这种增加速度太快&#xff0c;在到达临界点的时候&#xff0c;很容易击…

低功耗设计:为可持续发展带来能源效率的突破

引言&#xff1a; 低功耗设计是面向电子设备和系统的一种设计理念&#xff0c;旨在降低设备的能耗和功耗&#xff0c;提高能源利用效率。在当前节能环保的背景下&#xff0c;低功耗设计成为了电子行业的热门话题&#xff0c;它对于延长电池寿命、提高设备性能和减少能源消耗具有…

选读SQL经典实例笔记08_区间查询

1. 计算同一组或分区的行之间的差 1.1. 最终结果集 1.1.1. sql DEPTNO ENAME SAL HIREDATE DIFF ------ ---------- ---------- ----------- ----------10 CLARK 2450 09-JUN-1981 -255010 KING 5000 17-NOV-1981 370010 …

20 - 队列 - 链队列——队列的链式表示和实现

前面我们学习了 先进先出、后进后出 的线性表- 队列,并且我们是使用数组进行了实现,那么这节课我们来使用链表来实现队列,即链队列! 队列的定义 队列(Queue)也是一种线性表, 但是它仅能在一端进行插入,而另一端进行删除的操作 ,插入的一端称为 队尾rear,删除的一端…

针对Weblogic上的shiro漏洞利用工具

工具介绍 日常项目中&#xff0c;可能会碰见部署在weblogic上的shiro&#xff0c;所以先写了这个生成攻击payload的小Demo&#xff0c;方便后面使用。但目前只支持无回显命令执行&#xff0c;后续回显、内存马功能后面出差后再写。 关注【Hack分享吧】公众号&#xff0c;回复关…

【HCIA】12.网络服务与应用

文件传输协议FTP FTP基于TCP&#xff0c;传输较慢&#xff0c;但是比较可靠。典型的C/S架构。双通道协议。TFTP基于UDP&#xff0c;传输较快&#xff0c;但是不可靠。FTP有两种不同的传输模式 ASCII模式 传输文本文件时会对文本内容进行编码方式转换&#xff0c;提高传输效率&…

音视频技术开发周刊 | 302

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 ChatGPT神器Code Interpreter终于开放&#xff0c;到底怎么用&#xff1f;这里有一份保姆级教程 Code Interpreter 已经正式开放。 上海世界AI大会&#xff1a;MidJourney…

Fedproto:原型聚合的联邦学习框架

题目&#xff1a;FedProto: Federated Prototype Learning across Heterogeneous Clients 网址&#xff1a;http://arxiv.org/abs/2105.00243 目录 前言 什么是原型&#xff1f; Fedproto框架 fedproto settings Fedproto算法 优化目标 全局聚合 局部更新 伪代码 前言…

抖音seo源码搭建,抖音矩阵系统源码分发,抖音矩阵账号管理

前言&#xff1a; 抖音seo源码&#xff0c;抖音矩阵系统源码搭建&#xff0c;抖音矩阵同步分发。抖音seo源码部署是需要对接到这些正规接口再来做开发的&#xff0c;目前账号矩阵程序开发的功能&#xff0c;围绕一键管理多个账号&#xff0c;做到定时投放&#xff0c;关键词自动…

[Linux笔记]vim基础

vim本身不是像vs那样什么都能做的ide&#xff0c;只是单纯的编辑器。 命令行输入vim 文件名&#xff0c;会以vim打开文件。 若当前路径下尚无该名称的文件&#xff0c;则会在保存退出时创建该文件。 在vim中操作&#xff0c;尽量不要用鼠标及其滚轮操作&#xff0c;而只用键盘…

tql!AD域渗透信息收集可视化工具

工具介绍 adalanche是一款ad域中的ACL可视化及利用工具&#xff0c;和BloodHound功能类似&#xff0c;能方便域渗透人员快速发现域中的弱点&#xff1b;有开源版和商业两个版本。 关注【Hack分享吧】公众号&#xff0c;回复关键字【230709】获取下载链接 相比于BloodHound工具…

nest.js 添加 swagger 响应数据文档

基本使用 通常情况下&#xff0c;在 nest.js 的 swagger 页面文档中的响应数据文档默认如下 此时要为这个控制器添加响应数据文档的话&#xff0c;只需要先声明 数据的类型&#xff0c;然后通过ApiResponse 装饰器添加到该控制器上即可&#xff0c;举例说明 todo.entity.ts …

DP1044 CAN FD 待机模式总线收发器替代TJA1044

5V 供电&#xff0c;IO 口兼容 3.3V&#xff0c;5Mbps&#xff0c;CAN FD 待机模式总线收发器DP1044是一款应用于 CAN 协议控制器和物理总线之间的接口芯片&#xff0c;可应用于卡车、公交、小汽车、工业控制等领域&#xff0c;支持 5Mbps 灵活数据速率&#xff08;Flexible Da…

新零售商城系统开发流程,新零售商城系统的前景如何?

近10年来&#xff0c;新零售商城系统火爆的原因在于移动互联网普及、个性化需求的增加、优化用户体验、数据驱动的营销和线上线下融合。新零售商城系统是基于互联网技术的商城平台&#xff0c;通过线上线下融合、数据分析和个性化推荐等功能&#xff0c;为零售商提供全方位的销…

N!Weblogic CVE-2023-21839 RCE

项目简介 Weblogic CVE-2023-21839/CVE-2023-21931/CVE-2023-21979 一键检测工具&#xff0c;这是来自长亭xray的代码&#xff0c;该漏洞扫描已集成到新版本xray中。 关注【Hack分享吧】公众号&#xff0c;回复关键字【230708】获取下载链接 无需任何Java依赖&#xff0c;构造…

【C语言】unsigned 与 signed 详解

1. 基本概念 整数在存储单元中都是以补码形式存储的&#xff0c;存储单元中的第 1 个二进制位代表符号。整型变量的值的范围包括负数到正数。 但是在实际应用中&#xff0c;有的数据的范围常常只有正值&#xff08;如学号、年龄等&#xff09;&#xff0c;为了充分利用变量的值…

网盘工具alist在Windows中使用教程

alist 软件同时支持 http 协议和 WebDAV 协议&#xff0c;并且支持很多网盘种类&#xff0c;这样就给我们留下了很多可玩的空间&#xff0c;比如&#xff1a; 实现网盘本地化访问关联本地的播放器&#xff0c;以实现很好的播放效果多端文件互传&#xff0c;比如将阿里云盘的文…

GO语言slice

slice: data lencap 以及存取的元素是可以安全读写的 Slice 扩容。 1&#xff0c;预估&#xff1a; 2&#xff0c;预估容量后*字节数 所需的内存 3&#xff0c;各种语言从OS上提前申请内存&#xff0c;匹配GO规则的内存