Подтвердить что ты не робот

Что сервер memcached

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

4b9b3361

Ответ 1

Я согласен с большинством вещей, на которые ответил @phihag, но я должен прояснить некоторые вещи.

Memcached хранит данные в соответствии с ключом (phihag назвал его id, чтобы не путать с идентификаторами базы данных). Данные могут быть разных размеров, поэтому вы можете хранить небольшие биты (например, 1 запись, извлеченную из базы данных), или вы можете хранить огромные куски данных (например, сотни записей или целые готовые html-страницы).

Memcached не обычно используется на том же компьютере, что и сервер приложений, причина в том, что он предназначен для использования через TCP (он будет доступен через сокеты, если он был разработан для работа на том же сервере), и он был разработан как сервер объединения.

Интересная часть объединения - у вас может быть 10 машин, на которых работает Memcached, каждый из которых выделяет максимум 10 ГБ оперативной памяти для этой цели. 10 * 10 = объем свободного пространства на 100 ГБ.

Когда вы пишете значение в Memcached, только один (случайно или через некоторые алгоритмы) сервера хранит его. Когда вы пытаетесь прочитать значение из Memcached, только сервер, который его сохранил, отправит его вам.

И действительно, вы можете поместить весь сервер базы данных /memcached/application/fileserver на один и тот же компьютер, и обычно вы делаете это для вашей изолированной программной среды. Но вы также можете поместить каждый на отдельную машину и любую другую комбинацию из двух.

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

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

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

И так как расширение пула памяти для сервера Memcached так же просто, как добавление IP-адреса нового сервера в список, вы будете масштабироваться горизонтально, как на многих серверах (это типичное использование Memcached).

Ответ 2

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

Затем приложение использует свой memcached-клиент для связи с сервером memcached и запрашивает кешированный контент. Это быстрее, чем запрос данных из традиционной базы данных, поскольку

  • Сервер memcached просто сопоставляет идентификаторы со значениями и никогда не нуждается в сканировании всей таблицы.
  • Протокол memcached проще. Серверу не нужно разбирать SQL или так, и клиенту не нужно его обрабатывать.
  • Так как memcached не требует надежности базы данных (подумайте о резервных копиях, сбоях в изоляции, кластеризации, безопасности и т.д.), ее можно запустить на том же компьютере, на котором работает приложение. Хотя вы можете запускать базу данных на том же компьютере, на котором работают приложения, это делается с недоверием по вышеуказанным причинам.