You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus Reactive Client高负载下是否真的具备响应式能力?

关于Quarkus响应式REST客户端高负载慢后端场景的性能问题

我为测试Quarkus响应式REST客户端在慢后端场景下的表现,基于官方示例做了小幅修改并开展负载测试。使用的Quarkus版本为2.11.3.Final,build.gradle依赖如下:

dependencies {
    implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
    implementation 'io.quarkus:quarkus-rest-client-reactive'
    implementation 'io.quarkus:quarkus-resteasy-reactive'
    implementation 'io.quarkus:quarkus-arc'
    testImplementation 'io.quarkus:quarkus-junit5'
    testImplementation 'io.rest-assured:rest-assured'
}

测试场景

设置了两种慢后端测试场景:

  • 创建新Uni并延迟结果发射
  • 调用本地运行的Go服务器(仅延迟1秒响应)

核心代码

对应的Resource代码:

@Path("/reactive")
public class ReactiveResource {
    
    @RestClient
    TimeoutTestService service;
    
    @GET
    @Path("delay")
    @Produces(MediaType.TEXT_PLAIN)
    public Uni<String> reactiveThreadTimeout() {
        return Uni.createFrom().item("Hello RESTEasy")
                .onItem().delayIt().by(Duration.of(1, ChronoUnit.SECONDS));
    }
    
    @GET
    @Path("remote")
    @Produces(MediaType.TEXT_PLAIN)
    public Uni<String> reactiveRemoteTimeout() {
        return service.testTimeoutReactive();
    }
    
}

对应的客户端接口代码:

@RegisterRestClient(baseUri = "http://localhost:8500")
@Produces(MediaType.TEXT_PLAIN)
public interface TimeoutTestService {
    
    @GET
    @Path("/reactive")
    Uni<String> testTimeoutReactive();
    
}

负载测试结果

第一种场景下,即使每秒300次请求,所有请求均能在1秒内响应,无任何问题;第二种场景在每秒20次请求时表现正常,但负载提升后响应时间逐渐增加,疑似调用线程被阻塞。我已排除Go服务器的问题(直接调用时它可轻松处理每秒300次请求),虽怀疑是本地同时运行Quarkus和Go服务器导致,但仍预期响应式客户端有更好表现。

请问是否有其他人在高负载下使用该响应式客户端时遇到类似问题?

内容的提问来源于stack exchange,提问作者bropyro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:15:45