当前位置:   article > 正文

【仅是入门用】springboot-sentinel最基本入门Demo-1,代码方式编写限流规则,并接入到sintinel控制台,抛出异常的方式定义资源_spring boot sentinel demo

spring boot sentinel demo

限流规则配置的方式有两种
a 直接在代码中编写
b 通过sentinel的web控制台配置


1 引用maven依赖

  1. <!-- sentinel核心依赖 -->
  2. <dependency>
  3. <groupId>com.alibaba.csp</groupId>
  4. <artifactId>sentinel-core</artifactId>
  5. <version>1.7.2</version>
  6. </dependency>
  7. <!-- 本应用接入到sentinel控制台的依赖 -->
  8. <dependency>
  9. <groupId>com.alibaba.csp</groupId>
  10. <artifactId>sentinel-transport-simple-http</artifactId>
  11. <version>1.7.2</version>
  12. </dependency>

2 代码方式编写限流规则,并调用规则做限流

  1. package cn.jiqistudy.boot_1test.Control;
  2. import cn.jiqistudy.boot_1test.pojo.Yonghu;
  3. import com.alibaba.csp.sentinel.Entry;
  4. import com.alibaba.csp.sentinel.SphU;
  5. import com.alibaba.csp.sentinel.slots.block.RuleConstant;
  6. import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
  7. import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import javax.annotation.PostConstruct;
  11. import javax.servlet.http.HttpServletRequest;
  12. import java.util.ArrayList;
  13. @RestController
  14. public class test_2 {
  15. @RequestMapping(value = "/getuser")
  16. public Object fangfa1(HttpServletRequest request) {
  17. /*
  18. 加载限流规则,此为jdk8后的写法,try()中是 资源 实现了 自动关闭接口AutoCloseable
  19. */
  20. try (Entry ziyuan_1 = SphU.entry("ziyuan_1")) {
  21. //被保护的资源
  22. Yonghu user_1 = new Yonghu(1, "zhangshan_" + request.getSession().getId(), "男", 23, "湖南");
  23. return user_1;
  24. } catch (Exception e) {
  25. //被限流或被降级的操作处理
  26. e.printStackTrace();
  27. return "系统繁忙,请稍候";
  28. }
  29. }
  30. /*
  31. 定义限流规则
  32. 在构造函数执行之后执行
  33. */
  34. @PostConstruct
  35. public void initFlowRules() {
  36. //存放限流规则的集合
  37. ArrayList<FlowRule> flowRules = new ArrayList<>();
  38. //限流规则
  39. FlowRule flowRule = new FlowRule();
  40. //定义资源,对哪个资源起作用
  41. flowRule.setResource("ziyuan_1");
  42. //定义限流规则类型,这里为QPS
  43. flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);
  44. //定义QPS第秒能通过的请求的个数
  45. flowRule.setCount(2);
  46. //添加到集合中
  47. flowRules.add(flowRule);
  48. //加载限流规则
  49. FlowRuleManager.loadRules(flowRules);
  50. }
  51. }

3 sentinel控制台的搭建,就是个springboot jar包,直接启动就可以了,这里以docker的方式安装,可查看以下博文
使用Docker的方式安装Sentinel-Web控制台_在docker中安装sentinel_小哇666的博客-CSDN博客

4 在程序的启动配置中添加如下参数,设置连接到 sentinel控制台
-Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=application_1
参数含义分别是sentinel控制台的地址,和在sentinel控制台中显示的应用的名称



5 开始测试,访问 http://localhost:8089/getuser
慢慢刷新,可正常访问,如果访问非常频繁,就会被限流,显示 "系统繁忙...."

6 查看sentinel控制台,用户和密码默认都是sentinel


 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/889189
推荐阅读
相关标签
  

闽ICP备14008679号