namespace-ы при использовании нескольких memcached-ов
Dmitriy MiksIr
miksir at maker.ru
Tue Feb 19 18:30:27 MSK 2008
Монашёв Михаил пишет:
> Здравствуйте.
>
> Столкнулись с проблемой некорректного отображения ключиков на
> несколько мемкашед-серверов при включённом балансере memcached_hash (
> http://openhack.ru/nginx-patched/wiki/MemcachedHash ). Проблема в том,
> что перловые модули Cache::Memcached и Cache::Memcached::Fast, которые
> записывают ключики в мемкашед, при расчёте сервера используют ключ без
> нэйспейса.
А почему они так делают? Мне кажется, что тут скорее поведение этих
библиотек менее валидное, чем поведение nginx.
Поправьте меня, если я не прав, но неймспейсы - это исключительно
софтовое решение, а выбор сервера должен быть сделан на основе ключа
сохранения, вне зависимости из каких частей он состоит.
А в конфиге nginx-а можно было задать только ключик.
> Поэтому нейспейс писался прямо в ключик:
>
> set $memcached_key "my-namespace$uri$is_args$args";
>
> И это прекрасно работало, когда не было балансера (ибо nginx обходил
> все мемкашед-сервера в поисках ключа).
>
> Но чтобы корректно вычислить мемкашед-сервер нужен только ключик без
> неймспейса. По этой причине мы добавили переменную
> $memcached_namespace:
>
> set $memcached_namespace "my-namespace";
> set $memcached_key "$uri$is_args$args";
>
> С ней всё будет работать как и прежде, но перед отправкой запроса к
> мемкашеду, к ключу будет препендиться неймспейс, а мемкашед-сервер
> будет вычисляться только от ключа.
>
> Подробнее тут: http://openhack.ru/nginx-patched/wiki/MemcachedHash
>
More information about the nginx-ru
mailing list