2月11日java假期学习读书笔记

一、学习目标
了解Spring Cloud Gateway的高级功能(动态路由、限流、熔断)。
掌握如何在Spring Cloud Gateway中实现动态路由和限流。
学习如何使用Spring Cloud Gateway实现熔断功能。
通过实际练习,构建一个高可用的API网关。
理解高可用性和弹性设计在微服务架构中的重要性。
二、学习内容
(一)Spring Cloud Gateway的动态路由

  1. 动态路由的概念
    动态路由允许在运行时动态调整路由规则,而无需重启服务。
    它支持基于请求的属性(如路径、头信息、查询参数等)动态选择目标服务。
  2. 实现动态路由
    添加依赖:
    xml
org.springframework.cloud spring-cloud-starter-gateway 配置动态路由: yaml

spring:
cloud:
gateway:
routes:
- id: user-service
uri: http://localhost:8081
predicates:
- Path=/user/**
filters:
- AddRequestHeader=X-Request-Header, Request-Value
动态调整路由规则:
可以通过配置中心(如Spring Cloud Config)动态更新路由规则。
使用/actuator/refresh端点刷新配置:
bash

curl -X POST http://localhost:8080/actuator/refresh
(二)限流(Rate Limiting)

  1. 限流的作用
    限流用于限制客户端对服务的访问频率,防止服务过载。
    常见的限流算法包括漏桶算法(Leaky Bucket)和令牌桶算法(Token Bucket)。
  2. 实现限流
    添加依赖:
    xml
org.springframework.cloud spring-cloud-starter-gateway 配置限流规则: yaml

spring:
cloud:
gateway:
routes:
- id: user-service
uri: http://localhost:8081
predicates:
- Path=/user/**
filters:
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 10
redis-rate-limiter.burstCapacity: 20
配置Redis:
限流功能依赖Redis,需要配置Redis连接:
properties

spring.redis.host=localhost
spring.redis.port=6379
(三)熔断(Circuit Breaker)

  1. 熔断的作用
    熔断机制用于防止服务调用方在调用失败时继续等待,避免资源浪费。
    当调用失败率达到一定阈值时,熔断器会“断开”,直接返回失败结果。
  2. 实现熔断
    添加依赖:
    xml
org.springframework.cloud spring-cloud-starter-circuitbreaker-reactor-resilience4j 配置熔断规则: yaml

spring:
cloud:
gateway:
routes:
- id: user-service
uri: http://localhost:8081
predicates:
- Path=/user/**
filters:
- name: CircuitBreaker
args:
name: user-service
fallbackUri: forward:/fallback
实现熔断降级逻辑:
java

@RestController
public class FallbackController {
@GetMapping("/fallback")
public ResponseEntity fallback() {
return ResponseEntity.ok("Fallback: User Service is down");
}
}
(四)实际练习:构建一个高可用的API网关

  1. 创建Spring Cloud Gateway项目
    使用Spring Initializr生成一个Spring Cloud Gateway项目,添加Spring Cloud Gateway、Resilience4j和Redis依赖。
  2. 配置动态路由、限流和熔断
    在application.yml中配置动态路由、限流和熔断规则。
  3. 运行和测试
    启动API网关,模拟高并发请求,验证限流功能是否生效。
    模拟外部服务故障,验证熔断功能是否生效。
    动态更新路由规则,验证动态路由功能是否生效。
    三、学习心得
    动态路由的优势
    动态路由允许在运行时调整路由规则,无需重启服务,提高了系统的灵活性和可用性。
    它支持基于请求的属性动态选择目标服务,适合复杂的微服务架构。
    限流的重要性
    限流可以防止服务过载,确保服务的可用性。
    Spring Cloud Gateway结合Redis提供了强大的限流功能,支持多种算法。
    熔断的作用
    熔断机制可以快速失败,避免调用方资源浪费。
    Spring Cloud Gateway结合Resilience4j提供了灵活的熔断功能,支持自定义降级逻辑。
posted @ 2025-02-20 00:07  头发少的文不识  阅读(49)  评论(0)    收藏  举报