微服务保护:Sentinel实战指南,JSP HTTP 状态码详解。
·
微服务保护概述
微服务架构中,服务间调用频繁,依赖复杂,需通过熔断、降级、限流等手段保障系统稳定性。黑马商城作为典型电商项目,采用Spring Cloud Alibaba Sentinel实现微服务保护,核心功能包括流量控制、熔断降级、系统自适应保护。
Sentinel核心组件
Sentinel由以下核心组件构成:
- 资源:需保护的接口或方法,通过
@SentinelResource注解定义。 - 规则:流量控制规则、熔断降级规则等,支持动态配置。
- 控制台:可视化界面,实时监控资源访问情况。
@GetMapping("/order/{id}")
@SentinelResource(value = "getOrder", blockHandler = "handleBlock")
public Order getOrder(@PathVariable Long id) {
// 业务逻辑
}
流量控制实现
流量控制通过QPS或线程数限制保护服务:
- QPS限流:当每秒请求数超过阈值,触发流控。
- 线程数限流:当并发线程数超过阈值,拒绝请求。
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080
datasource:
ds1:
nacos:
server-addr: localhost:8848
dataId: sentinel-rules
ruleType: flow
熔断降级策略
熔断降级通过以下策略保障服务稳定性:
- 慢调用比例:当请求响应时间超过阈值且比例达到设定值,触发熔断。
- 异常比例:当异常请求比例超过阈值,触发熔断。
- 异常数:当异常请求数超过阈值,触发熔断。
@SentinelResource(
value = "createOrder",
fallback = "createOrderFallback",
blockHandler = "createOrderBlockHandler"
)
public Order createOrder(OrderDTO orderDTO) {
// 业务逻辑
}
系统自适应保护
Sentinel通过系统负载、CPU使用率等指标动态调整流量:
- LOAD自适应:当系统负载超过阈值,自动拒绝请求。
- CPU使用率保护:当CPU使用率超过阈值,自动降级。
规则持久化配置
规则默认存储在内存中,重启失效,需持久化到Nacos:
spring:
cloud:
sentinel:
datasource:
flow:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}-flow-rules
ruleType: flow
实战案例:订单服务保护
黑马商城订单服务典型配置:
- 流控规则:QPS限制为100,超过后快速失败。
- 熔断规则:异常比例超过50%时熔断5秒。
- 降级策略:返回预设的友好错误提示。
public Order handleBlock(Long id, BlockException ex) {
return Order.builder().status("系统繁忙,请稍后重试").build();
}
监控与告警
Sentinel控制台提供实时监控功能:
- 实时流量图:展示资源访问QPS、响应时间。
- 熔断事件:记录每次熔断触发详情。
- 集群流控:支持集群维度的流量控制。
通过合理配置微服务保护策略,黑马商城有效应对高并发场景,保障核心业务稳定性。实践中需根据业务特点调整阈值,平衡系统资源与用户体验。
更多推荐
所有评论(0)