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

一、学习目标
了解Spring Cloud的限流和熔断机制。
掌握如何使用Spring Cloud Circuit Breaker实现熔断功能。
学习如何使用Resilience4j实现限流和容错。
通过实际练习,构建一个具有限流和熔断功能的微服务。
理解限流和熔断在微服务架构中的作用。
二、学习内容
(一)限流(Rate Limiting)

  1. 限流的概念
    限流用于限制客户端对服务的访问频率,防止服务过载。
    常见的限流算法包括漏桶算法(Leaky Bucket)和令牌桶算法(Token Bucket)。
  2. Resilience4j限流
    Resilience4j是一个轻量级的容错库,支持限流、熔断、重试等功能。
    添加依赖:
    xml
io.github.resilience4j resilience4j-spring-boot2 配置限流规则: properties

resilience4j.ratelimiter.instances.user-service.rate=10
resilience4j.ratelimiter.instances.user-service.limitForPeriod=100
resilience4j.ratelimiter.instances.user-service.limitRefreshPeriod=1s
使用限流注解:
java

@Service
public class UserService {
@RateLimiter(name = "user-service")
public String getUserInfo() {
// 模拟调用外部服务
return "User Info";
}
}
(二)熔断(Circuit Breaker)

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

resilience4j.circuitbreaker.instances.user-service.failureRateThreshold=50
resilience4j.circuitbreaker.instances.user-service.waitDurationInOpenState=10s
使用熔断注解:
java

@Service
public class UserService {
@CircuitBreaker(name = "user-service", fallbackMethod = "fallback")
public String getUserInfo() {
// 模拟调用外部服务
return "User Info";
}

public String fallback(Exception e) {
    return "Fallback: User Service is down";
}

}
(三)实际练习:构建一个具有限流和熔断功能的微服务

  1. 创建Spring Boot项目
    使用Spring Initializr生成一个Spring Boot项目,添加Spring Web、Spring Cloud Circuit Breaker和Resilience4j依赖。
  2. 配置限流和熔断
    在application.properties中配置限流和熔断规则。
    使用@RateLimiter和@CircuitBreaker注解保护服务调用。
  3. 运行和测试
    启动微服务,模拟高并发请求,验证限流功能是否生效。
    模拟外部服务故障,验证熔断功能是否生效。
    三、学习心得
    限流的重要性
    限流可以防止服务过载,确保服务的可用性。
    Resilience4j提供了灵活的限流配置,支持多种算法。
    熔断的作用
    熔断机制可以快速失败,避免调用方资源浪费。
    Spring Cloud Circuit Breaker结合Resilience4j提供了强大的熔断功能。
    实践的重要性
    通过实际构建和测试限流和熔断功能,我更好地理解了它们的使用方法。
    实践可以帮助快速发现和解决问题,加深对知识点的理解。
posted @ 2025-02-20 00:01  头发少的文不识  阅读(8)  评论(0)    收藏  举报