Почему Squid хорош для REST-архитектур? - PullRequest
5 голосов
/ 28 ноября 2009

В этой статье утверждается, что Используйте Memcache, если вы часто выбираете случайные объекты из базы данных, и Squid, если вы используете архитектуру REST . Пожалуйста, объясните почему (в отношении Squid).

Ответы [ 5 ]

6 голосов
/ 28 ноября 2009

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

Squid - это прокси-сервер и веб-кеш. Если все через URL (например, REST), то Squid сделает работу бесплатно.

Итак, в общем, memcache общего назначения, Squid предназначен для кэширования результатов URL.

3 голосов
/ 28 ноября 2009

REST - это все о http и ресурсах.

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

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

2 голосов
/ 28 ноября 2009

Squid (будучи прокси и кешем) может эффективно использоваться с конечными точками REST. В REST ресурсы (предполагается) должны быть явно переданы с заголовками ETAG / Last-Modified для облегчения кэширования.

Кроме того, многие операции в REST (предположительно) должны быть идемпотентными (повтор без каких-либо побочных эффектов): это идеальная ситуация для Squid Он может действовать в одиночку при выполнении этих операций без беспокойства сервера приложений.

2 голосов
/ 28 ноября 2009

Остальные используют глаголы http для своих правильных действий, то есть GET всегда неразрушающий. URL-адреса также постоянно называются. Это означает, что кеширование http в Squid может использоваться для повышения производительности без использования базовой технологии программирования (ASP MVC, Rails, CouchDB и т. Д.)

1 голос
/ 06 мая 2019

(Этот ответ приходит спустя десятилетие после первоначального вопроса - но, учитывая, что я сталкиваюсь с этим вопросом в более крупных организациях, с которыми я консультируюсь, я решил, что здесь полезно объяснить.)

Когда Рой Филдинг посмотрел на SOAP , он понял, что если бы Методы HTTP (GET, POST и т. Д.) Были используется для доступа к ресурсам и их изменения, а не только для использования HTTP для простых удаленных вызовов процедур, тогда можно использовать остальные спецификации HTTP, такие как кэширование ( RFC-2616 ). Многоуровневая архитектура Филдинга иллюстрирует это. Вот почему он придумал ОТДЫХ .

В качестве прокси-сервера для кэширования HTTP Squid - это та реализация, которая может значительно снизить нагрузку на ваши бэкэнд-системы, а также обеспечить актуальность кэшированных данных.

Стандарт позволяет определить, как долго кэшируется элемент до его повторной проверки, и как делать условные запросы, поэтому в ответ на запрос отправляются только новые версии. Все это поведение клиента уже реализовано в браузерах и в клиентах HTTP, используемых на основных языках, таких как Java *1025* и сопутствующая библиотека кэширования .

Java *1025* Apache HttpComponents.

Поскольку все эти механизмы были четко определены и реализованы к настоящему времени, их использование на самом деле является лишь вопросом использования этих компонентов, большинство из которых вы, возможно, уже используете (например, на момент написания статьи Apache HC Components реализация по умолчанию, которая поставляется с SpringBoot - просто добавьте библиотеку кэширования в сборку).

Если вы захотите реализовать это с помощью MemCache или Redis , вы просто заново изобретаете колесо и с тех пор будете постоянно поддерживать этот код. И если вы не внедрите эквивалент RFC 2616 в коде, вы будете использовать устаревшие данные с неэффективной связью.

...