今日热门!一文搞懂基于 Sentinel Dashboard 进行接口限流 - 行业动态 -

当前位置:首页  >  行业动态  > 正文

今日热门!一文搞懂基于 Sentinel Dashboard 进行接口限流

今日热门!一文搞懂基于 Sentinel Dashboard 进行接口限流
2023-02-16 01:09:16 来源:腾讯云

Hello folks,今天我们介绍一下由 Spring Cloud Alibaba 推出的开源项目 Sentinel。Sentinel 是一款面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。

Sentinel 的使用可以基于如下两个部分:


(相关资料图)

核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配)。控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。

在进行 Sentinel 实践之前,我们先来了解一下其所涉及的基础理论知识。主要涉及基本概念、原理等。

Sentinel 基本概念

关于 Sentinel,我们先来了解以下概念:

1、资源

资源是 Sentinel 的一项关键因素。其可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。

只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。通常情况下,我们可以使用方法签名,URL,甚至服务名称作为资源名来标识资源。

2、规则

围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。

Sentinel 基本原理

在 Sentinel 体系里面,所有的资源都对应一个资源名称以及一个 Entry。Entry 可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用 API 显式创建;每一个 Entry 创建的时候,同时也会创建一系列功能插槽(slot chain)。这些插槽有不同的职责,例如:

1、NodeSelectorSlot 负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级;

2、ClusterBuilderSlot 则用于存储资源的统计信息以及调用者信息,例如该资源的 RT、QPS 以及 Thread Count 等等,这些信息将用作为多维度限流,降级的依据;

3、StatisticSlot 则用于记录、统计不同纬度的 Runtime 指标监控信息;

4、FlowSlot 则用于根据预设的限流规则以及前面 Slot 统计的状态,来进行流量控制;

5、AuthoritySlot 则根据配置的黑白名单和调用来源信息,来做黑白名单控制;

6、DegradeSlot 则通过统计信息以及预设的规则,来做熔断降级;

7、SystemSlot 则通过系统的状态,例如 Load 等,来控制总的入口流量。

Sentinel 总体框架如下所示:

基于上述系统框架所示,Sentinel 的主要工作机制可以概括如下:

1、对主流框架提供适配或者显示的 API,来定义需要保护的资源,并提供设施对资源进行实时统计和调用链路分析。

2、根据预设的规则,结合对资源的实时统计信息,对流量进行控制。同时,Sentinel 提供开放的接口,方便您定义及改变规则。

3、Sentinel 提供实时的监控系统,方便快速了解目前系统的状态。

介绍完 Sentinel 相关的理论知识后,接下来,我们进入本文的主题。

Sentinel-Dashboard 安装

在 https://github.com/alibaba/Sentinel/releases 页面下载最新的版本包,然后通过命令行启动,具体如下所示:

[leonli@Leon usr ] % nohup java -jar sentinel-dashboard-1.8.6.jar > sentinel.log &[1] 2096

此时,浏览器中输入:http://localhost:8080/#/login ,页面显示如下:

默认情况下,sentinel-dashboard 以 8080 端口启动运行,当然可以进行配置其他端口。此处的登陆凭证信息,我们可以在 sentinel-dashboard 包中的配置文件中获取到。

此时,我们输入账户密码(sentinel/sentinel)登录后,可以看到如下页面:

编写 DemoApplication 程序

1、POM.XML 文件配置

在 Spring Cloud 应用的 pom.xml 中引入Spring Cloud Alibaba 的 Sentinel 模块,具体如下所示:

    4.0.0    com.didispace    alibaba-sentinel-rate-limiting    0.0.1-SNAPSHOT    jar            org.springframework.boot        spring-boot-starter-parent        2.0.5.RELEASE                         UTF-8        UTF-8        1.8                            org.springframework.boot            spring-boot-starter-web                            org.springframework.cloud            spring-cloud-starter-alibaba-sentinel                            org.projectlombok            lombok            1.18.2            true                            org.springframework.boot            spring-boot-starter-test            test                                                    org.springframework.cloud                spring-cloud-dependencies                Finchley.SR1                pom                import                                        org.springframework.cloud                spring-cloud-alibaba-dependencies                0.2.2.RELEASE                pom                import                                                                org.springframework.boot                spring-boot-maven-plugin                        

