elasticsearch - 同时使用 Varnish 和 elasticsearch 是一个糟糕的架构选择吗?

标签 elasticsearch architecture varnish

我有一个用户使用的 REST 服务和一个 Varnish 缓存,以保护数据库免受过多请求的影响。

一个新的需求出现了,能够对我们的服务公开的数据集执行快速搜索,为此我们开始使用 Elasticsearch。

保留 Varnish 和 Elastic 是一种不好的方法吗?我们应该只使用 Elasticsearch 吗?

注意:Elastic 是 NRT 系统这一事实不是问题。

谢谢

最佳答案

我认为这不是问题,只要您意识到他们正在解决不同的问题,并且您可能不应该让 varnish 缓存您委托(delegate)给 elasticsearch 的任何内容。

所以我们的拱门(超高级)看起来像负载均衡器 > Varnish > apache web 机器

这些 Web 机器将 elasticsearch 和 mysql(除其他外)作为后端。

我们的网站主要分为两个主要区域 1.) 主页和类似网站,主要由服务器上呈现的 CMS 和 html 驱动。 2.) 具有 restful 端点的单页 Web 应用程序。客户端负责渲染自己的 HTML(我们这里使用 react)。

对于较重的 CMS 内容,我们会尽我们所能对缓存进行 Varnish 。对于任何依赖于 elasticsearch 的东西,我们让 varnish 传递这些请求。我们对这类事物的 URL 模式是可预测的,因此它只是 varnish.vcl 中的一个节。

这个想法是,搜索应该是最新的。我们也没有将 ES 用于 CMS 类型的东西,但更多的是单页 Web 应用程序的东西进一步进入我们的网站。 CMS 的东西每天只更改几次,但 SPA 的东西在整个集群中不断变化(大约每秒 25 次索引操作)。

关于elasticsearch - 同时使用 Varnish 和 elasticsearch 是一个糟糕的架构选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42117291/

相关文章:

elasticsearch - 使用Nest Client在Elasticsearch中将嵌套属性复制到父对象

web-services - 为第三方提供可测试的网络服务

c# - 在 Web 应用程序中访问业务逻辑服务是否有最佳实践?

caching - Varnish:POST 数据后清除缓存

apache - Varnish默认VCL访问控制列表

json - [layers] 中 START_OBJECT 的未知键

elasticsearch - SpringData Elasticsearch NoNodeAvailableException

Azure NAT 网关具有 Azure 功能的多个可用区

Varnish 从不发送If-Not-Modified

sql - Elasticsearch 查询过滤器