微服务保护概述

微服务架构中,服务间调用频繁,依赖复杂,需通过熔断、降级、限流等手段保障系统稳定性。黑马商城作为典型电商项目,采用Spring Cloud Alibaba Sentinel实现微服务保护,核心功能包括流量控制、熔断降级、系统自适应保护。

Sentinel核心组件

Sentinel由以下核心组件构成:

  • 资源:需保护的接口或方法,通过@SentinelResource注解定义。
  • 规则:流量控制规则、熔断降级规则等,支持动态配置。
  • 控制台:可视化界面,实时监控资源访问情况。
@GetMapping("/order/{id}")
@SentinelResource(value = "getOrder", blockHandler = "handleBlock")
public Order getOrder(@PathVariable Long id) {
    // 业务逻辑
}

流量控制实现

流量控制通过QPS或线程数限制保护服务:

  1. QPS限流:当每秒请求数超过阈值,触发流控。
  2. 线程数限流:当并发线程数超过阈值,拒绝请求。
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

实战案例:订单服务保护

黑马商城订单服务典型配置:

  1. 流控规则:QPS限制为100,超过后快速失败。
  2. 熔断规则:异常比例超过50%时熔断5秒。
  3. 降级策略:返回预设的友好错误提示。
public Order handleBlock(Long id, BlockException ex) {
    return Order.builder().status("系统繁忙,请稍后重试").build();
}

监控与告警

Sentinel控制台提供实时监控功能:

  • 实时流量图:展示资源访问QPS、响应时间。
  • 熔断事件:记录每次熔断触发详情。
  • 集群流控:支持集群维度的流量控制。

通过合理配置微服务保护策略,黑马商城有效应对高并发场景,保障核心业务稳定性。实践中需根据业务特点调整阈值,平衡系统资源与用户体验。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