Sentinel 是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它提供了多种流量控制策略,包括QPS限流、并发数限流、线程池限流等,并且支持集群限流。此外,Sentinel还提供了熔断降级、系统负载均衡等功能。
Sentinel(哨兵)是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它可以帮助您实现以下目标:
限制系统的QPS,防止系统过载;
提供实时的监控和告警功能;
提供熔断降级功能,防止系统雪崩;
提供系统负载均衡功能。
轻量级:Sentinel 的核心库只有200KB左右,对性能的影响非常小;
实时监控:Sentinel 可以实时监控系统的QPS、RT等信息,并提供实时告警功能;
多维度的流量控制:Sentinel 支持基于调用关系、资源、参数等多个维度的流量控制;
集群流量控制:Sentinel 支持集群限流,可以实现多台机器的统一流量控制;
熔断降级:Sentinel 提供了熔断降级功能,可以在服务不可用时自动降级,防止系统雪崩;
系统负载均衡:Sentinel 可以对系统的入口流量进行调度,实现系统的负载均衡。
Sentinel 的架构设计简洁清晰,主要分为核心库、Dashboard、规则中心等几个部分。
核心库是 Sentinel 的主要实现部分,包括流量控制、熔断降级等功能。核心库主要包括以下几个部分:
流量统计:通过滑动窗口算法来统计QPS、RT等指标;
流量控制:根据预先设定的规则和实时统计的指标来决定是否放行请求;
熔断降级:在服务不可用时自动降级,防止系统雪崩;
系统负载均衡:对系统的入口流量进行调度,实现系统的负载均衡。
Dashboard 是 Sentinel 的控制台,用于管理和监控 Sentinel 的各项功能。Dashboard 主要包括以下几个部分:
实时监控:实时展示系统的QPS、RT等指标;
规则管理:提供规则的增删改查功能,支持在线修改规则并实时生效;
集群管理:提供集群的管理功能,支持多台机器的统一管理。
规则中心是 Sentinel 的规则存储组件,用于存储流量控制、熔断降级等规则。规则中心主要包括以下几个部分:
规则存储:提供规则的存储功能,支持多种存储方式;
规则推送:将规则推送到各个客户端,实现规则的统一管理。
首先需要安装 Java 环境,然后从 Sentinel 官网下载 Sentinel 的源码或者二进制包。
解压下载好的 Sentinel 压缩包,进入 sentinel-dashboard/sentinel-dashboard-web 目录,执行 mvn clean package -Dmaven.test.skip=true 命令打包,然后在 target 目录下找到 sentinel-dashboard.jar,执行 java -jar sentinel-dashboard.jar 命令启动 Sentinel。
在项目中引入 Sentinel 的依赖,然后通过 SphU.entry(resourceName) 方法来定义一个资源,并通过 SphU.entry(resourceName).setHandler(handler) 方法来设置处理函数。在处理函数中,可以通过 context.getCurEntry() 方法来获取当前请求的信息,并根据信息来进行流量控制、熔断降级等操作。
资源是 Sentinel 进行流量控制的最小单位,通常对应一个服务或一个方法。在 Sentinel 中,资源是通过 resourceName 来唯一标识的。
流量控制是 Sentinel 的核心功能之一,主要用于限制系统的QPS,防止系统过载。在 Sentinel 中,流量控制是通过滑动窗口算法来实现的,可以精确地计算每个资源的QPS,并根据QPS来进行流量控制。
参数:
1)直接模式流量控制
2)关联模式流量控制
3)链路模式限流
4)流控效果处理冷启动
5)流控效果排队等待
6)线程池隔离
熔断降级是 Sentinel 的另一个核心功能,主要用于防止系统雪崩。在 Sentinel 中,熔断降级是通过熔断器模式来实现的,当某个资源出现异常时,会自动降级,避免影响其他资源。
断路器控制熔断和放行是通过状态机制来完成的:
慢调用
业务的响应时长(RT)大于指定时长的请求认定为慢调用请求,在指定时间内,如果请求数量超过设定的最小数量,慢调用比例大于设定阈值,则触发熔断。
设置慢调用规则
异常比例、异常数
统计指定时间内的调用,如果调用次数超过指定请求数,并且出现一次里达到设定的比例阈值(或超过指定一常数),则触发熔断。
设置异常比例规则
Sentinel 支持集群流量控制,可以实现多台机器的统一流量控制。在 Sentinel 中,集群流量控制是通过规则中心来实现的,可以将规则推送到各个客户端,实现规则的统一管理。
Sentinel 支持系统负载均衡,可以对系统的入口流量进行调度,实现系统的负载均衡。在 Sentinel 中,系统负载均衡是通过负载均衡器来实现的,可以根据系统的负载情况来动态调整流量分配。
Spring Cloud Alibaba Sentinel 是 Spring Cloud 体系中的一部分,提供了与 Sentinel 集成的解决方案。通过使用 Spring Cloud Alibaba Sentinel,可以方便地将 Sentinel 作为 Spring Cloud 应用的流量控制和熔断降级组件使用。
以上就是全部内容,如果你有任何问题、意见或建议,都欢迎在评论中分享。让我们继续分享知识,共同成长,一起走向更加美好的未来。感谢你们的阅读,祝愿你们在未来的道路上一帆风顺!