我有一个用户使用的 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/