阿里Sentinel入门教程

https://www.it610.com/article/1294173596180094976.htm

最近在学习阿里系的微服务组件,读了很多关于sentinel的文章感觉很好,遗憾的是网上理论文章太多缺少实践,今天我分享一个sentinel入门demo文章,以下将不再讲解任何理论只上干货,希望对想学习的朋友有所帮助。

一、sentinel 下载运行

1.1. 下载sentinel

首先访问 https://github.com/alibaba/Sentinel/releases 下载sentinel,我下载的是1.7.2版的。补充一下如果没有软件下载速度非常慢,很大可能会下载失败。

1.2. 启动运行

sentinel部署运行还是很简单的,它本身就是一个基于springboot开发的jar包,运行它只需要java -jar .\sentinel-dashboard-1.7.2.jar 即可,看到如下界面就说明已经启动成功了,其默认端口为8080,打开浏览器访问http://localhost:8080即能够发问到登录界面,用户名密码均为sentinel。

sentinel是一个懒加载框架,只有定义资源被访问后才会显示在界面中,第一次启动控制台界面为空。到此sentinel框架的下载运行就完成了是不是非常简单。

二、sentinel  流控规则

2.1. 创建java工程

(1)在pom.xml中引入依赖

com.alibaba.cloudspring-cloud-starter-alibaba-sentinel

(2)在aplication.yml文件中开启sentinel支持

其中主要是如下来个配置,一个是让程序可以连接到sentinel的地址,另一个是开启微服务调用支持,它是可选项如果就是一个单体测试工程则可不写。

spring.cloud.sentinel.transport.dashboard = 127.0.0.1:8080

feign.sentinel.enabled = true

spring:application:name: nacos-consumercloud:nacos:discovery:server-addr: 182.92.118.32:8848sentinel:transport:dashboard: 127.0.0.1:8081 # 指向sentinel地址server:port: 8081# 开启sentinel支持
feign:sentinel:enabled: true

 (3)定义资源及兜底方法

在工程中新建一个controller在其中定义方法,并采用 @SentinelResource 注解定义资源,其中value值是资源名,blockHandlerClass 和 blockHandler分别是兜底类和兜底方法,采用兜底类较在业务类中为每个方法单独写兜底方法优点在于避免代码的侵入和膨胀。

TestController 测试控制器类

package microapps.cn.jmeter.conctroller;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import microapps.cn.jmeter.handler.CustomerBlockHandler;
import microapps.cn.jmeter.handler.CustomerFallbackHandler;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;@RestController
@RequestMapping("user")
public class TestController {@GetMapping("/add")@SentinelResource(value="add",blockHandlerClass= CustomerBlockHandler.class,blockHandler="handlerException")public String testA(HttpServletRequest request) {return "add";}
}

CustomerBlockHandler 兜底类

package microapps.cn.jmeter.handler;import com.alibaba.csp.sentinel.slots.block.BlockException;import javax.servlet.http.HttpServletRequest;/*** 异常处理类*/
public class CustomerBlockHandler {/*** 异常处理方法* (1) blockHandler 函数访问范围需要是 public,返回类型需要与原方法相匹配,* (2) 参数类型需要和原方法相匹配并且最后加一个额外的参数,类型为 BlockException。* (3) 注意对应的函数必需为 static 函数* @param request* @param blockException* @return*/public static String handlerException(HttpServletRequest request,BlockException blockException){return "sentinel error";}
}

2.2. 运行程序定义规则

一切准备妥当后启动工程访问http://localhost:8081/user/add

刷新sentinel控制面板,此时在左侧菜单栏会出现你的服务名和一堆菜单

依次点击簇点链接->流控,在弹出界面中设置流控规则,其中阈值类型QPS指的是每秒访问次数,单机阈值这里我写1,它的意思是add资源1秒仅允许访问一次,超过即受到流量控制返回在兜底方法中定义的错误信息。

到这里一个sentinel简单的入门例子就编写完毕了,希望对有需要的同学有所帮助。

SpringCloudAlibabaSentinel入门教程相关推荐

  1. Kafka入门教程与详解

    1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件负责处理连接服务.消息的路由和传送.持久 ...

  2. 【CV】Pytorch一小时入门教程-代码详解

    目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...

  3. python tornado教程_Tornado 简单入门教程(零)——准备工作

    前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...

  4. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  5. mysql query browswer_MySQL数据库新特性之存储过程入门教程

    MySQL数据库新特性之存储过程入门教程 在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用 ...

  6. python tensorflow教程_TensorFlow入门教程TensorFlow 基本使用T

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 TensorFlow入门教程 TensorFlow 基本使用 TensorFlow官方中文教程 TensorFlow 的特点: 使用图 (graph) 来 ...

  7. air调用java,AIR2.0入门教程:与Java应用交互

    在之前的一篇文章中,我介绍了如何使用AIR2.0新增的NativeProcess类与本地进程进行交互和通讯,在那个例子里面我们使用了C++ 的代码,实际上只要是基于命令行的标准输入输出,AIR2.0的 ...

  8. 【Arduino】开发入门教程【一】什么是Arduino

    Arduino Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).它适用于艺术家.设计师.爱好者和对于"互动 ...

  9. python 三分钟入门_Cython 三分钟入门教程

    作者:perrygeo 译者:赖勇浩(http://laiyonghao.com) 原文:http://www.perrygeo.net/wordpress/?p=116 我最喜欢的是Python,它 ...

最新文章

  1. 算法---Lru缓存(Java)
  2. JSON Undefined 问题
  3. 使用 cf push 部署应用到 SAP BTP 后启动失败 start unsuccessful 该如何处理
  4. HDU 1003 Maxsum
  5. [置顶] 均衡音效
  6. Tutorial of Codeforces Round 729 (Div.2)
  7. UVA - 11029
  8. 一个简单的Python自动投票
  9. Java 中equals 与 == 的区别:
  10. linux PATH环境变量设置及查看
  11. 最详细的JavaScript教程(高级篇),深入学习JavaScript
  12. 安川机器人如何注释化指令_安川机器人指令一览
  13. 极大极小搜索算法 minimax search
  14. “开会” 引发的思考
  15. 华强盛HQST推出传输速度高达10Gbit/s网络变压器
  16. 谷歌掐架甲骨文:揭秘Java侵权案始末
  17. maven打包时依赖的项目包是时间戳而不是SNAPSHOT?
  18. html中背景色优先级,CSS背景颜色优先级
  19. UNIX环境高级编程源码
  20. windows 中NET 命令的使用

热门文章

  1. 全向轮移动平台参数校准
  2. 操作属性之修改样式属性
  3. java颜色常量,Java FX场景构建器无法识别css自定义颜色常量(或变量)
  4. channelinactive触发后不关闭channel_Go语言 | goroutine不只有基础的用法,还有这些你不知道的操作...
  5. java水仙花数代码_java知识分享篇(五)
  6. R语言CRAN软件包Meta分析 1
  7. iOS开发之SceneKit框架--实战地月系统围绕太阳旋转
  8. IDEA Unmapped Spring configuration files found.
  9. 信息隐藏技术与应用期末复习
  10. xb2xe2 是什么编码 php,python - 这是什么编码,如何解码