八股已死、场景当立(场景篇-微服务保护篇)
废话不多说,今天更新场景篇-微服务保护的知识点,做好了开始发车喽!
一、场景篇-微服务保护
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-serviceuri: lb://user-servicepredicates:- Path=/api/users/**filters:- name: RequestRateLimiterargs:redis-rate-limiter.replenishRate: 10 # 每秒10个令牌redis-rate-limiter.burstCapacity: 20 # 桶容量20key-resolver: "#{@userKeyResolver}" # 按用户限流
