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

joomla 网站建设教程/社群营销方案

joomla 网站建设教程,社群营销方案,周口哪里做网站,qq空间做淘宝客网站Spring Cloud(微服务)学习篇(七) 1.使用代码的方式实现流量限制规则 1.1 变更SentinelController类 1.1.1 加入的代码 //流控限制 (一个或多个资源限流), postConstruct注解的作用是保证项目一启动就会加载,// 一个rule就是一个规则PostConstructpublic void FlowRule(){Li…

Spring Cloud(微服务)学习篇(七)

1.使用代码的方式实现流量限制规则

1.1 变更SentinelController类

1.1.1 加入的代码

//流控限制 (一个或多个资源限流), postConstruct注解的作用是保证项目一启动就会加载,// 一个rule就是一个规则@PostConstructpublic void FlowRule(){List<FlowRule> rules = new ArrayList<FlowRule>();FlowRule rule = new FlowRule();rule.setResource("find");//资源名// set limit qps to 10rule.setCount(7);//并发数 1s钟最多执行次数rule.setGrade(RuleConstant.FLOW_GRADE_QPS);rule.setLimitApp("default");rules.add(rule);FlowRuleManager.loadRules(rules);}

1.2.1 完整的SentinelController类代码

package com.zlz.controller;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;@RestController
public class SentinelController {int count=0;@SentinelResource("find")//资源名称和下方一致@RequestMapping("find")public String find(){count++;System.out.println("进入用户查询方法");return "查询用户:"+count;}//流控限制 (一个或多个资源限流), postConstruct注解的作用是保证项目一启动就会加载,// 一个rule就是一个规则@PostConstructpublic void FlowRule(){List<FlowRule> rules = new ArrayList<FlowRule>();FlowRule rule = new FlowRule();rule.setResource("find");//资源名// set limit qps to 10rule.setCount(7);//并发数 1s钟最多执行次数rule.setGrade(RuleConstant.FLOW_GRADE_QPS);rule.setLimitApp("default");rules.add(rule);FlowRuleManager.loadRules(rules);}
}

1.2 测试

1.2.1 查看Mysql服务是否打开(只有mysql服务打开,启动nacos窗口才正常)

在这里插入图片描述

1.2.2 启动nacos服务

在这里插入图片描述

1.2.3 启动Sentinel控制台项目

a 找到sentinel控制台jar包所在的位置➡输入java -jar sentinel-dashboard.jar➡回车

在这里插入图片描述

b 回车后的界面

在这里插入图片描述

c 通过浏览器登录进入Sentinel后台界面
c.1 在浏览器输入地址localhost:8080后跳转的页面

在这里插入图片描述

c.2 输入账户和密码后跳转的页面

在这里插入图片描述

1.2.4 启动用户服务

在这里插入图片描述

1.2.5 点击刷新Sentinal控制台界面➡点击shop-user➡流控规则

在这里插入图片描述

1.2.6 点击编辑

在这里插入图片描述

1.2.7 点击编辑按钮后跳转的页面

在这里插入图片描述

2 对流量限流给出友好提示

2.1 定义方法的形式

2.1.1 更新SentinelController类

a 加入的代码
//    blockHandler就是 限流了应该怎么处理,通常是用于查询的请求,因为这样做本质上是丢弃了这个请求
//    必须要有BlockException e
//需要与原来方法(find方法)的返回值一模一样
//①新增xlHandler方法public String xlHandler(BlockException e){//请求太多放弃掉 查询return "当前访问人数过多 请稍后再试";}
//② 在find方法的@SentinelResource注解里面加上blockHandler = "xlHandler"
b 完整的SentinelController类
package com.zlz.controller;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import com.zlz.handler.SentinelHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;@RestController
public class SentinelController {int count=0;//blockHandler指定的是方法@SentinelResource(value="find",blockHandler = "xlHandler")//资源名称和下方一致@RequestMapping("find")public String find(){count++;System.out.println("进入用户查询方法");return "查询用户:"+count;}//流控限制 (一个或多个资源限流), postConstruct注解的作用是保证项目一启动就会加载,// 一个rule就是一个规则@PostConstructpublic void FlowRule(){List<FlowRule> rules = new ArrayList<FlowRule>();FlowRule rule = new FlowRule();rule.setResource("find");//资源名// set limit qps to 10rule.setCount(7);//并发数 1s钟最多执行次数rule.setGrade(RuleConstant.FLOW_GRADE_QPS);rule.setLimitApp("default");rules.add(rule);FlowRuleManager.loadRules(rules);}//    blockHandler就是 限流了应该怎么处理
//必须要有BlockException e,若find方法有形参,那么这个方法也得有相应顺序的形参,但是最后一个形参一定是e
//需要与原来方法(find方法)的返回值一模一样public String xlHandler(BlockException e){//原理是请求太多放弃掉查询return "当前访问人数过多 请稍后再试";}
}

