springboot 整合sentinel的示例代码
1. 安装sentinel
下载地址:https://github.com/alibaba/Sentinel/releases/tag/1.7.0 ,由于我无法下载,所以使用docker安装,
yuchunfang@yuchunfangdeMacBook-Pro ~ % docker pull bladex/sentinel-dashboard:1.7.0
yuchunfang@yuchunfangdeMacBook-Pro ~ % docker run --name sentinel -d -p 8858:8858 bladex/sentinel-dashboard:1.7.0
登录地址,默认端口是8080,由于我的已被占用,所以使用8858,http://localhost:8858
账号密码:sentinel/sentinel,能够打开访问页面,说明安装成功。
2.客户端连接
1. 准备springboot项目,在pom中引入sentinel
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
2.配置文件配置服务器地址信息
spring.cloud.sentinel.transport.dashboard=localhost:8858
spring.cloud.sentinel.transport.heartbeat-interval-ms=500
spring.cloud.sentinel.eager=true
3.自定义异常提示信息
package org.example.config;
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class SentinelExceptionHandler implements BlockExceptionHandler {
@Override
public void handle(HttpServletRequest httpServletRequest, HttpServletResponse response, BlockException e) throws Exception {
response.setStatus(HttpStatus.TOO_MANY_REQUESTS.value());
response.setContentType("application/json;charset=utf-8");
response.getWriter().print("sentinel 限流。。。");
}
}
BlockException包含很多个子类,分别对应不同的场景:
异常 说明
FlowException 限流异常
ParamFlowException 热点参数限流的异常
DegradeException 降级异常
AuthorityException 授权规则异常
SystemBlockException 系统规则异常
4.在sentinel中配置限流的接口
当客户端连接好sentinel以后,首页会增加一列客户端的服务,在其中增加流控规则,其中资源名为接口地址,配置阀值,查看是否生效,可以配置流控,降级,热点等相关配置,默认情况下,发生限流、降级、授权拦截时,都会进入自定义异常。
可以看到当配置的请求地址访问频率大于设置的阀值时,流控生效,起到保护服务器的作用
到此这篇关于springboot 整合sentinel的示例代码的文章就介绍到这了,更多相关springboot 整合sentinel内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341