Color Modes

分布式像素缓存

分布式像素缓存是单主机传统像素缓存的扩展。分布式像素缓存可以跨越多个服务器,以便它可以扩展大小和事务容量以支持非常大的图像或大型图像序列。在一个或多个主机上启动像素缓存服务器。当您读取或操作图像并且本地像素缓存资源耗尽时,ImageMagick 会联系一个或多个这些远程像素服务器来存储或检索像素。

对于非常大的图像或大型图像序列,或者如果您的主机资源有限,您可以在一个或多个远程主机上使用分布式像素缓存。首先,在 policy.xml 安全策略配置文件中设置您的共享密钥。


<policy domain="cache" name="shared-secret" value="passphrase" stealth="true"/> 

这里我们创建两个分布式像素缓存,并从我们的桌面使用它们

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 

对于大型图像序列,服务器以循环的方式联系,以便将负载分布在多个分布式像素缓存上(假设您有一个主机列表而不是单个主机)。在我们的示例中,桌面上的某些适度资源可通过 -limit 选项定义。对于较小的图像,它们将分配到桌面,直到达到指定的限制。

当使用分布式像素缓存时,您的图像处理任务可能会执行得更慢,因为像素在客户端和服务器之间通过网络来回传递。访问虚拟像素的算法(例如 -sharpen)比仅访问真实像素的算法(例如 -negate)明显慢,快 3 倍,因为网络流量增加。

客户端只能联系兼容的分布式像素缓存服务器。兼容性要求相同的 ImageMagick 库接口、量子深度、HDRI 状态、操作系统字长、字节序和密码。分布式像素缓存会检查这些属性,如果不满足这些要求,则会抛出异常。