Назад | Перейти на главную страницу

лучшая практика с memcache / php - несколько узлов memcache

Итак, я работаю над веб-приложением, которое необходимо создать для обеспечения масштабируемости. Он хранит частые запросы MySQL в кеше. У меня почти все построено и готово к работе, но меня беспокоят передовые методы обработки, где хранить данные. Я поговорил с несколькими людьми, и один из них предложил разделить каждый ключ / значение по всем узлам кэша памяти.

Значение, если я сохраню пример: 'somekey', 'это значение'

он будет разделен, скажем, на 3 сервера memcache.

Это лучший способ? или memcache больше построен на соотношении 1 к 1 ?. Например.

сохранить значение на сервере A до тех пор, пока оно не выйдет из строя - перейдите на сервер B и сохраните там.

это мое текущее понимание из исследований, которые я провел, и прошлого опыта работы с memcache.

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

Спасибо

Почти вся «распределенная» часть memcached обрабатывается на стороне клиента.

Если у вас есть несколько серверов memcached, определенных в вашей конфигурации (я вижу тег php в вашем сообщении, поэтому я предполагаю, что вы используете pecl / memcache, но я думаю, что синтаксис аналогичен для pecl / memcached)

<?php 
$mc = new Memcache() 
$mc->addServer('node1', 11211); 
$mc->addServer('node2', 11211); 
$mc->addServer('node3', 11211); 
?> 

клиент определит, на какой сервер поместить данные, используя хэш ключа. Есть вариант метода addServer (retry_interval = -1), при котором, если сервер memcached выйдет из строя, ваш PHP не будет продолжать его попытки.

Есть некоторая информация о том, как можно выполнять «репликацию» в Memcache, но по моему опыту, это не стоит усилий или «потраченной впустую» памяти (вам придется хранить все тайники на все серверы, где, если вы просто используете встроенный механизм распространения, его просто нужно будет хранить на одном. Очевидно, что если один из ваших серверов умирает, вы будете получать промахи кеша до тех пор, пока эти данные не будут сохранены на другом сервере, но вы все равно не должны использовать Memcache в качестве постоянного хранилища). Клиентский протокол Memcache довольно умен. ;)

Исходная ссылка на https://blogs.oracle.com/trond/entry/replicate_your_keys_to_multiple удален, так как больше не существует.