2月12日java假期学习读书笔记
一、学习目标
深入理解Spring Cloud Gateway的高级功能。
掌握动态路由、限流和熔断的实现方法。
学习如何通过Spring Cloud Gateway实现高可用性和弹性设计。
通过实际练习,构建一个高可用的API网关。
理解这些特性在微服务架构中的重要性。
二、学习内容
(一)Spring Cloud Gateway的高级功能
- 动态路由
动态路由的概念:允许在运行时动态调整路由规则,而无需重启服务。
实现动态路由:
使用Spring Cloud Config动态更新路由规则。
配置文件示例:
yaml
spring:
cloud:
gateway:
routes:
- id: user-service
uri: http://localhost:8081
predicates:
- Path=/user/**
filters:
- AddRequestHeader=X-Request-Header, Request-Value
2. 限流(Rate Limiting)
限流的作用:防止服务过载,确保服务的可用性。
实现限流:
使用RequestRateLimiter过滤器。
配置文件示例:
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
3. 熔断(Circuit Breaker)
熔断的作用:防止服务调用方在调用失败时继续等待,避免资源浪费。
实现熔断:
使用CircuitBreaker过滤器。
配置文件示例:
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
(二)实际练习:构建一个高可用的API网关
- 创建Spring Cloud Gateway项目
使用Spring Initializr生成一个Spring Cloud Gateway项目,添加Spring Cloud Gateway、Resilience4j和Redis依赖。 - 配置动态路由、限流和熔断
在application.yml中配置动态路由、限流和熔断规则。 - 运行和测试
启动API网关,模拟高并发请求,验证限流功能是否生效。
模拟外部服务故障,验证熔断功能是否生效。
动态更新路由规则,验证动态路由功能是否生效。
三、学习心得
动态路由的优势
动态路由允许在运行时调整路由规则,无需重启服务,提高了系统的灵活性和可用性。
它支持基于请求的属性动态选择目标服务,适合复杂的微服务架构。
限流的重要性
限流可以防止服务过载,确保服务的可用性。
Spring Cloud Gateway结合Redis提供了强大的限流功能,支持多种算法。
熔断的作用
熔断机制可以快速失败,避免调用方资源浪费。
Spring Cloud Gateway结合Resilience4j提供了灵活的熔断功能,支持自定义降级逻辑。
实践的重要性
通过实际构建和测试高可用的API网关,我更好地理解了Spring Cloud Gateway的高级特性。
实践可以帮助快速发现和解决问题,加深对知识点的理解。
浙公网安备 33010602011771号