首页 > 其他分享 >Sentinel实现接口流量控制

Sentinel实现接口流量控制

时间:2023-08-23 19:12:00浏览次数:51  
标签:流量 alibaba sentinel 限流 接口 Sentinel com cloud

简介

Sentinel是阿里巴巴开源的限流器熔断器,并且带有可视化操作界面。

启动控制台

下载地址

java -Dserver.port=8089 -Dcsp.sentinel.dashboard.server=localhost:8089 -Dproject.name=sentinel-dashboard -jar  sentinel-dashboard-1.8.6.jar

注意不要使用windows下的PowerShell,要使用默认的命令行工具(cmd),不然报错误: 找不到或无法加载主类 .port=8089

http://localhost:8089 来打开控制台,默认账号密码 sentinel/sentinel

image

客户端使用

添加依赖

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
    <version>1.6.3</version>
</dependency>
<!-- sentinel -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

添加控制台和nacos的配置

通过nacos来存储限流规则

spring:
  application:
    name: spring-seata-product
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8089
      datasource:
        ds:
          nacos:
            server-addr: 42.192.20.119:8848
            data_id: ${spring.application.name}-flow-rule.json
            group-id: DEFAULT_GROUP
            data-type: json
            rule-type: flow

具体规则如下

[
    {
	"resource": "/info", // 限制的资源
	"limitApp": "default", 
	"grade": 1, // 基于QPS控制
	"count": 2, // 限流阈值
	"strategy": 0, // 根据调用方限流
	"controlBehavior": 0, // 控制手段 超过直接拒绝
	"clusterMode": false
    }
]

更多字段的含义可以查看官方文档,或者查看源码中的 com.alibaba.csp.sentinel.slots.block.flow.FlowRule类。

定义资源

@RestController
public class HealthController {

    @SentinelResource(value = "/info")
    @GetMapping("/info")
    public String info() {
        return "success";
    }
}

通过@SentinelResource注解来定义资源

限流效果

image

Blocked by Sentinel (flow limiting)

原理分析

  1. com.alibaba.cloud.sentinel.SentinelWebAutoConfiguration配置类中配置了CommonFilter
  2. com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration配置类中配置了SentinelResourceAspect,拦截所有包含@SentinelResource注解的方法
  3. 过滤器和拦截器最终都会进入com.alibaba.csp.sentinel.SphU的entry()方法
  4. 会进入com.alibaba.csp.sentinel.slots.block.flow.FlowSlot的entry()方法
  5. 使用FlowRuleChecker来进行流量检查,如果不能通过,抛出FlowException异常,过滤器捕获此异常做处理。

参考

Spring Boot 集成 Sentinel 实现接口流量控制
springboot集成Sentinel & Nacos「持久化」
阿里 Sentinel 源码解析-javadoop.com
官方文档

标签:流量,alibaba,sentinel,限流,接口,Sentinel,com,cloud
From: https://www.cnblogs.com/strongmore/p/17306569.html

相关文章

  • 朋友圈发圈文案防折叠不折叠转换流量主小程序开发
    朋友圈发圈文案防折叠不折叠转换流量主小程序开发不折叠:转发此条动态,帮我解锁朋友圈新技能,让你的朋友圈精彩!折叠转不折叠:转发此动态,即可开启朋友圈折叠转不折叠的功能,让你的朋友圈变得更加多彩!流量主功能列表:在朋友圈发布广告、赚取流量主收益,让你的好文赚!赚取流量主收益:开启流量主......
  • SIT1040Q 5V 供电,±40V 接口耐压,1Mbps 高速 CAN 总线收发器
    SIT1040Q是一款应用于CAN协议控制器和物理总线之间的接口芯片,可应用于卡车、公交、小汽车、工业控制等领域,速率可达到1Mbps,具有在总线与CAN协议控制器之间进行差分信号传输的能力。完全兼容“ISO11898”标准;符合AEC-Q100要求;内置过温保护;过流保护功能;显性超时......
  • API接口变更频繁,协作效率低?试试Apipost
    在团队协作开发和API管理过程中,API接口变更频繁、变更信息得不到及时同步且同步后沟通效率低,各个环节人员处理问题节奏不统一等等,都是在API开发中很多开发者面临的痛点。这些痛点可能会导致工作进度受阻、出现重复动作等多个问题,甚至给整个项目带来风险。这些问题在项目研发中是不......
  • 网络安全-修改基础接口配置(MSTP负载均衡)
    [s3-GigabitEthernet0/0/1]disthis#interfaceGigabitEthernet0/0/1portlink-typeaccessportdefaultvlan10#return[s3-GigabitEthernet0/0/1]portde [s3-GigabitEthernet0/0/1]portdefaultvlan1\^Error:Wrongparam......
  • 微信小程序调用微信接口报40001
    背景小程序登录需要获取手机号,调用该接口发现接口报错并返回错误码40001。该错误码官方解释:获取access_token时AppSecret错误,或者access_token无效。请开发者认真比对AppSecret的正确性,或查看是否正在为恰当的公众号调用接口。排查发现reids里的token缓存并没有过期,后面......
  • 拼多多app商品详情接口 获取pdd商品主图价格销量库存信息
    拼多多是中国一家知名的电商平台,以"社交+团购+新零售"的商业模式闻名,通过手机app和微信小程序等渠道提供商品销售和购物体验。平台上的商品种类丰富多样,涵盖了服装、家居、美妆、食品、数码电子等各个领域。拼多多的商业模式主要是基于团购和拼团的形式,用户可以邀请亲友们一起参......
  • CRUD接口_新增操作
        ......
  • CRUD接口_删除操作
         ......
  • PHP接口请求参数对策加密+
    <?php//加密publicfunctionencrypt($data){$id=json_encode($data);$str=base64_encode($id);$str=openssl_encrypt($str,'aes-128-cbc',\config('aes_passwd'),OPENSSL_ZERO_PADDING,\config('aes_iv&......
  • word在线预览1.直接预览-格式问题(效果差)2.使用微软接口或第三方收费接口(必须是外网,可
    1.先介绍第一种方案(纯前端)npminstall以下依赖--save"@vue-office/docx":"^1.3.0", "@vue/composition-api":"^1.3.0","vue-demi":"^0.14.5",<template><divclass="app-container"......