2、Resource 定义

在 Spring Cloud 应用中通过 spring.cloud.sentinel.transport.dashboard 参数配置 sentinel dashboard 的访问地址。通常在 application.properties 或 yml 文件中定义,具体如下所示:

spring.application.name=alibaba-sentinel-rate-limitingserver.port=8001# sentinel dashboardspring.cloud.sentinel.transport.dashboard=localhost:8080

3、编写 Demo 代码

创建应用主类,并提供一个 Rest 接口,具体如下所示:

package com.leon.alibaba.sentinel;import lombok.extern.slf4j.Slf4j;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@SpringBootApplicationpublic class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }    @Slf4j    @RestController    static class DemoController {        @GetMapping("/devops")        public String devops() {            return "Starting DemoApplication on leon.com.cn";        }    }}

完成后,启动程序,如下所示:

此时,通过后台进行 Curl 命令操作,有结果返回。具体如下所示:

[leonli@Leon usr ] % curl -i http://localhost:8001/devops/HTTP/1.1 200 Content-Type: text/plain;charset=UTF-8Content-Length: 39Date: Wed, 16 Nov 2022 14:40:16 GMTStarting DemoApplication on leon.com.cn  

再次进入 Sentinel-Dashboard 页面,可以看到如下:

Sentinel 限流实践

接下来,点击左侧的“簇点链路”菜单栏目,基于所调用的 /devops 接口进行“流控”操作,以配置自定义的限流规则,具体如下所示:

点击“流控”操作后,弹出新增流控规则窗口,如下:

点击“新增”按钮后,进入流控规则页面,这里我们基于 QPS 指标,每秒最多允许“ 5 个请求进入”此限流规则进行策略定义。所设置的限流规则将会显示在列表中,此列表显示所有规则,并可以对其进行更新操作。

接下来,我们来验证一下这个限流规则,我们可以尝试一下借用 Curl 命令行快速的调用此接口,以确认其是否会触发限流控制,具体如下所示:

[leonli@Leon ~ ] % curl http://192.168.0.102:8001/devopsStarting DemoApplication on leon.com.cn  [leonli@Leon ~ ] % curl http://192.168.0.102:8001/devopsStarting DemoApplication on leon.com.cn [leonli@Leon ~ ] % curl http://192.168.0.102:8001/devopsStarting DemoApplication on leon.com.cn                                                                                                                                  [leonli@Leon ~ ] % curl http://192.168.0.102:8001/devopsStarting DemoApplication on leon.com.cn                                                                                                                                   [leonli@Leon ~ ] % curl http://192.168.0.102:8001/devopsBlocked by Sentinel (flow limiting) 

基于上述的测试结果:我们发现,快速的进行五次 “/deveops” 调用接口之后,第六次调用时被 Sentinel 阻塞了,即进行流量管控。

如上为 Sentinel 及 Dashboard 的 限流实践解析,希望对大家有用。关于 Sentinel更多需要了解的信息,欢迎大家交流、关注!

Adiós !

- EOF -

标签: Spring Cloud Spring Java

(责任编辑:news01)
综合利用总产值_综合利用产值怎么算 环球新动态

综合利用总产值_综合利用产值怎么算 环球新动态

1、某一夜我梦到玉米地黑暗教海岸线的空无分割了绕过正在水上的他们地面。2、敏捷灿烂地在黑暗里是一份...
02-07 04:27:30
好享贷退款了也要分期吗_好享贷

好享贷退款了也要分期吗_好享贷

1、开通好享贷,消费额度*2(取现额度不变),所有还款均按自动分期结算(收手续费)。2、2、如果你不经...
02-07 01:26:48
上侍郎王公有序

上侍郎王公有序

