2012-05-26 3 views
32

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

ответ

49

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

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

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

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

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

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

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

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

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

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

+2

Удивительный ответ. Это очень помогает мне. Спасибо, а также @phihag. –

+0

@AllenJee не могли бы вы отметить ответ, как принято? –

+0

Как сервер Memcached выполняет резервное копирование своих данных? – trillions

22

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

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

  1. Memcached сервер просто отображает идентификаторы значений, и никогда не должен сканировать всю таблицу
  2. Memcached протокол проще. Серверу не нужно разбирать SQL или так, и клиенту не нужно его обрабатывать.
  3. Поскольку memcached не требует надежности базы данных (подумайте о резервных копиях, сбоях в изоляции, кластеризации, безопасности и т. Д.), Ее можно запустить на том же компьютере, на котором работает приложение. Хотя вы можете запускать базу данных на том же компьютере, на котором работают приложения, это делается по неодобренным причинам.
+2

Большое спасибо! Приложение обращается к своему memcached-клиенту, а затем клиент запрашивает сервер memcached для получения данных. Как правило, приложение, memcached-клиент и memcached-сервер находятся на одном компьютере. И другие клиенты memcached могут связываться с другими серверами memcached, которые работают на разных машинах в соответствии с их протоколом. Правильно ли это? –

+1

Да, это именно оно. – phihag

+1

Могу ли я разделить их на две части? Один из них - веб-сервер, который включает приложение, клиент memcached и сервер memcached. Другой - сервер db. –

Смежные вопросы