source

Spring WebFlux WebClient 복원력 및 성능

ittop 2023. 7. 31. 21:52
반응형

Spring WebFlux WebClient 복원력 및 성능

저는 샘플 PoC 프로젝트를 통해 간단한 일반 시나리오에서 일부 차단/비차단 솔루션을 테스트할 뿐입니다.

시나리오:

  • 대기 차단 끝점이 있는데, 이는 매우 느립니다. 각 요청에는 200ms가 소요됩니다.
  • 이 느린 끝점을 호출하는 다른 클라이언트 응용 프로그램이 있습니다.

WebFlux - WebClient, Ratpack 및 Lagom을 사용하여 현재(차단) Spring Boot Client(tomcat), Spring Boot 2.0(netty)을 테스트했습니다.각각의 경우에 저는 간단한 테스트 시나리오(100-1000 사용자/초)를 개틀링하여 클라이언트 애플리케이션을 강조했습니다.

저는 ratpack과 lagom을 참조 비블로킹 IO 서버로 테스트하여 결과를 스프링 부트(차단 및 비블로킹)와 비교했습니다.

스프링 부트 2.0 테스트를 제외하고 모든 경우에 예상대로 결과가 있습니다.작은 부하 레벨에서만 작동하지만 지연 시간이 긴 경우에도 작동합니다.로드 레벨이 상승하면 모든 요청이 시간 초과됩니다.

WebClient 사용:

@RestController
public class NonBlockingClientController {
private WebClient client = WebClient.create("http://localhost:9000");

@GetMapping("/client")
public Mono<String> getData() {
    return client.get()
            .uri("/routing")
            .accept(TEXT_PLAIN)
            .exchange()
            .then(response -> response.bodyToMono(String.class));
}
}

무엇이 잘못되었는지 또는 현재 스냅샷 버전이 작동하는지 전혀 알 수 없습니다.

모든 출처는 https://github.com/rutkowskij/blocking-non-blocking-poc 에 게시됩니다.

  • blocking-service - 느린 차단 끝점
  • 비차단 클라이언트 - Spring Boot 2.0 및 WebClient 기반 클라이언트

방금 spring-boot-starter-webflux 버전 2.0.0을 사용하여 간단한 Spring Boot 애플리케이션을 만들었습니다.봄 웹 플럭스 버전 5.0.0을 제공하는 BUILD-SNAP샷.BUILD-SNAPshot 및 Spring Core, Beans, Context 등에 동일한 기능을 제공합니다.

5.0 RC4 릴리스 이후에는 더 이상 문제가 발생하지 않습니다.이 문제는 원자로-넷티 및 원자로-코어의 연결 풀링과 관련이 있습니다.

Spring Boot 2.0.0으로 테스트도 해봤습니다.M4 - 이제 모든 것이 괜찮아 보입니다.

세부 정보: http://jira.spring.io/browse/SPR-15584

언급URL : https://stackoverflow.com/questions/43128467/spring-webflux-webclient-resilience-and-performance

반응형