Hello folks,今天我们介绍一下由 Spring Cloud Alibaba 推出的开源项目 Sentinel。Sentinel 是一款面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。
Sentinel 的使用可以基于如下两个部分:
(资料图片仅供参考)
在进行 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 -
(责任编辑:黄俊飞)推荐内容
- 一文搞懂基于 Sentinel Dashboard 进行接口限流
- 早立秋和晚立秋的区别 早立秋还是晚立秋
- 梦见血周公解梦
- 黄石新型冠状病毒肺炎疫情:2月16日黄石疫
- 当前焦点!蓝猫龙骑团第二部分集剧情_蓝猫
- 热讯:中国证监会回应境外持牌机构非法跨
- 全国大部开启升温通道 江南多地周末将迎
- 萧煌奇简介 萧煌奇介绍
- 全球热资讯!〖孔明·解密〗2月15日涨停
- 今日热闻!四部门:中小学校幼儿园原则上
- 芊芊细草的意思 今日播报
- 焦点观察:光大信用卡宽限期是几天
- 即时看!最高检:五年来共起诉金融证券犯
- 正式发布!北京将支持头部企业打造对标Ch
- 阿里挖矿平台上线? 阿里回应称绝对不可
- 民勤县气象台发布大雾橙色预警信号 天天
- 世界速看:深入实施种业振兴行动 上市公
- 关于诸葛亮弹琴的歇后语及答案
- 杭州海关首次进口活体蓝帝王蟹-环球报道
- 农民工工资的承诺书大全
- catia教程大全_catia教程
- 每日简讯:环保宣传标语及口号大全150句
- 吃生芝麻好还是熟芝麻好 芝麻生吃好还是
- 保安人员着装管理规定_公司保安人员着装
- 三玄精益内容简介_三玄精义是什么书-快播
- 昆明经开区春风送岗促就业-世界观察
- 全球播报:中南大学自主招生简章(2)
- 安妮股份董秘回复:公司管理层一直都非常
- 群速度 相速度_相速度
- 飞儿乐队换主唱后的作品_飞儿乐队换主唱
- 祝福教师节快乐诗词
- 泉州新型冠状病毒肺炎疫情:2月14日泉州疫
- 家家乐集成灶质量好不好_家家乐集成灶
- 环球消息!甲状腺恶性肿瘤严重吗是癌症吗
- 环球热头条丨今日 梦幻西游,想请高手诉
- 胡家园街道星海苑社区:眼科义诊进社区
- 竹笋怎么处理 全球快消息
- 环球速读:“见行动 看效果──2023区长
- 新还珠格格香妃扮演者
- 全球时讯:甲醛检测仪器哪个品牌好_甲醛
- 促进全省文旅市场全面复苏 江苏出台15条
- 观天下!黑色持仓日报:期螺跌1.6%,中信
- 送女生18岁生日礼物
- 俄罗斯力棒人民币,全面清仓美欧元,为何
- 送老人礼物有什么忌讳|世界热点
- 城通网盘怎么样?_城通网盘怎么样
- 当前聚焦:02月12日12时云南怒江疫情数据
- 新疆5年新改建农村公路5.8万公里_天天快
- 生日礼物送什么好男生 世界简讯
- 【环球新要闻】如何退出相互宝怎么退出_
- 八月十五单位发的礼物的文案_环球新消息
- 天天讯息:天剑星王虎怎么杀_天剑星
- 奇花异草的意思的异是什么意思_奇花异草
- 提供近千个就业岗位,金山卫镇这场“春风
- 美媒再爆料:乌军使用“海马斯”,全靠美
- 全球快消息!临皋闲题中的闲者是什么意思
- 全球观天下!少女连玩手机81小时发生猝死
- 百丽甜酒多少钱一瓶 百丽甜酒是甜的吗-
- 武艺身高_说一说武艺身高的简介 每日关注
- 摩托罗拉mb526怎么下载软件_摩托罗拉mb52
- catia教程大全_catia教程
- 每日简讯:环保宣传标语及口号大全150句
- 吃生芝麻好还是熟芝麻好 芝麻生吃好还是
- 保安人员着装管理规定_公司保安人员着装
- 三玄精益内容简介_三玄精义是什么书-快播
- 昆明经开区春风送岗促就业-世界观察
- 全球播报:中南大学自主招生简章(2)
- 安妮股份董秘回复:公司管理层一直都非常
- 群速度 相速度_相速度
- 飞儿乐队换主唱后的作品_飞儿乐队换主唱
- 祝福教师节快乐诗词
- 泉州新型冠状病毒肺炎疫情:2月14日泉州疫
- 家家乐集成灶质量好不好_家家乐集成灶
- 环球消息!甲状腺恶性肿瘤严重吗是癌症吗
- 环球热头条丨今日 梦幻西游,想请高手诉
- 胡家园街道星海苑社区:眼科义诊进社区
- 竹笋怎么处理 全球快消息
- 环球速读:“见行动 看效果──2023区长
- 新还珠格格香妃扮演者
- 全球时讯:甲醛检测仪器哪个品牌好_甲醛
- 促进全省文旅市场全面复苏 江苏出台15条
- 观天下!黑色持仓日报:期螺跌1.6%,中信
- 送女生18岁生日礼物
- 俄罗斯力棒人民币,全面清仓美欧元,为何
- 送老人礼物有什么忌讳|世界热点
- 城通网盘怎么样?_城通网盘怎么样
- 当前聚焦:02月12日12时云南怒江疫情数据
- 新疆5年新改建农村公路5.8万公里_天天快
- 生日礼物送什么好男生 世界简讯
- 【环球新要闻】如何退出相互宝怎么退出_
- 八月十五单位发的礼物的文案_环球新消息
- 天天讯息:天剑星王虎怎么杀_天剑星
- 奇花异草的意思的异是什么意思_奇花异草
- 提供近千个就业岗位,金山卫镇这场“春风
- 美媒再爆料:乌军使用“海马斯”,全靠美
- 全球快消息!临皋闲题中的闲者是什么意思
- 全球观天下!少女连玩手机81小时发生猝死
- 百丽甜酒多少钱一瓶 百丽甜酒是甜的吗-
- 武艺身高_说一说武艺身高的简介 每日关注
- 摩托罗拉mb526怎么下载软件_摩托罗拉mb52
- 今日报丨其间千二百里上一句_其间千二百
- 内蒙古自治区西乌旗考察团来我县调研 全
- 全球资讯:销精髓:提高营销的成功率
- 天天信息:福安药业:注射用头孢哌酮钠舒
- 山东同昌机械有限公司
- Lowe:步行者曾用三首轮签+来自火箭的今
- 梧州哪些景点最有名 梧州十大著名景点
- 山东管理学院是一本还是二本学校是几本在
- 当前热文:红酒配什么饮料好喝_红酒兑什
- 魔兽世界9.0黑市位置在哪里 全球播报
- 全球短讯!“诗”与“远方”交相辉映(旅
- 天天微速讯:大山里的年轻钢轨“女医生们
- 今日观点!台式机显卡性能排行推荐_台式机
- 当前报道:02月10日00时海南文昌疫情数据
- 【全球报资讯】八面玲珑打一生肖,是什么
- 每日速读!鲤鱼能生吃吗 鲤鱼可以直接生
- 日本豆腐是什么材料_日本豆腐的主要原料
- 新车品鉴:岚图首款SUV预生产下线 将于12
- 世界今日报丨苏宁易购与美的抢滩家电市场
- 环球观天下!辟邪物品之一,开光玉器的禁