使用 Resilience4j 提升系统弹性
在微服务架构中,系统的弹性至关重要。本文将介绍如何使用 Resilience4j 库为系统添加弹性机制,包括电路断路器、时间限制器和重试机制,并通过自动化测试和手动测试来验证这些机制的有效性。
1. API 参数变更
为了模拟不同的异常情况,我们在复合产品 API 和产品 API 中添加了两个查询参数:
- delay
:该参数用于指定产品微服务的 getProduct
API 在返回响应前的延迟时间,以秒为单位。例如,若设置为 3,则会在返回响应前延迟 3 秒。
- faultPercentage
:该参数用于让产品微服务的 getProduct
API 以指定的概率随机抛出异常,概率范围为 0 到 100%。例如,若设置为 25,则平均每四次调用该 API 会有一次失败,并返回 HTTP 错误 500(内部服务器错误)。
这两个参数在 api
项目的两个 Java 接口中进行了定义:
// ProductCompositeService
Mono<ProductAggregate> getProduct(
@PathVariable int productId,
@RequestParam(value = "delay", required = false, defaultValue = "0") int delay,
@RequestParam(va