Мне нужно разместить некоторые микросервисы, и некоторые из них вызывают другие веб-сервисы из другой войны.
Не уверен, что было достаточно ясно, но
war_a содержит services_a, которым нужно вызвать services_b, которые находятся на war_b
сейчас, если я настроил tomcat, с базовой конфигурацией с обоимиwar_a и war_b, и я звоню с AB, чтобы провести стресс-тест, что происходит, если war_b работает медленно, tomcat перестает отвечать. Я думаю, это потому, что модель Tomcat - это 1 поток x запрос, поэтому с базовым конфигом (200 потоков), если запрос от A вызывает B, тогда я ограничен 100 запросами (или что-то в этом роде). даже хуже всего, если A отправляет запрос для B, а у меня уже есть 200 запросов в очереди, запрос B переходит в очередь, и очередь никогда не будет перетасована, потому что A никогда не закончится (ждать B) ... как тупик, но дляresource:)
Для решения этой проблемы у меня есть следующие идеи: 1) развернуть 2 tomcat 2) сделать вызов с приостановкой-возобновлением сервлета-3, например, WebClient на пружине или что-то в этом роде (вернуть DeferredResponse или Callable илиобъект Mono из SpringWebClient)
метод 2 работает довольно хорошо, но я должен попросить основательно переписать коды, тщательно продумав, кто должен использовать асинхронные вызовы. Я также вижу еще одну проблему, вызывающую aysnc, означающую, что запрос обрабатывается в другом ThreadPool (кажется netty ThreadPool, если я использую webclient и выполняю "stuff" в onSuccess ()) и если разработчик начинает делать "вещи" с ответом (запрос на базе данных)затем асинхронная часть стала узким местом. В этом случае netty ThreadPool будет использоваться не только для «выбора» в сокете, но и для «вещей», поэтому его размер должен быть по-другому? (стандартная пружина, нетто и реакция создают 1 ядро на ядро)
метод 1 требует больше работы, больше усилий для развертывания и больше планирования архитектуры микросервисов.
Я буду рад, если кто-то сможетподелитесь некоторыми другими вариантами или дайте мне подсказку о том, что лучше всего использовать в этом сценарии.
Большое спасибо (и извините за мой ужасный английский)