问题 弹性搜索中的多租户


我们计划为我们的多租户应用程序引入弹性搜索(AWS)。我们有以下选项,

  1. 每个租户使用一个索引
  2. 每个租户使用一种类型
  3. 所有租户与自定义路由共享一个索引

按照这个博客 https://www.elastic.co/blog/found-multi-tenancy 第一个选项会给内存问题。但不清楚其他选择。

看来,如果我们使用第三个选项,那么就没有数据隔离。不确定安全性。

我认为第二种选择是更好的选择,因为数据会被隔离。

帮助我确定使用多租户进行弹性搜索的最佳选项。

请注意,我们将利用AWS基础架构。


2191
2018-01-26 06:40


起源

在您的背景下,什么是租户? - Val
每个客户都被视为租户。 - Selvakumar Ponnusamy
然后答案取决于我们正在谈论的租户/客户数量(1-10,10-100,100-1000,?)和您期望的增长因素,即客户数量稳定或您预计ax%在接下来的N个月内增加?在决定采取哪种策略时,你需要考虑明天,而不是今天。 - Val
您没有提到第四个选项:所有租户共享一个 基于时间的 带自定义路由的索引。当您的客户数量会随着时间的推移而增加时,这是最灵活的选择 - Val
你提到的第三个选项和第四个选项之间有什么区别吗?假设10-1000个客户端 - Selvakumar Ponnusamy


答案:


我们现在正在考虑同样的问题,Elasticsearch的以下一组文章非常有用。

从这里开始: https://www.elastic.co/guide/en/elasticsearch/guide/current/scale.html

阅读每篇后续文章,直至找到这篇文章: https://www.elastic.co/guide/en/elasticsearch/guide/current/finite-scale.html

以下两个对我来说非常令人大开眼界:

https://www.elastic.co/guide/en/elasticsearch/guide/current/faking-it.html https://www.elastic.co/guide/en/elasticsearch/guide/current/one-big-user.html

基本要点:

  • 每个客户的别名
  • 碎片路由
  • 现在,您可以为大客户提供索引,为小客户提供共享索引,并且它们看起来都是单独的索引

12
2018-03-06 20:43





这是一个非常重要的链接,不在这里提及: http://www.bigeng.io/elasticsearch-scaling-multitenant/

良好的架构困境,以及出色的性能分析/推理。

tldr;它们具有围绕分片分配过滤构建的索引组,以隔离群集中的节点之间的负载


2
2017-10-25 02:13