У меня есть проект ASP.NET Core Web API.Он имеет один контроллер с методом GetLocations
. GetLocations подключается к 5 другим веб-службам в Интернете.Собирает некоторую информацию и возвращает коллекцию через json.В этом методе я кеширую данные каждые 5 минут, используя кеширование в памяти.
Если срок действия кэша истекает, он пытается подключиться ко всем 5 службам и получить информацию и т. Д.
Моя проблема:
У меня много пользователей, запрашивающихэти данные постоянно, 50 запросов в секунду к этому API.
Когда срок действия кэша истекает, я полагаю, что существует какая-то блокировка потока.В данный момент у меня ограниченная видимость проекта, но я подозреваю, что все эти запросы вызывают метод и обращаются к 5 зависимым службам, пока один из них не получит завершенный ответ от всех 5.
Является ли мое предположениеправо?Если так, как я могу исправить это?Нужно ли делать каждый вызов асинхронных веб-служб?Поможет ли это этому сценарию?Я не уверен на 100%, потому что запросы вызывают вызов метода.