kvn
programmer
PHP+Memcached - hi-load
Привет,
Есть два клиента для пыха:
1. php-memcache: http://www.php.net/manual/en/book.memcache.php
2. php-memcached: http://www.php.net/manual/en/book.memcached.php
К сравнению клиентов хотел бы попросить прояснить такой момент - это обработка файловеров:
В “старом” php-memcache - есть встроенный механизм обработки отваливания половины кеша.
В php-memcached я такого не нашел.
Пример:
Имеем два memcached-сервера (srv1, srv2).
php-memcache - рапределяет ключи по серверам 50%/50% или в зависимости от веса сервера, но в любом случае получаем объем кеша равный сумме памяти выделенной на обоих серверах.
При падении srv2, то в первый раз переменные, которые были на srv2 не доступны, беруться из источника, но сам модуль уже видит, что srv2 недоступен и сохранение и последующий get происходит уже только с srv1.
Т.е. оставшийся сервер “подхватывает” кеш того, кто “упал”.
php-memcached - рапределяет ключи по серверам 50%/50% или в зависимости от веса сервера, но в любом случае получаем объем кеша равный сумме памяти выделенной на обоих серверах.
При падении srv2, модуль не меняет алгоритм распределения переменных по серверам, и тем самым получаем половина переменных в кеше (на srv1), а половина - без кеша (srv2 down), и будут без кеша, пока не поднимется srv2.
Вопрос: это такое различие в идеологии, или я где-то чего-то не досмотрел? и в php-memcached можно реализовать failover?
Задача - получить большой кеш, который можно расширять путем введения новых memcached-серверов.
Кто как делает?
Далее:
У memcached-сервера есть два режима работы: сингл и репликация.
Репликация очень приятная вещь в плане возможности получения и сохранения конкретного значения _на любой из серверов_. Либо сохранил на один, получаешь с другого. Также можно частично решить вопрос отказоустойчивости.
Т.е. по сути я могу сделать группы кеш-серверов:
с1 - репликация на с2
с3 - репликация на с4
с1 и с2 в группе (они хранят одни данные), размер кеша определяется одним сервером.
с3 и с4 в группе (они хранят одни данные), размер кеша определяется одним сервером.
Но с1 и с3 - можно использовать как рапределение кеша, в котором объем кеша равен сумме.
Вопрос: как эту структуру указать модулю php? либо первому либо второму?
Не нашел.
Может есть где-то статейки, или примеры, или кто-то сам такое строил...
Буду благодарен.
Спасибо!
Привет,
Есть два клиента для пыха:
1. php-memcache: http://www.php.net/manual/en/book.memcache.php
2. php-memcached: http://www.php.net/manual/en/book.memcached.php
К сравнению клиентов хотел бы попросить прояснить такой момент - это обработка файловеров:
В “старом” php-memcache - есть встроенный механизм обработки отваливания половины кеша.
В php-memcached я такого не нашел.
Пример:
Имеем два memcached-сервера (srv1, srv2).
php-memcache - рапределяет ключи по серверам 50%/50% или в зависимости от веса сервера, но в любом случае получаем объем кеша равный сумме памяти выделенной на обоих серверах.
При падении srv2, то в первый раз переменные, которые были на srv2 не доступны, беруться из источника, но сам модуль уже видит, что srv2 недоступен и сохранение и последующий get происходит уже только с srv1.
Т.е. оставшийся сервер “подхватывает” кеш того, кто “упал”.
php-memcached - рапределяет ключи по серверам 50%/50% или в зависимости от веса сервера, но в любом случае получаем объем кеша равный сумме памяти выделенной на обоих серверах.
При падении srv2, модуль не меняет алгоритм распределения переменных по серверам, и тем самым получаем половина переменных в кеше (на srv1), а половина - без кеша (srv2 down), и будут без кеша, пока не поднимется srv2.
Вопрос: это такое различие в идеологии, или я где-то чего-то не досмотрел? и в php-memcached можно реализовать failover?
Задача - получить большой кеш, который можно расширять путем введения новых memcached-серверов.
Кто как делает?
Далее:
У memcached-сервера есть два режима работы: сингл и репликация.
Репликация очень приятная вещь в плане возможности получения и сохранения конкретного значения _на любой из серверов_. Либо сохранил на один, получаешь с другого. Также можно частично решить вопрос отказоустойчивости.
Т.е. по сути я могу сделать группы кеш-серверов:
с1 - репликация на с2
с3 - репликация на с4
с1 и с2 в группе (они хранят одни данные), размер кеша определяется одним сервером.
с3 и с4 в группе (они хранят одни данные), размер кеша определяется одним сервером.
Но с1 и с3 - можно использовать как рапределение кеша, в котором объем кеша равен сумме.
Вопрос: как эту структуру указать модулю php? либо первому либо второму?
Не нашел.
Может есть где-то статейки, или примеры, или кто-то сам такое строил...
Буду благодарен.
Спасибо!