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

Deomid Ryabkov myself at rojer.pp.ru
Sun Oct 25 20:02:37 MSK 2009


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 --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3308 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091025/c3014525/attachment.bin>


More information about the nginx-ru mailing list