#spring #rsocket #spring-rsocket
Вопрос:
Я пытаюсь сравнить производительность RSocket (с использованием Spring) при загрузке с WebClient.
При модульном тестировании вызов RSocket показывает гораздо лучшую производительность, но при нагрузочном тестировании производительность значительно снижается по сравнению с http (с использованием Webclient).
- Код сервера: Сервер
Это контроллер, предоставляющий конечные точки RSocket
- Код клиента: Клиент
Это класс клиента, который вызывает конечные точки RSocket.
NB: Я предоставляю клиенту RSocket доступ к конечным точкам http, чтобы иметь возможность тестировать их с помощью Gatling.
Результаты испытаний:
1 — Одиночные звонки:
- Webclient => 700 мс
- RSocket => 300 мс
2 — 200 одновременных вызовов:
- Webclient => 880 мс
- RSocket => 3_400 мс
В вызове Webclient я сокращаю количество вызовов на сервер, собирая данные потока в список перед запросом сервера. Во время вызова RSocket я передаю все данные в потоковом режиме, поэтому я обрабатываю и отправляю клиенту, как только они получены (=> гораздо больше вызовов на сервер по запросу клиента).