Я буду использовать Couchbase в качестве примера распределенного кеша (http://www.couchbase.com/).
Первый вопрос: Как распределяются данные о распределенных кеш-памяти?
Ответ: Обычно распределенный кэш является действительно много машин, действующих как один логический блок. Таким образом, у вас может быть пять компьютеров, на которых работает Couchbase, и они заботятся о целостности и избыточности данных для вас. Другими словами, если одна машина умирает, вы все равно можете получить свои данные из кластера. (Но да, каждый узел будет иметь копию данных в случае сбоев.)
Некоторые кластерные машины будут иметь процесс перед машинами в кластере для маршрутизации запросов, а иногда вы используете несколько строк подключения и клиента будет округлять запросы к кластеру. Просто зависит от технологии.
Второй вопрос: Зачем использовать кэш, так как все это идет по сети?
Ответ: Очень немногие из распространенных технологий кэширования там живут исключительно в оперативной памяти/памяти. Им никогда не нужно обращаться на диск для запроса, чтобы они были быстрее, чем обычная база данных.
Также базы данных часто должны выполнять некоторую работу по объединению данных из нескольких таблиц, тогда как кеш обычно просто хранит данные в ключе/значении. Это означает, что кэш никогда не должен что-либо обрабатывать. Это просто прямые поиски, которые дешевы.
Третий вопрос: Почему распределенный кеш поверх локальных кешей?
При запуске масштабирования вам понадобится распределенный кеш.
Прежде всего кеш может расти довольно большой, и если он работает только в памяти, он будет конкурировать с вашим веб-сервером (или что-то еще) за ресурсы. Лучше иметь машину, предназначенную для кэширования.
Во-вторых, кеш будет отличаться от других технологий в вашем стеке. Для каждых десяти узлов веб-сервера может потребоваться только четыре кеш-узла. Лучше отделить.
Наконец, вы хотите, чтобы любой клиент имел возможность подключаться и получать самые последние данные. В противном случае, если пользователь отскакивает от одного веб-сервера к другому в веб-ферме, кэшированные данные могут быть совершенно разными.
Thx для большого ответа. Я запутался в распределенном кеше в памяти. Поскольку у нас есть выделенный кластер машин, который наша машина «подключится» для запроса к кешу, как может быть свойство «в памяти» в этом случае? Мы просто запрашиваем другой компьютер/сервер, который действует как кеш, поэтому кеш не находится в нашей собственной памяти? – Bober02
Исправить. Клиент (предположим, что веб-сервер) ничего не хранит в своей памяти. Часть «в памяти» находится на выделенной машине кеша в кластере. Вам все равно придется заплатить цену за выход в сеть. Приятно, что клиент - в этом случае - не должен конкурировать с кешем для ОЗУ. Если вы можете делать вещи в веб-сервере и не беспокоиться о сохранении кешированных объектов в памяти. – ryan1234