一文搞懂基于 Sentinel Dashboard 进行接口限流|环球速看
Hellofolks,今天我们介绍一下由SpringCloudAlibaba推出的开源项目Sentinel。Sentinel是一款面向分
Hello folks,今天我们介绍一下由 Spring Cloud Alibaba 推出的开源项目 Sentinel。Sentinel 是一款面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。
Sentinel 的使用可以基于如下两个部分:
(资料图片)
在进行 Sentinel 实践之前,我们先来了解一下其所涉及的基础理论知识。主要涉及基本概念、原理等。
Sentinel 基本概念
关于 Sentinel,我们先来了解以下概念:
1、资源
资源是 Sentinel 的一项关键因素。其可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。
只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。通常情况下,我们可以使用方法签名,URL,甚至服务名称作为资源名来标识资源。
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 -
Hellofolks,今天我们介绍一下由SpringCloudAlibaba推出的开源项目Sentinel。Sentinel是一款面向分
在化高速发展的今天,我们每个人几乎都有自己的聊天软件,随着好友的增加,少不了要对他们进行分组。而每个人的想法不同,喜欢的
这个活动策划板你可以分成几个部分,按一个是活动的目的,第二个是活动的,经过第三个是活动的总结之类的吧,我觉得可以这这样谢谢像这样的拉
吃黑豆能促排卵?子宫肌瘤能打疫苗?
易玄算命网有自己的特色、网络实战高手云集、水平高、热情好、可能是网上最好的算命论坛!提供周易算命、生辰八字算命、生辰八字
存货跌价准备属于流动资产而不是存货。是根据市场价格的波动对存货的价值做的一个保险的差额提取。企业应该根据会计的谨慎性原则
关于报告的所有内容,公众『行业报告智库』阅读原文或点击菜单获取报告下载查看。摘要:报告显示,在包装面包蛋糕领域,市场集中度分散,由本土
乔-科尔:切尔西需要一段适应期球员要接受位置竞争,欧冠,适应期,切尔西队,乔-科尔,英超联赛,拉希姆·斯特林
1、富大龙,1976年2月出生,毕业于北京电影学院94级表演系,中国内地男演员,北京演艺专修学院客座教授。2、1987年富大龙凭借人物传记电影《少
电子《浙江省居住证》申领及签注业务以在线“掌上办”为主、“网上办”为辅,线下“窗口办”为补充。符合申领条件的流动人口可以通过浙江政务
继优酷、爱奇艺之后,腾讯视频也因用户多设备登录导致被封号一事引起热议。2月15日,上海市消保委向腾讯视频进行了询问,希望腾讯视频能有更合
当日私人账户累计交易流水超过20万元的,将受到监控的。此外,中国各类银行使用外币交易等值在1万元以上的现金存款,监控取款
大家都知道,2014年,舒淇在网上宣布和冯德伦的恋情,在2016年两人宣布结婚。其实,冯德伦和舒淇在一起之前,是和莫文蔚在一起去的,只可惜两
证监会表示,下一步将持续加强监管,督促证券公司严格遵守《办法》有关要求,规范开展证券经纪业务,切实维护市场交易秩序,保护投资者合法利
1、《官色》是在万卷出版的连载小说,作者是汪宛夫。2、小说主要讲述了主人公醉酒后回到几十年前,从底层一步步登上官场高峰的
搞笑歌曲是现在网络上面比较好听流行的一种歌曲,那么听搞笑歌曲是否能够让你的心情变的欢快呢?下面就让学习啦小编给大家分享一些搞笑歌曲吧,
图片来源@视觉中国周黑鸭的业绩雷,最终还是爆了。2月13日晚间,周黑鸭发布的盈利警告显示,预计2022年公司总收入同比下
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsear
无论是英语还是汉语,都会有很多我们喜欢的爱情故事,下面是学习啦小编给大家整理的英语短篇爱情故事,希望能帮到大家!英语短篇爱情故事1Agirl
阿罗尼卡:布兰特适合闪电军团,魔力鸟有机会租借穆科科,军团,穆科科,魔力鸟,阿罗尼卡,斯帕莱蒂,德国足球,多特蒙德队,俄罗斯足球,国际足球赛事