使用清漆从不同位置拍摄图像

Take images from different location using varnish

我有一个图像处理应用程序,它将从不同的位置拍摄图像,位置超过 1000 个端点,它的 URL。

所有位置都有很多图像,所以我每次都需要从所有位置拍摄图像。所以我相信更好的解决方案是在图像服务器的前端保留一个缓存服务器,当他们每次调用图像时,请求图像将缓存在缓存服务器(清漆)中,所以下次它会从缓存中获取,这将避免每次下载大图。

问题是,我们可以在前端使用清漆缓存吗?这是将缓存保留在这个地方的更好解决方案吗,这可能在清漆缓存服务器中吗?或者可以使用任何其他解决方案?

在网络加速方面,Varnish 是一个很好的选择。但也会有挑战。

开源无法满足您的需求

很遗憾,开源版本的 Varnish 无法满足您的用例。

您将面临的挑战是跟踪每个后端。事实上,您有成千上万的图像,每个图像都有自己的端点,使用不同的主机名,这将使您的后端定义变得复杂。

对于每个主机名,都应该定义一个后端,这将导致大量的后端。启动 Varnish 时,每个后端都会被测试,这可能会导致启动时间非常慢。

Varnish Enterprise 中的动态后端

Varnish Enterprise 有一个名为 "dynamic backends" 的模块,它允许您动态定义后端。您可以在运行时编写后端的主机名,并与其他系统交互以确定该主机名。

这为您提供了所需的灵活性,并减少了开销。

这是处理动态后端的 goto 模块的一个简单示例:

vcl 4.0;

import goto;

sub vcl_backend_fetch {
    set bereq.backend = goto.dns_backend("my.hostname.com");
}

本地还是云端?

如果您有内部部署,则需要购买许可证密钥才能使用 Varnish Enterprise 并利用动态后端。

如果您在云端工作,我们在 AWS、Azure 和 GCP 上有 Varnish Enterprise 机器映像。这些按小时计费,付款由云供应商处理。

这种方式更便宜,而且非常灵活,无需任何预付款。

结论

很遗憾,您需要的功能未开源。我不是想在这里推销,但 Varnish 的商业版本似乎是处理那么多后端的唯一方法。

如果有的话:在云中使用我们的解决方案将更容易节省您的预算。