1、《上侍郎王公有序》是明代文学家汤显祖所作的一篇散文。文章到此就分享结束,希望对大家有所帮助。
02-06 22:46:29
环球快看:excel怎么调整行距相等_excel怎么调整行距

环球快看:excel怎么调整行距相等_excel怎么调整行距

1、不追求精确行距,直接用鼠标拖拽。2、当鼠标落在一般左边行上时,鼠标由箭头变成双横杠状态,就可以...
02-06 19:42:51
世界视点!澜沧江一缅籍充气筏倾覆8人落水3人获救,村民:凌晨4时接通知帮助搜救

世界视点!澜沧江一缅籍充气筏倾覆8人落水3人获救,村民:凌晨4时接通知帮助搜救

澜沧江一缅籍充气筏倾覆8人落水3人获救,村民:凌晨4时接通知帮助搜救---2月6日凌晨,澜沧江水域发生缅...
02-06 18:10:58
上海弄潮实业集团有限公司_全球速看

上海弄潮实业集团有限公司_全球速看

1、上海弄潮实业集团有限公司于2010年06月10日成立。2、法定代表人韩磊,公司经营范围包括:会务服务,...
02-06 17:52:53
信息:胜蓝股份(300843)2月6日主力资金净买入798.75万元

信息:胜蓝股份(300843)2月6日主力资金净买入798.75万元

截至2023年2月6日收盘,胜蓝股份(300843)报收于21 31元,上涨4 82%,换手率11 33%,成交量5 57万手,成交额1 2亿元。
02-06 15:17:25
暗香疏影

暗香疏影

1、暗香疏影是一个成语,读音是ànxiāngshūyǐng,意思是扑鼻的清香,稀疏的树影。2、形容梅花。3、出自《
02-06 14:11:14
呼市人,今后在“家门口”就可享受国家级优质医疗服务 世界即时看

呼市人,今后在“家门口”就可享受国家级优质医疗服务 世界即时看

呼市人,今后在“家门口”就可享受国家级优质医疗服务
02-06 12:06:35
公共基础知识怎么复习-世界最资讯

公共基础知识怎么复习-世界最资讯

1、《公共基础知识学习指南》是2005年5月出版的一本书籍。2、作者是王文科。文章到此就分享结束,希望对...
02-06 11:52:16
“愚公家乡过大年”大型融媒体直播活动圆满收官 世界看热讯

“愚公家乡过大年”大型融媒体直播活动圆满收官 世界看热讯

“愚公家乡过大年”大型融媒体直播活动圆满收官春节期间,25场直播“云端”掀热潮,全网在线收看人数超...
02-06 08:39:53
热消息:上海诚格安全防护用品有限公司

热消息:上海诚格安全防护用品有限公司

1、上海诚格安全防护用品有限公司于2005年10月11日在浦东新区市场监管局登记成立。2、法定代表人高强,...
02-06 06:48:40
凯特、戴妃同款手镯,英国王室都爱的瓷器,情人节送礼大气有格调 每日快看

凯特、戴妃同款手镯,英国王室都爱的瓷器,情人节送礼大气有格调 每日快看

范主说:送礼全搞定情人节马上就到了,这时候最适合入手一些氛围感好物,还有送给另一半暖心又浪漫的小...
02-06 03:18:21
西南位放什么可聚财健康 西南位放什么可聚财

西南位放什么可聚财健康 西南位放什么可聚财

文章来源:伊秀招财植物:如果你想吸引财富和繁荣风水,最好在西南部放置一些富有的植物。这些富有的植物...
02-06 00:46:44
世界微头条丨博物馆奇妙夜2

世界微头条丨博物馆奇妙夜2

1、《博物馆奇妙夜2》(NightattheMuseum:BattleoftheSmithsonian)是
02-05 21:57:49
三通阀门-环球快消息

三通阀门-环球快消息

1、三通阀门是流体输送系统中的控制部件。2、具有截止、调节、导流、防止逆流、稳压、分流或溢流等功能...
02-05 19:53:06
汇川技术:2022年净利同比预增10%-30%

汇川技术:2022年净利同比预增10%-30%

