Я разрабатываю локальную службу кэширования, которая позволила бы пользователю быстро получить доступ к данным из хранилища Redis. Поток приложения выглядит так:
- Клиент запрашивает информацию у прокси.
- Прокси сначала проверяет Redis, возвращает данные клиенту, если он есть.
- Если данных нет, прокси извлекает их из AWS и возвращает их клиенту, а также кэширует их в хранилище Redis.
Моя основная задача - относительная скорость получения не кэшированных данных. Если данные еще не существуют в кэше, прокси-сервер должен потратить время на извлечение данных из AWS. Если прокси-сервер был асинхронным, он мог бы потенциально быстро извлекать кэшированные данные, ожидая более длительных вызовов в облако.
С другой стороны, я слышал, что в некоторых случаях использование async менее эффективно, чем, скажем, многопоточное приложение Spring Boot, особенно с учетом того, что в большинстве случаев даже вызов API в облако будет гарантированно <100 мс . </p>
Какая модель лучше подходит для такого рода приложений?
Дополнительный вопрос: за пределами этого конкретного проекта, когда стоит использовать Async и когда это отрицательно влияет на производительность вашего приложения?