JAVA全系列 教程
3762个小节阅读:7095.2k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
除了使用Setinel解决缓存雪崩,我们可以使用Setinel对项目的任何接口进行流量防护。我们以分页查询秒杀商品为例,配置Setinel流量防护。
重启秒杀相关模块,在Sentinel配置分页查询秒杀接口的QPS为1
在Postman中测试分页查询秒杀接口是否被流量防护。
流量异常时,提示信息不是很友好,所以我们在代码中对流量异常进行统一处理。
在通用模块引入Sentinel依赖
xxxxxxxxxx
<!-- sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
在通用模块编写自定义流量异常处理器,统一处理流量异常。
xxxxxxxxxx
@Component
public class MyBlockExceptionHandler implements BlockExceptionHandler {
@Override
public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws Exception {
if (e instanceof FlowException){
BaseResult result = new BaseResult(701,"流量异常",null);
httpServletResponse.setContentType("text/json;charset=utf-8");
httpServletResponse.getWriter().write(JSON.toJSONString(result));
}
}
}
在org.springframework.boot.autoconfigure.AutoConfiguration.imports
中配置流量异常处理器,让每个模块都可以加载该处理器。
xxxxxxxxxx
com.itbaizhan.shopping_common.result.GlobalExceptionHandler
com.itbaizhan.shopping_common.result.MySentinelConfig
重启项目,访问分页查询秒杀商品功能