Azure 搜索多租户策略、成本和建议

Azure Search Multi-Tenant Strategy, Costs and Recomendations

我正在为多租户设计一个利用 Azure 搜索的架构。由于每个租户的架构略有不同,我的解决方案将需要每个租户 1 个索引。这很容易设置,我真的很喜欢微软组合在一起的东西。然而,现在我开始考虑新租户的入职、每月费用和扩大服务规模,我开始碰壁,想知道我的 "best" 选项是什么。

有没有人遇到过可以阐明最佳做法的这种情况?以下是我现在看到的选项:

选项 1: 以每 5 个租户 38 美元/米的成本(每个租户每月 7.60 美元)为每 5 个租户启动一个新的 BASIC 计划。

优点: 入门便宜。 缺点: 租户因性能和存储能力有限而瘫痪,一旦超过 5,我将不得不管理 X 数量的服务和 ClientQueryKey indexes/tenants.

选项 2: 为每 50 个租户启动一个新的标准 S1 计划,费用为每 50 个租户 250 美元/米(每个租户每月 5 美元)。

优点: 随着租户数量的增加,性能更好,管理的服务更少 缺点: 启动成本高得多,一旦系统拥有超过 50 个租户,仍然需要管理租户与服务的关系,我会一旦我超过 50 indexes/tenants.

就可以管理 X 数量的服务和 ClientQueryKeys

选项 3: 启动一个可用于所有租户的标准 S2 计划(假设索引计数没有上限)

优点: 更好的性能,随着租户数量的增加,无需管理多个 services/client 键 缺点: 启动成本高得多,有关成本和限制的文档很少。

在所有情况下(我假设除了选项 3 之外?)我将不得不跨多个服务管理客户端密钥。因此,很明显,只有一项服务具有无限索引计数是理想的。然而,我是一家初创公司(是的,我已经在使用 BizSpark),当我可能只有 1-5 个租户开始时,搜索成本非常高。

我了解到无法在计划之间轻松迁移数据(无需手动操作或编写脚本),因此我的第一选择很可能是最后的选择。我还希望只需要为我的所有租户使用一个计划来管理一项服务。因此我倾向于选项 3。

如果选项 3 是最佳选项:

  1. 我可以从 BASIC 开始并根据需要扩展到 S1 然后 S2,还是这不可能?
  2. 如果 BASIC 无法扩展到 S1,是否至少可以在超过 50 个租户后从 STANDARD S1 扩展到 S2,或者我是否需要手动管理或从 S2 开始?
  3. 标准 S2 上每 index/tenant 的启动成本 and/or 是多少?
  4. 我在 S2 上的索引限制是无限的吗?
  5. 如果不是,指数上限是多少?
  6. 还有其他我应该考虑的选项或注意事项吗?

S2 服务在多租户场景中工作得更好。它们不仅可以容纳更多索引(最多 200 个),而且还具有更大的总容量,因此假设索引大小和负载呈指数分布,您可以为您的客户获得更好的典型体验。

你是对的,进入成本更高。

关于 S2 的缺点,我们很快将发布适当的文档和其他支持材料。同时,请随时直接与我联系(Pablo DOT Castro 在常用的 Microsoft 域)以了解更多详细信息。

如果您认为将来会有很多索引(很多 100 个),我们也正在研究更好的多租户支持选项。我们还没有准备好公布细节,但如果您与我们联系,我很乐意讨论。

回答您的具体问题:

1.Can I start on BASIC and scale up to S1 then S2 as needed, or is this not possible?

我们目前不支持此功能。您必须创建新的搜索服务并迁移索引。

2.If BASIC cannot scale to S1 is it at least possible to scale from STANDARD S1 to S2 once I go past 50 tenants or will I need to manually manage this or start at S2?

不,不是。我们想做,只是还没做。

3.What are my startup costs and/or costs per index/tenant on Standard S2?

请与我们联系,我们可以讨论定价。

4.Is my index limit infinite on S2? 5.If not, what is the index cap?

否,S2 服务限制为 200 indexes/service。

6.Are there any other options or caveats that I should consider?

你分析得很好,我认为你的方向是正确的。您可能要考虑的一件事是公平性。同一服务中的所有索引共享您为该服务预置的容量。如果存在不公平负载的风险,您可能需要考虑按租户限制。