Cache de pixels distribuído
Um cache de pixels distribuído é uma extensão do cache de pixels tradicional disponível em um único host. O cache de pixels distribuído pode abranger vários servidores, de modo que possa crescer em tamanho e capacidade transacional para suportar imagens muito grandes ou grandes sequências de imagens. Inicie o servidor de cache de pixels em um ou mais hosts. Quando você lê ou opera sobre uma imagem e os recursos do cache de pixels local se esgotam, o ImageMagick contata um ou mais desses servidores de pixels remotos para armazenar ou recuperar pixels.
Para imagens realmente grandes ou grandes sequências de imagens, ou se houver recursos limitados no seu host, você pode utilizar um cache de pixels distribuído em um ou mais hosts remotos. Para começar, primeiro defina seu segredo compartilhado no arquivo de configuração de política de segurança policy.xml:
<policy domain="cache" name="shared-secret" value="_passphrase_ " stealth="true"/>
Aqui criamos um serviço de cache de pixels distribuído e o utilizamos a partir do nosso desktop:
magick -distribute-cache 6668 & # start on localhost
magick -limit memory 1GiB -limit map 2GiB -limit disk 4GiB \
-define registry:cache:hosts=localhost:6668 \
myhugeimage.jpg -sharpen 5x2 myhugeimage.png
Aqui criamos dois caches de pixels distribuídos e os utilizamos a partir do nosso desktop:
magick -distribute-cache 6668 & # start on 192.168.100.50
magick -distribute-cache 6668 & # start on 192.168.100.51
magick -limit memory 1GiB -limit map 2GiB -limit disk 4GiB \
-define registry:cache:hosts=192.168.100.50:6668,192.168.100.51:6668 \
myhugeimage.jpg -sharpen 5x2 myhugeimage.png
Para grandes sequências de imagens, os servidores são contatados em modo round-robin para distribuir a carga entre vários caches de pixels distribuídos (presumindo que você tenha uma lista de hosts em vez de um único host). Em nosso exemplo, alguns recursos modestos estão disponíveis no desktop, conforme definido pela opção -limit. Para imagens menores, elas são alocadas no desktop até os limites especificados.
Suas tarefas de processamento de imagem provavelmente terão desempenho mais lento ao utilizar um cache de pixels distribuído, devido ao tráfego de pixels entre o cliente e o servidor por uma rede. Algoritmos que acessam pixels virtuais (por exemplo, -sharpen) são perceptivelmente mais lentos, até 3 vezes mais lentos, do que algoritmos que acessam apenas pixels autênticos (por exemplo, -negate), devido ao aumento do tráfego de rede.
Um cliente só pode contatar um servidor de cache de pixels distribuído compatível. A compatibilidade requer a mesma interface da biblioteca ImageMagick, profundidade de quantum, status HDRI, tamanho de palavra do SO, ordem de bytes (endianness) e passphrase. O cache de pixels distribuído verifica esses atributos e lança uma exceção se esses requisitos não forem atendidos.