Spring Cloud整合Sentinel
Posted java1234_小锋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud整合Sentinel相关的知识,希望对你有一定的参考价值。
Spring Cloud Alibaba默认为Sentinel整合了Servlet、RestTemplate、 FeignClient和Spring WebFlux。它不仅补全了Hystrix在Servlet和RestTemplate这一块的空白,而且还完全兼容了Hystrix在FeignClient中限流降级的用法,并支持灵活配置和调整流控规则。
第一步:新建sentinel-springcloud子模块项目,pom.xml添加spring-cloud-starter-alibaba-sentinel
依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
第二步:新建SentinelHelloWorldControllerc测试类
package com.java1234.controller;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author java1234_小锋
* @site www.java1234.com
* @company Java知识分享网
* @create 2021-05-04 14:35
*/
@RestController
public class SentinelHelloWorldController {
/**
* 注解方式定义资源
* @SentinelResource value 资源名称
* @SentinelResource blockHandler 调用被限流/降级/系统保护的时候调用的方法
* @return
*/
@SentinelResource(value = "helloWorld_springcloud",blockHandler = "blockHandlerForHelloWorld3")
@RequestMapping("helloWorld3")
public String helloWorld3(){
return "Sentinel 大爷你好!by 注解方式@SentinelResource"+System.currentTimeMillis();
}
/**
* 原方法调用被限流/降级/系统保护的时候调用
* @param ex
* @return
*/
public String blockHandlerForHelloWorld3(BlockException ex) {
ex.printStackTrace();
return "系统繁忙,请稍后!";
}
}
第三步:application.yml
配置本地项目接入Dashboard控制台
spring:
application:
name: sentinel_springcloud # 设置应用名称
cloud:
sentinel:
transport:
dashboard: localhost:8080 # 设置Sentinel连接控制台的主机地址和端口
第四步:Sentinel Dashboard增加流控规则
第五步:测试
浏览器地址栏输入:http://localhost/helloWorld3
正常显示:
如果频繁访问,则被流控
微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。
以上是关于Spring Cloud整合Sentinel的主要内容,如果未能解决你的问题,请参考以下文章
spring cloud gateway整合sentinel作网关限流
springcloud 微服务Spring Cloud Alibaba整合Sentinel详解
Spring Cloud Gateway 整合 sentinel 实现流控熔断
Spring Cloud Gateway 整合 sentinel 实现流控熔断