废话不多说,今天更新场景篇-微服务保护的知识点,做好了开始发车喽!

一、场景篇-微服务保护

1、Q:解释微服务中限流、熔断和降级的核心概念及其作用?

A:三者协同保障微服务高可用:限流预防过载,熔断快捷失败,降级优雅兜底:

  • 限流:控制单位时间内的请求量,防止系统被突发流量压垮。常用算法有令牌桶(如Guava RateLimiter)和漏桶、时间窗。
  • 熔断:当服务失败率超过阈值时,自动切断调用链路,避免故障扩散。例如Hystrix的circuitBreaker.errorThresholdPercentage
  • 降级:在系统高负载或故障时,提供兜底响应(如返回缓存数据或默认值),保证核心流程可用。

2、Q: Spring Cloud Gateway如何实现基于令牌桶的限流?给出设置示例

A:答案如下:

​​需自定义KeyResolver(如按IP或用户ID)并引入spring-boot-starter-data-redis-reactive

通过RequestRateLimiter过滤器结合Redis实现分布式限流:

spring:
  cloud:
    gateway:
      routes:
        - id: user-service
          uri: lb://user-service
          predicates:
            - Path=/api/users/**
          filters:
            - name: RequestRateLimiter
              args:
                redis-rate-limiter.replenishRate: 10  # 每秒10个令牌
                redis-rate-limiter.burstCapacity: 20   # 桶容量20
                key-resolver: "#{@userKeyResolver}"    # 按用户限流

3、Q:启用Redis存储令牌桶状态时,如何避免单点瓶颈

A:答案如下:

  • 采用Redis集群分片存储不同服务的限流键,分散压力。
  • 为不同服务配置独立的