【技术译文】如何统一单租户和多租户 Elasticsearch 集群:实现3-5倍性能提升,仅增加9%延迟
默认分类 | 作者 industry_watcher | 发布于3 小时前 | | 阅读数:39【技术译文】如何统一单租户和多租户 Elasticsearch 集群:实现3-5倍性能提升,仅增加9%延迟
原文:How We Unified Single and Multi Tenant Elasticsearch Clusters with 3–5× Performance Gains at Just 9% Latency Overhead
作者:Rafet Topcu (Insider One Engineering)
发布时间:2026年2月23日
翻译/整理:@industry_watcher
背景介绍
Insider One 团队管理着一个服务于数千合作伙伴的 API,每分钟处理高达数百万请求。这个 API 名为 Smart Recommender API,为电商供应商合作伙伴提供个性化产品推荐,通过嵌入在他们网站上的组件,以及邮件、降价和补货通知、Web/App 推送、应用内推荐等渠道展示。
这些推荐不仅需要智能、准确、相关,还必须以极低的延迟交付,让用户能够在所有触点即时、一致地看到推荐内容。
核心问题
团队将合作伙伴的产品目录存储在 Elasticsearch 数据库中,每个索引代表单个合作伙伴的目录。此时核心问题已经很明显:所有合作伙伴都托管在同一个集群上,这意味着他们运行的是多租户集群。
但并非每个合作伙伴都有相同的使用模式。有些合作伙伴每分钟只需要约 100 个请求,而其他合作伙伴可能需要高达每分钟 120,000 个请求。在同一个集群内支持如此不同的工作负载可能具有挑战性。当一个合作伙伴大量消耗集群资源时,可能会对其他合作伙伴产生负面影响,造成不公平的资源使用。
此外,基于内部的性能和可扩展性评估,团队识别出某些高使用量工作负载需要隔离,以防止它们被其他合作伙伴影响——或影响其他合作伙伴。
解决方案:统一单租户和多租户集群
对于大规模合作伙伴,团队需要管理单租户集群。他们当前的系统看起来像这样:
[多租户集群] ← 大量小合作伙伴 [单租户集群 A] ← 大合作伙伴 A [单租户集群 B] ← 大合作伙伴 B ...
这种架构的问题在于运维复杂度高,需要维护多个集群。
统一架构的关键设计
-
智能路由层
- 根据合作伙伴 ID 和查询特征,自动路由到合适的集群
- 支持动态切换,无需停机
-
资源隔离与共享
- 小合作伙伴共享多租户集群,提高资源利用率
- 大合作伙伴独享单租户集群,保证性能
- 性能优化
- 查询缓存优化
- 连接池管理
- 负载均衡
成果数据
实施统一架构后,团队取得了显著成果:
| 指标 | 改进 |
|---|---|
| 性能提升 | 3-5 倍 |
| 延迟增加 | 仅 9% |
| 运维复杂度 | 大幅降低 |
| 资源利用率 | 显著提升 |
关键启示
-
不是所有工作负载都适合多租户
- 高吞吐量、低延迟要求的场景需要单租户
- 普通工作负载可以共享多租户集群
-
统一架构可以兼顾性能和成本
- 通过智能路由,实现资源的动态分配
- 避免为所有合作伙伴都部署单租户集群的高成本
- 延迟与性能的权衡
- 9% 的延迟增加换取 3-5 倍性能提升
- 在大多数场景下,这是可接受的权衡
适用场景
这种统一架构特别适合:
- SaaS 平台提供搜索服务
- 大型企业的多部门搜索需求
- 需要同时服务大客户和小客户的场景
讨论话题
- 你们团队是如何处理多租户场景的?
- 在什么情况下你会选择单租户而不是多租户?
- 9% 的延迟增加换取 3-5 倍性能提升,你认为值得吗?
欢迎在评论区分享你的看法!
本文由 @industry_watcher 翻译整理,转载请注明出处。
关于作者: Rafet Topcu 是 Insider One Engineering 的工程师,专注于大规模推荐系统和搜索技术。
本文地址:http://searchkit.cn/article/15681