У меня есть веб-сервис, работающий на кластере серверов. Этот веб-сервис выполняет некоторую внутреннюю обработку, а затем может вызвать внешний сервис, за который взимается плата.
Я хочу включить некоторое кэширование, чтобы, если я получаю идентичные запросы к службе (что гарантированно произойдет), мне не придется повторять обработку, экономя время и мощность обработки, а также затраты на внешняя часть обслуживания вызова.
Однако я пытаюсь понять, как управлять этим кэшированием, когда у меня есть следующие ограничения
- Служба работает на нескольких веб-серверах для обеспечения высокой доступности и масштабируемости
- Для ответа на запрос может потребоваться до 5 секунд, но в то же время я мог получить 2 или 3 других идентичных запроса.
Как я могу удержаться при выполнении других вызовов службы, пока первый не ответит (следовательно, доступен в кеше), при работе в распределенной среде.
Я думал о том, чтобы вставить шаблон переднего прокси-сервера и создать очередь идентичных запросов в прокси, чтобы при первом возврате он мог также возвращать тот же ответ другим. Это правильный шаблон или есть лучший шаблон параллелизма, который имеет дело с этим сценарием?