Re: nginx и несколько memcached серверов
Andrey Zloy
andrey.zloy at gmail.com
Sun Oct 25 20:48:13 MSK 2009
Сдвиг на 16 бит потому что это алгоритм из Cache::Memcached. думаю что они
сдвигают биты для получения меньшего числа. Ведь нет смысла делить огромное
число, если нужен лишь остаток от деления.
На счет замены md5 на crc32 согласен, надо переделать. Нет смысла получать
такой сложный хэш, когда цель всего лишь сжать url.
25 октября 2009 г. 20:02 пользователь Deomid Ryabkov
<myself at 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>;
>> }
>> if ($memcached_index = 1){
>> memcached_pass 172.28.144.53:11211 <http://172.28.144.53:11211>;
>> }
>>
>> error_page 404 @fallback;
>> }
>> }
>> }
>>
>>
>
> --
> Deomid "rojer" Ryabkov
> myself at rojer.pp.ru
> rojer at sysadmins.ru
> ICQ: 8025844
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091025/6d5a8f3b/attachment.html>
More information about the nginx-ru
mailing list