Welcome! Log In Create A New Profile

Advanced

Re: nginx и несколько memcached серверов

Andrey Zloy
October 25, 2009 05:04PM
Поймите, менять алгоритм вычисления сервера нельзя. Сдвиг битов и наложение
маски с последующим взятием остатка деления делает модуль, который пишет в
memcached. Т.е. мне нужно полностью повторить его действия, чтобы знать
откуда брать данные. Cache::Memcached пишет, nginx - читает. Алгоритм должен
быть одинаков с обоих сторон.

Больше волнуют побочные действия всего этого творчества. Не завалится ли
nginx дергая модуль String::CRC32 для каждого урла и вычиляя эту нехитрую
формулу. Perl в nginx до сих пор в эксперементальном виде потому и
волнительно.

25 октября 2009 г. 23:05 пользователь Deomid Ryabkov
<myself@rojer.pp.ru>написал:

> Andrey Zloy wrote:
>
>> Сдвиг на 16 бит потому что это алгоритм из Cache::Memcached. думаю что они
>> сдвигают биты для получения меньшего числа. Ведь нет смысла делить огромное
>> число, если нужен лишь остаток от деления.
>>
> наоборот, если цель - получить осттаок от деления, то нет смысла сдвигать.
> и уж тем более нет смысла накладывать маску 0x7fff.
> сдвигать есть смысл только в том случае, если в нижних битах по какой-то
> причине недостаточно энтропии.
> может, конечно, я чего-то не понимаю, пусто тогда другие участники меня
> поправят. в чём сермяжная правда использования верхних 16 бит, а не нижних?
> мой вариант: (CRC32(uri) ^ CRC32(args)) % num_servers, без предварительной
> конкатенации - xor двух crc32 ничем не хуже, чем CRC32 от конкатенации.
>
> На счет замены md5 на crc32 согласен, надо переделать. Нет смысла получать
>> такой сложный хэш, когда цель всего лишь сжать url.
>>
>> 25 октября 2009 г. 20:02 пользователь Deomid Ryabkov <myself@rojer.pp.ru<mailto:
>> myself@rojer.pp.ru>> написал:
>>
>>
>> CRC32 от MD5, зачем-то сдвинутый на 16. не нравятся младшие биты?
>> md5 вычислительно значительно дороже CRC32, может обойтись только
>> CRC32?
>>
>> Andrey Zloy wrote:
>>
>> Написали небольшой конфиг, который позволяет nginx'у
>> определять "правильный" memcached сервер.
>> Логика определения сервера взята из модуля Cache::Memcached.
>> Ключом для мемкеша служит md5 от url'а страницы.
>>
>> На продакшн конфиг пока не выкатывал. На тестовых серверах
>> работает хорошо.
>>
>> Подскажите могут ли быть подводные камни?
>> Может кто уже писал подобные решения
>>
>> http {
>> perl_set $md5_uri 'sub {
>> use Digest::MD5 qw(md5_base64);
>> my $r = shift;
>> my $uri=$r->uri;
>> my $args=$r->args;
>> if ($args){
>> $uri=$uri."?".$args;
>> }
>> return md5_base64($uri);
>> }';
>>
>> perl_set $memcached_index '
>> sub {
>> use String::CRC32;
>> my $r = shift;
>> return (((crc32($r->variable("md5_uri")) >> 16) &
>> 0x7fff) % 2); # 2 - кол-во серверов memcached
>> }
>> ';
>>
>> server {
>> listen 3666;
>> server_name 172.28.144.68;
>>
>> location / {
>> set $memcached_key $md5_uri;
>> if ($memcached_index = 0){
>> memcached_pass 172.28.144.52:11211
>> http://172.28.144.52:11211 http://172.28.144.52:11211;
>> }
>>
>> if ($memcached_index = 1){
>> memcached_pass 172.28.144.53:11211
>> http://172.28.144.53:11211 http://172.28.144.53:11211;
>> }
>>
>>
>> error_page 404 @fallback;
>> }
>> }
>> }
>>
>>
>>
>> -- Deomid "rojer" Ryabkov
>> myself@rojer.pp.ru <mailto:myself@rojer.pp.ru>
>> rojer@sysadmins.ru <mailto:rojer@sysadmins.ru>
>> ICQ: 8025844
>>
>>
>>
>
> --
> Deomid "rojer" Ryabkov
> myself@rojer.pp.ru
> rojer@sysadmins.ru
> ICQ: 8025844
>
>
Subject Author Posted

nginx и несколько memcached серверов

Andrey Zloy October 25, 2009 05:48AM

Re: nginx и несколько memcached серверов

Maxim Dounin October 25, 2009 06:22AM

Re: nginx и несколько memcached серверов

Andrey Zloy October 25, 2009 06:46AM

Re: nginx и несколько memcached серверов Attachments

Deomid Ryabkov October 25, 2009 01:14PM

Re: nginx и несколько memcached серверов

Andrey Zloy October 25, 2009 01:56PM

Re: nginx и несколько memcached серверов Attachments

Deomid Ryabkov October 25, 2009 04:24PM

Re: nginx и несколько memcached серверов

Andrey Zloy October 25, 2009 05:04PM

Re: nginx и несколько memcached серверов

Peter A Leonov October 25, 2009 08:04PM

Re: nginx и несколько memcached серверов

Andrey Zloy October 26, 2009 04:10AM

Re: nginx и несколько memcached серверов

Peter A Leonov October 26, 2009 05:54AM

Re: nginx и несколько memcached серверов

Andrey Zloy October 26, 2009 06:26AM

Re: nginx и несколько memcached серверов Attachments

Deomid Ryabkov October 26, 2009 09:36AM

Re: nginx и несколько memcached серверов

Andrey Zloy October 26, 2009 10:40AM

Re: nginx и несколько memcached серверов

mente March 23, 2010 01:51PM

Re[2]: nginx и несколько memcached серверов

Михаил Монашёв March 23, 2010 02:06PM

Re: nginx и несколько memcached серверов

mente March 23, 2010 02:24PM

Re[2]: nginx и несколько memcached серверов

Михаил Монашёв March 23, 2010 03:34PM

Re[2]: nginx и несколько memcached серверов

Михаил Монашёв March 23, 2010 03:40PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 104
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready