Архитектура Memcached
Memcached использует архитектуру клиент-сервер. Серверы поддерживают ассоциативный массив ключ-значение; клиенты заполняют этот массив и запрашивают его по ключу. Ключи имеют длину до 250 байт, а значения могут быть не более 1 мегабайта.
Клиенты используют клиентские библиотеки для связи с серверами, которые по умолчанию предоставляют свои услуги через порт 11211. Поддерживаются как TCP, так и UDP. Каждый клиент знает все серверы; серверы не общаются друг с другом. Если клиент желает установить или прочитать значение, соответствующее определенному ключу, клиентская библиотека сначала вычисляет хэш ключа, чтобы определить, какой сервер использовать. Это дает простую форму сегментирования и масштабируемой архитектуры без совместного использования ресурсов на всех серверах. Сервер вычисляет второй хэш ключа, чтобы определить, где хранить или прочитать соответствующее значение. Серверы хранят значения в оперативной памяти; если серверу не хватает оперативной памяти, он отбрасывает самые старые значения. Поэтому клиенты должны рассматривать Memcached как временный кэш; они не могут предположить, что данные, хранящиеся в Memcached, все еще там, когда они им нужны. Другие базы данных, такие как MemcacheDB, Couchbase Server, обеспечивают постоянное хранилище при сохранении совместимости с протоколом Memcached.
Если все клиентские библиотеки используют один и тот же алгоритм хэширования для определения серверов, тогда клиенты могут читать кэшированные данные друг друга.
Типичное развертывание имеет несколько серверов и много клиентов. Однако можно использовать Memcached на одном компьютере, выступая одновременно как клиент и сервер. Размер его хэш-таблицы часто очень велик. Он ограничен доступной памятью на всех серверах в кластере серверов в центре обработки данных. Там, где это требуется для публикации в больших объемах и для широкой аудитории, это может достигать многих гигабайт. Memcached может быть одинаково полезен для ситуаций, когда либо количество запросов на контент велико, либо высока стоимость генерации определенного фрагмента контента.
Читайте также:
Комментарии
Отправить комментарий