七天学会SpringCloud分布式微服务——06——Sentinel
Sentinel 是由 Alibaba 开发的一个轻量级的 流量控制 和 熔断降级 的框架,主要用于保护微服务架构下的应用,避免因为高并发、系统异常等导致服务崩溃
1、理解Sentinel并初步使用
流量控制(Flow Control):限制某些资源的访问次数,以防止流量过大导致服务崩溃。比如限制某个接口的每秒请求次数(QPS),避免过高的并发请求压力。
熔断降级(Circuit Breaker):当某个服务或接口调用失败率过高时,自动进入熔断状态,停止请求,避免继续恶化系统状况。
实时监控与动态调整:Sentinel 提供了一个 Dashboard,用于实时查看流量情况、熔断状态、规则等,并支持动态调整流量控制规则,确保系统始终保持在安全的运行状态
1.1 Sentinel 的基本工作流程
Sentinel 通过定义 资源(Resource),并通过为资源设置 流量控制规则,来限制访问量和对服务的保护。
-
定义资源:你可以把每个微服务的接口或方法看作一个资源(例如,某个 REST API)。在 Sentinel 中,资源是需要被保护的单位。
-
定义流量控制规则:为每个资源设置流量控制规则(比如 QPS、并发数限制等)。当请求超过限制时,Sentinel 会进行降级或者流量控制处理。
-
请求到达时判断:当外部请求访问一个资源时,Sentinel 会检查该资源的流量控制规则。如果请求数超过阈值,Sentinel 会启动流量控制策略,如拒绝请求或执行降级逻辑。
-
流量控制/熔断:
- 流量控制:超出设定的流量限制时,Sentinel 会进行流量切断或拒绝。
- 熔断降级:当某个资源失败率过高时,Sentinel 会进行熔断,拒绝请求直到系统恢复。
-
实时监控:Sentinel 提供了一个 Dashboard,实时显示各个资源的流量、状态、规则、异常等信息,帮助开发者做出动态调整。
1.2 下载并启动sentinel
下载使用
1.3 在两个微服务yml中都配置Sentinel 端口号
1.4 默认web接口当作资源,然后使用注解手动添加资源
1.5 启动项目,并访问createOrder
1.6 规则的解释
-
流控规则(流控):限制每秒请求数(QPS),例如在高并发情况下,可能会因为流量过大而限制访问。
-
熔断规则(熔断):当请求失败率达到某一阈值时,开启熔断,暂停或拒绝一些请求,避免系统过载。
-
热点规则(热点):针对请求中的热点数据(例如某个高频访问的资源或API),进行特殊的流控策略,以保证系统稳定。
-
授权规则(授权):确保只有经过授权的请求可以访问特定的资源或服务,防止未授权访问。
测试流控规则:
每秒只能一个这样的请求,否则限流失效
2、Sentinel异常处理
也就是说,如果出现异常,我们要返回给前端json数据,所以要进行异常处理
类似于这样:
续