清漆与其他反向代理

wom*_*ble 13 squid varnish reverse-proxy

我正在与一个组织合作,该组织已部署 Varnish 作为其所有 Web 流量的缓存反向代理。他们的流量由大量客户生成的动态网站组成,通常收集静态资产。

虽然我试图喜欢 varnish(原则上我认为它有一个非常好的架构),但我在管理它和解决出现的问题时遇到了一些麻烦,所以我想知道它是否真的是正确的选择。之前我用squid做反向代理,但是作用不同,所以没有比较明确的依据。

我的问题针对在生产中部署了 varnish 或针对替代方案认真评估它的人:您是坚持使用 varnish,还是最终使用了另一个反向代理?你坚持或转换的关键点是什么,如果你确实使用了其他东西,你最终使用了什么?

mik*_*ikl 9

嗯,我在我的网络服务器上运行 Varnish,主要是出于性能原因,尽管它的负载平衡特性也很方便。

我的用例是在基于Django的网站前缓存,它对页面加载性能产生了奇迹。我能够直接从缓存中提供大多数页面,并且可以轻松处理大量访问者。

我选择 Varnish 的原因主要是性能/可扩展性。要点:

  • Varnish 让内核管理虚拟内存,其中 Squid 试图保持单独的磁盘和内存缓存,这可能会导致内核和 Squid 就哪些内容被分页到磁盘发生争执。
  • Varnish 使用 VCL,它是自己的领域特定配置语言,它通过 C 编译成机器代码。如果您的配置中有更多的逻辑——条件标头剥离等,这是一个非常真实的性能优势。

根据我的经验,在大多数情况下,Varnish 的性能比 Squid 好一点,并且在流量高峰时要好得多。另一方面,正确配置 Varnish 将需要一些邮件列表拖网,因为没有那么多准备好用于您的特定用例的文档在网上流动对于 Squid——主要是因为相比之下 Varnish 是一个相当年轻的项目。