2.1.2 测试

a 重新启动用户服务

在这里插入图片描述

b jemeter压力测试
b.1 添加线程组

在这里插入图片描述

b.2 编辑线程组

在这里插入图片描述

b.3 创建HTTP请求

在这里插入图片描述

b.4 编辑HTTP请求

在这里插入图片描述

b.5 在线程组下面创建结果树

在这里插入图片描述

b.6 点击绿色按钮➡点击NO按钮

在这里插入图片描述

b.7 点击前7个的HTTP请求的任意一个,都是正常访问

在这里插入图片描述

b.8 点击后三个的HTTP请求的任意一个,都是显示当前访问人数过多,请稍后再试

在这里插入图片描述

2.2 定义类的方式(处理方法在类中)

2.2.1 在zlz包下创建handler包并创建SentinelHandler类

package com.zlz.handler;import com.alibaba.csp.sentinel.slots.block.BlockException;public class SentinelHandler {//这个方法必须是静态方法public static String xlHandler(BlockException e){//请求太多放弃掉 查询return "当前访问人数过多 请稍后再试";}
}

2.2.2 更新SentinelController类

a 加入的代码
//① 在find方法的@SentinelResource注解里面加上blockHandler = "xlHandler" blockHandlerClass = SentinelHandler.class
b 完整的SentinelController类
package com.zlz.controller;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import com.zlz.handler.SentinelHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;@RestController
public class SentinelController {int count=0;@SentinelResource(value="find",blockHandler = "xlHandler",blockHandlerClass = SentinelHandler.class)//资源名称和下方一致@RequestMapping("find")public String find(){count++;System.out.println("进入用户查询方法");return "查询用户:"+count;}//流控限制 (一个或多个资源限流), postConstruct注解的作用是保证项目一启动就会加载,// 一个rule就是一个规则@PostConstructpublic void FlowRule(){List<FlowRule> rules = new ArrayList<FlowRule>();FlowRule rule = new FlowRule();rule.setResource("find");//资源名rule.setCount(7);//并发数 1s钟最多执行次数rule.setGrade(RuleConstant.FLOW_GRADE_QPS);rule.setLimitApp("default");rules.add(rule);FlowRuleManager.loadRules(rules);}
}

2.2.2 测试

a 重新启动用户服务

在这里插入图片描述

b jemeter压力测试
b.1 清除之前的结果

在这里插入图片描述

b.2 重新点击绿色按钮➡点击NO按钮

在这里插入图片描述

b.3 点击前7个的HTTP请求的任意一个,都没有限流提示

在这里插入图片描述

b.4 点击后三个的HTTP请求的任意一个,都有限流提示

在这里插入图片描述

http://www.jmfq.cn/news/5310127.html

相关文章:

  • 番禺网站建设设计/百度竞价怎么开户
  • 项目建设网站/百度发布信息怎么弄
  • 常州网站建设教程/互联网广告联盟
  • 网站建设材料/广州百度推广代理公司
  • 萝岗网站建设/广告优化师
  • 大同网站建设优化推广/百度企业号
  • 海口手机版网站建设/百度软文
  • 洛阳建设网站的公司/怎么做信息流广告代理商
  • h5响应式网站建设价格/引流推广是什么意思
  • 网站后台怎么建设/seo 首页
  • 免费微网站建设/百度搜索下载安装
  • 淮安住房和城乡建设委员会网站/网络公司seo推广
  • 乐从网站建设公司/站长工具永久
  • 常见问题 网站建设/百度竞价规则
  • 深圳市南山区建设局网站/临沂seo推广
  • 网站建设与维护 出题/市场调研报告最佳范文
  • 建设网站 软件推荐/百度指数支持数据下载吗
  • 苏州市建设工程交易中心网站/网络推广计划方案
  • 龙华网站建设的公司/百度关键词模拟点击软件
  • 网站建设与运行/中国企业500强排行榜
  • 就业网站建设方案/优化外包哪里好
  • 浑南区建设局网站/怎么做推广网络
  • 网站建设浏览器不兼容/品牌策划公司排名
  • 建设公司网站需要注意哪些/新手怎么学网络运营
  • 网站建设测试验收报告/自己做seo网站推广
  • 兰州网站程序建设/免费下载优化大师
  • 殷氏科技网站建设工作室/百度贴吧的互动社区
  • 邯郸网站建设服务报价/排超联赛积分榜
  • 用织梦建设网站/百度极速版客服电话
  • 网站建设 中国移动/怎么在百度上打广告