当前位置: 首页 > news >正文

10-使用sentinel流控

本文介绍sentinel的直接流控的使用。

0、环境

  • jdk 1.8
  • sentinel 1.8.2
  • springboot 2.4.2

1、sentinel环境搭建

从官方发布的网站上下载: sentinel Jar,下载对应版本。
下载完成后,进入刚才下载的Jar文件所在的目录,执行如下命令:

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.2.jar

正常启动后,浏览器访问: http://localhost:8080,显示sentinel登录页面,用户名和密码默认都是sentinel。到这里,sentinel就搭建完成了。

2、集成sentinel

引入依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2021.1</version>
</dependency>

在application.yml文件中配置连接信息,配置如下:

spring:cloud:sentinel:transport:port: 8719dashboard: localhost:8080

其中,8719是sentinel api的默认端口。

3、配置资源

写一个简单的controller,代码如下:

@RestController
@RequestMapping("/sentinel")
@Slf4j
public class SampleController {/*** @SentinelResource注解标注此方法需要流量控制,blockHandler指定当触发流控后,要执行的业务逻辑。* 此处指定对应的方法名称,注意,方法名称需要和流控标注的方法签名完全一样。*/@GetMapping("/1")@SentinelResource(value = "sentinel1", blockHandler = "sentinel1Block")@ResponseBodypublic Map<String, String> sentinel1() {log.info("sentinel1()");Map<String, String> map = new HashMap();map.put("value", "1");return map;}public Map<String, String> sentinel1Block(BlockException blockException) {log.info("接口限流了!!!");return new HashMap<>();}}

4、设置流控规则

打开sentinel控制台,找到对应的服务,如果没找到,就手动向自己的服务发几次请求,再次刷新sentinel控制台,你的服务就出现了。

点击“流控规则”,再点击“新增流控规则”,输入如下图:
在这里插入图片描述
保存后,即可启动服务测试了。注意:这里使用的是直接流控模式,其作用是针对注解标注的controller接口。

测试就不说了吧,用postman或命令行都行。我用命令行:

curl --location --request GET 'http://localhost:9080/sentinel/1' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Accept: */*' \
--header 'Host: localhost:9080' \
--header 'Connection: keep-alive'

这是在mac环境的测试命令,注意,与Windows的区别。好了,就到这里吧。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 免费Excel数据批量转Word工具
  • Affine Transformations仿射变换
  • Android的日志工具Log
  • 负载均衡---相关概念介绍(一)
  • 华为AR1220配置GRE隧道
  • 国外有哪些好用的AI工具?
  • 【MySQL】索引和事务
  • SQLite 创建表
  • Linux | Linux开发工具链全攻略:yum、vim、gcc/g++、GDB、Makefile与git版本控制
  • 解密!抖音百万粉丝博主三维地图视频都用到了什么GIS数据和技术
  • c++----简单了解string
  • 利用keepalived达成服务高可用
  • Git使用方法(二)---常用命令-半小时学会git
  • rust 编译时报错:type annotations needed for Box
  • ant design pro v6 如何做好角色管理
  • ➹使用webpack配置多页面应用(MPA)
  • echarts的各种常用效果展示
  • httpie使用详解
  • input实现文字超出省略号功能
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • leetcode-27. Remove Element
  • Map集合、散列表、红黑树介绍
  • mysql 数据库四种事务隔离级别
  • PHP面试之三:MySQL数据库
  • Swift 中的尾递归和蹦床
  • ubuntu 下nginx安装 并支持https协议
  • Vim 折腾记
  • vue 配置sass、scss全局变量
  • 多线程 start 和 run 方法到底有什么区别?
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 如何利用MongoDB打造TOP榜小程序
  • 算法-图和图算法
  • 我看到的前端
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • Linux权限管理(week1_day5)--技术流ken
  • Spring第一个helloWorld
  • ​Python 3 新特性:类型注解
  • # .NET Framework中使用命名管道进行进程间通信
  • #NOIP 2014# day.1 T2 联合权值
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #前后端分离# 头条发布系统
  • (2)(2.10) LTM telemetry
  • (2)Java 简介
  • (6)设计一个TimeMap
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (ros//EnvironmentVariables)ros环境变量
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (算法二)滑动窗口
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库