前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sentinel接入SpringCloud(一)

Sentinel接入SpringCloud(一)

作者头像
背雷管的小青年
修改2020-06-09 11:41:13
7670
修改2020-06-09 11:41:13
举报
文章被收录于专栏:技术开发——你我他

目标:手动配置限流资源保护 工具:IDEA--2020.1、Nacos、本地服务器(作为测试) 学习目标:手动配置限流资源保护 本次学习的工程下载链接放到文本最后面

  • 创建一个基于Springboot的项目,并集成Greenwich.SR2版本的依赖,并添加Sentinel依赖包:
代码语言:javascript
复制
<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>

</dependencyManagement>

  • 创建一个REST接口,并通过@SentinelResource配置限流保护资源 //创建一个REST接口,并通过@SentinelResource配置限流保护资源
代码语言:javascript
复制
> @RestController 
> public class HelloController {
>     //配置后触发限流调用blockHandler中的参数资源  多刷新界面几次就能看到效果了
>     @SentinelResource(value = "hello",blockHandler = "blockHandlerHello")
>     @GetMapping("/say")
>     public String hello(){
>         return "hello ,xmaven";
>     }
>     public String blockHandlerHello(BlockException e){
>         return "被限流了";
>     } }
  • 手动配置限流规则 //手动配置限流规则,通过Sentinel的InitFunc SPI接口来实现,只需要实现自己的InitFunc接口,并在init方法中编写规则加载的逻辑即可 //还需要在resource下的META-INF.services下配置这个包的路径com.xmaven.FlowRuleInitFunc
代码语言:javascript
复制
public class FlowRuleInitFunc implements InitFunc{
@Override
public void init() throws Exception {
    List<FlowRule> rules=new ArrayList<>();
    FlowRule rule=new FlowRule();
    rule.setCount(1);
    rule.setResource("hello");
    rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
    rule.setLimitApp("default");
    rules.add(rule);
    FlowRuleManager.loadRules(rules);
} }

  • 还要在Resource目录下创建META-INF/com.alibaba.csp.sentinel.init.InitFunc文件,文件就是自动以扩展点的全路径 com.xmaven.FlowRuleInitFunc
代码语言:javascript
复制
启动服务后,访问http://localhost:8090/say方法,多刷新访问几次,超过设定的阈值,就会触发限流
54%_K~65R}HP43U0B6WWI9P.png
54%_K~65R}HP43U0B6WWI9P.png

下载链接:spring-cloud-sentinel-sample.rar

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档