【汇川技术:2022年净利同比预增10%-30%】汇川技术(300124)2月5日晚间发布业绩预告,预计2022年归母净利...
02-05 16:28:40
全球视点!今日咳的声音很粗犷是什么意思_粗犷是什么意思

全球视点!今日咳的声音很粗犷是什么意思_粗犷是什么意思

1、[野性与羊毛]:粗糙美国西部由平原和高原组成的崎岖不平的地区。2、【粗犷;豪放ancl无约束】:豪放无...
02-05 15:02:05
东莞市粮作花卉研究所

东莞市粮作花卉研究所

1、东莞市粮作花卉研究所是市属科研事业单位,1953年成立以来,经历了东莞县试验场、东莞县农业科学研究...
02-05 12:53:18
汤姆苏 天天微资讯

汤姆苏 天天微资讯

1、汤姆·苏,即对应英文TomSue,这一词是中国大陆网友根据玛丽苏(MarySue)创造。2、在欧美日本等地均暂无此词
02-05 11:04:31
关于失眠,这7个秘密医生很少公开!但一旦了解,解决失眠不再难-天天动态

关于失眠,这7个秘密医生很少公开!但一旦了解,解决失眠不再难-天天动态

失眠不单指我们通常讲的晚上睡不着,入睡难,睡眠浅,半睡半醒,半夜醒后睡不着,甚至整夜未睡,这些都...
02-05 08:01:13
杜春雨物理视频大全_杜春雨

杜春雨物理视频大全_杜春雨

1、杜春雨我爱你(藏头藏尾)杜亲妩媚令人爱春归大地思念你雨秀牵手情唯一我善挥毫百花生爱盼祖国早统一
02-05 04:52:30
懂何种外语程度如何怎么填写_懂何种外语程度如何怎么填

懂何种外语程度如何怎么填写_懂何种外语程度如何怎么填

1、英语XX级听说读写流利。2、口、笔译俱佳。本文到此分享完毕,希望对大家有所帮助。
02-05 02:44:19
车企在哪卖车最好?比亚迪通杀,特斯拉盘踞一线,川渝人力挺理想-环球头条

车企在哪卖车最好?比亚迪通杀,特斯拉盘踞一线,川渝人力挺理想-环球头条

车企在哪卖车最好?比亚迪通杀,特斯拉盘踞一线,川渝人力挺理想
02-05 00:09:44
速递!中国宪法事例研究

速递!中国宪法事例研究

1、《中国宪法事例研究》是2009年3月法律出版社出版的图书,作者是韩大元。2、本书通过实例讲解和评析的...
02-04 22:14:35
中国网络传播研究 第2卷第1辑 总第2辑|全球时讯

中国网络传播研究 第2卷第1辑 总第2辑|全球时讯

1、《中国网络传播研究(第2卷第1辑)(总第2辑)》是2008年11月浙江大学出版社出版的图书。2、作者是杜...
02-04 20:02:02
天天百事通!加拿大本土新冠疫苗研发生产商宣布将停止运营

天天百事通!加拿大本土新冠疫苗研发生产商宣布将停止运营

该公司的独资母公司、日本三菱化学集团已决定停止Medicago公司所有业务,不再对其进行投资,并将有序结...
02-04 16:48:16
科技快讯:LOLS9小组赛第五日赛程FPX两场决定能否出现

科技快讯:LOLS9小组赛第五日赛程FPX两场决定能否出现

了解科技资讯,掌握科技知识,所以大家有空还是需要多看看科技方面的信息哦,那么今天小编也是来给大家...
02-04 15:14:45
中央景城小区

中央景城小区

1、景城小区地处苏州工业园区九华路88号,位于园区管委会现代大厦正北、九龙医院以西区域,占地约19 53...
02-04 13:24:39
天天最资讯丨融入科技生态元素!门头沟别样庆元宵

天天最资讯丨融入科技生态元素!门头沟别样庆元宵

融入科技生态元素!门头沟别样庆元宵
02-04 10:33:04

为您推荐

精彩推送