【问题标题】:Pass Varnish backend response to solr将 Varnish 后端响应传递给 solr
【发布时间】:2017-03-16 00:36:30
【问题描述】:

有人知道是否可以选择将清漆与 Solr 结合使用。

我想做的是:

  1. 用户请求一个 URL
  2. Varnish 没有缓存版本或只是过时的版本
  3. Varnish 调用后端并最终收到响应

这是我想连接并将后端响应传递给“./bin/solr post ...”的地方,因此每次我提供新的内容版本时,我的 solr 索引都会立即更新。

这可能吗?

提前致谢

鲍里斯

【问题讨论】:

  • Solr 是我见过的最快的产品之一,你想在它前面放一个网络缓存。为什么要这样做?
  • 两个原因:1. 保持 muy 缓存 punto 日期 2. 保持 muy solr 最新。 Booth 无需多次查询。
  • 只更新 Solr 中的数据。您甚至可以更新数百万个文档而不会损失性能。
  • 我不想缓存 solr。我想要的是每次清漆需要从后端获取时填充我的 solr 索引。这样,solr 索引将与发布的内容保持同步,我不需要进行两次查询。我无法控制爬虫首先加载什么。

标签: command-line solr hook varnish


【解决方案1】:

这是一个双重问题 - 第一,将 Varnish 粘贴在 Solr 前面可以按预期工作。它减轻了 Solr 的负载,并允许 Varnish 返回内容而无需查询 Solr。

但是,您应该将索引进程与 Varnish 管道分开,否则如果多个线程开始要求在短时间内启动索引进程,您可能会遇到非常糟糕的情况。这样做的正确方法是在 Varnish 中为响应留出合理的时间,使用 expire(通过 Varnish 中的禁令或类似的东西,或者通过在您的请求中附加索引版本标识符到 Solr),但启动并执行索引清漆之外的文件交付。

当索引完成时,您向 Varnish 发出禁令,告诉 Varnish 任何现有的、缓存的响应都是无效的 - 这会使 Varnish 再次开始查询您的后端。这样,Varnish 可以做它最擅长的事情,缓存内容,并且您可以保留决定何时更新索引以及何时需要在 Varnish 之外进行更新的逻辑。

虽然 Solr 进行有效的缓存,但 Varnish 做得更好(因为它可以只考虑响应,而不必查看链中更后面的任何内容),因此可以减轻重复查询的负载。

【讨论】:

    猜你喜欢
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2022-01-13
    • 1970-01-01
    • 2018-11-25
    • 2019-03-20
    • 2012-12-15
    相关资源
    最近更新 更多