跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Sentinel
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{NoteTA |G1=IT }} '''Sentinel''' 是阿里巴巴开源的轻量级流量控制、熔断降级框架,主要用于保障微服务的稳定性。作为 [[Spring Cloud Alibaba]] 生态组件之一,Sentinel 以流量为切入点,提供流量控制、熔断降级、系统自适应保护等功能,帮助开发者解决微服务架构中的稳定性问题。 == 核心特性 == Sentinel 具有以下主要特性: * '''流量控制''':基于 QPS、并发线程数等指标进行流量控制 * '''熔断降级''':通过响应时间、异常比例等指标自动熔断不稳定服务 * '''系统保护''':自适应保护系统,防止系统被突发流量压垮 * '''实时监控''':提供实时的监控数据和控制台 * '''规则持久化''':支持将规则配置持久化到 [[Nacos]]、[[Zookeeper]] 等配置中心 * '''丰富的适配''':支持 [[Spring Cloud]]、[[Dubbo]]、[[gRPC]] 等框架 == 基本概念 == === 资源 (Resource) === 资源是 Sentinel 的关键概念,可以是 Java 应用程序中的任何内容(如服务、方法、代码块)。Sentinel 通过资源来实施保护规则。 === 规则 (Rule) === 围绕资源的保护规则,主要包括: * 流量控制规则 (FlowRule) * 熔断降级规则 (DegradeRule) * 系统保护规则 (SystemRule) * 来源访问控制规则 (AuthorityRule) * 热点参数规则 (ParamFlowRule) == 使用示例 == === 基本使用 === 以下是一个简单的 Sentinel 资源定义示例: <syntaxhighlight lang="java"> // 定义资源 @SentinelResource(value = "helloWorld", blockHandler = "handleBlock") public String helloWorld() { return "Hello World"; } // 定义限流处理逻辑 public String handleBlock(BlockException ex) { return "Blocked by Sentinel"; } </syntaxhighlight> === 控制台配置 === Sentinel 提供了可视化控制台,可以实时查看监控数据和管理规则: 1. 下载 Sentinel 控制台 2. 启动控制台: <syntaxhighlight lang="bash"> java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -jar sentinel-dashboard.jar </syntaxhighlight> 3. 在应用中配置控制台地址: <syntaxhighlight lang="properties"> spring.cloud.sentinel.transport.dashboard=localhost:8080 </syntaxhighlight> == 工作原理 == Sentinel 的核心工作流程如下: <mermaid> graph TD A[请求进入] --> B{是否受保护资源?} B -->|是| C[执行限流检查] B -->|否| D[正常执行] C --> E{是否超过阈值?} E -->|是| F[执行限流处理] E -->|否| G[正常执行] </mermaid> == 高级特性 == === 热点参数限流 === 支持对热点参数进行细粒度限流: <syntaxhighlight lang="java"> @SentinelResource(value = "queryByUserId", blockHandler = "handleBlock") public String queryByUserId(@RequestParam String userId) { // 业务逻辑 } </syntaxhighlight> === 系统自适应保护 === Sentinel 可以根据系统指标(如 LOAD、CPU 使用率等)自动调整流量: <syntaxhighlight lang="java"> List<SystemRule> rules = new ArrayList<>(); SystemRule rule = new SystemRule(); rule.setHighestSystemLoad(3.0); rules.add(rule); SystemRuleManager.loadRules(rules); </syntaxhighlight> == 与其他组件的集成 == * '''[[Spring Cloud Alibaba]]''':作为核心组件提供微服务保护 * '''[[Nacos]]''':用于规则配置持久化 * '''[[Dubbo]]''':提供 Dubbo 服务保护 * '''[[gRPC]]''':支持 gRPC 服务保护 == 实际应用案例 == 某电商平台使用 Sentinel 解决了以下问题: 1. '''秒杀场景''':通过 QPS 限流防止系统过载 2. '''服务熔断''':当依赖服务响应时间过长时自动熔断 3. '''热点商品保护''':对热门商品查询进行特殊限流 4. '''系统保护''':在促销期间保护核心系统不被压垮 == 性能考量 == Sentinel 的性能开销极低,基准测试表明: * 单机 QPS 可达 10W+ * 平均响应时间增加 <1ms * 资源占用极少 == 参见 == * [[Spring Cloud Alibaba]] * [[Hystrix]] - Netflix 开源的熔断组件 * [[Resilience4j]] - 另一个轻量级容错库 == 参考资料 == * [https://github.com/alibaba/Sentinel Sentinel GitHub 仓库] * [https://sentinelguard.io/zh-cn/ Sentinel 官方文档] [[Category:中间件]] [[Category:微服务]] [[Category:阿里巴巴开源项目]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:NoteTA
(
编辑
)
模块:Crc32lua
(
编辑
)
模块:NoteTA
(
编辑
)
模块:WikitextLC
(
编辑
)