我正在尝试在负载 Vs WebClient 上对 RSocket(使用 Spring)性能进行基准测试。
在单元测试中,RSocket 调用显示出更好的性能,但在负载测试中,与 http(使用 Webclient)相比,性能显着下降。
- 服务器代码:服务器
这是暴露 RSocket 端点的控制器
- 客户端代码:客户端
这是调用 RSocket 端点的客户端类。
注意:我正在使用 http 端点公开 RSocket 客户端,以便能够使用 Gatling 对它们进行负载测试。
试验结果:
1- 单次通话:
- 网络客户端 => 700 毫秒
- RSocket => 300ms
2- 200 个并发呼叫:
- 网络客户端 => 880 毫秒
- RSocket => 3_400ms
在 Webclient 调用中,我通过在请求服务器之前将 Flux 数据收集到列表中来减少对服务器的调用次数。在 RSocket 调用中,我正在流式传输所有数据,因此我正在处理并在收到它们后立即发送给客户端(=> 每个客户端请求对服务器的调用更多)。