Кеш, который всегда возвращает немедленный ответ?

У меня есть веб-сервис, который требует времени, чтобы создать ответ, несмотря на то, что я настроен как можно лучше.

Мне бы хотелось, чтобы какой-то кэш находился перед службой, который всегда возвращал бы последнее известное значение из службы, но в то же время передавал запрос обратно службе, чтобы создать актуальный ответ для следующего запрос.

Я знаю об ограничениях, которые это накладывает на свежесть данных, но вы можете предположить, что я счастлив с этим жить.

Технологии, которые я использую в настоящее время, - это python uwsgi через nginx, но это не должно быть ограничением для любого решения, которое вы можете предложить.

седло

1 ответ

Решение

Предполагая, что вам нужен обратный прокси, вы можете использовать Varnish в режиме saint или squid с директивой stale-if-error.

Если вам нужен кэш в приложении, например, с использованием memcached, просто не полагайтесь на механизм истечения срока хранения - срок хранения в кешированном объекте array(cached_object=>object, expiry=>timestamp) и реагируйте, если вы столкнетесь с устаревшим кешем: увеличьте срок действия до настоящего момента + немного времени (для предотвращения кучи - несколько процессов восстанавливают кеш параллельно), используйте устаревший кеш, инициализируйте обновление.

Другие вопросы по тегам