ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: namespace-ы при использ овании нескольких memcach ed-ов





Монашёв Михаил пишет:
Здравствуйте.

Столкнулись   с   проблемой   некорректного  отображения  ключиков  на
несколько  мемкашед-серверов при включённом балансере 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





 




Copyright © Lexa Software, 1996-2009.