Zilliz 前天 19:51
Milvus多租户实践:你的技术选型扛得住一夜爆火吗?
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了 Milvus 向量数据库在支持大规模多租户SaaS应用方面的技术优化。通过针对十万级collection场景的性能瓶颈进行深度优化,包括操作延迟、索引任务调度、系统重启恢复和内存管理等方面。Milvus 2.5.8版本成功将单集群支持的collection数量扩展至十万级,为Airtable等SaaS平台提供了强大的技术支持,使其能够更好地应对数据量快速增长的挑战,提升用户体验。

🚀 **操作延迟优化:** 通过重构元数据存储结构,构建二级索引体系,将元数据查询延迟从秒级降至微秒级;引入更细粒度的锁机制,提升并发效率;优化通信流程,降低网络开销与延迟,使得在十万级collection下,CreateCollection操作延迟从5.62s降低至501ms,Insert操作从7.2s降低至52.6ms。

⚙️ **索引任务调度优化:** 引入索引任务动态评估模型,基于数据规模等特征参数分配资源;采用双缓冲队列结构,实现任务执行与轮询解耦,使单集群十万级collection的索引任务调度延迟稳定在毫秒级,任务吞吐量提升30倍,达到300k/小时。

⚡ **系统重启恢复加速:** 采用并行化加载逻辑,将kv数据按collection、partition等级别拆分,并发加载元数据,将300万kv元数据加载耗时从30分钟降至1分钟,性能提升30倍;引入订阅协调器“Dispatcher”,实现“批式”订阅和智能分发,订阅耗时缩短至1分钟,提速千倍。

💾 **内存优化:** 通过将Delete记录直接持久化到底层对象存储,不再使用BloomFilter,显著降低DataNode内存占用,简化数据路径,提高系统稳定性,最终由Compaction机制保证最终一致性,实现“以简制繁”的优化策略。

原创 戴一豪 粲宇 陈将 2025-05-07 18:52 上海

选型一时爽,扩容火葬场。

前言

选型一时爽,扩容火葬场。

“前期技术架构搭建的时候图简单,就选了一些门槛足够低的入门级数据库,结果等到产品落地、数据量飞涨的时候,用户几天之内从五千涨到十万,服务器崩完,数据库崩,扩容了一礼拜,还是一夜报错8个bug。”

顶级的创意+一流的运维+二流的技术选型=一塌糊涂的产品体验。

这是不是各位AI 时代SaaS企业的真实写照?事实上,AI时代的SaaS,在技术架构上有三条金科玉律:

如果还没有做好AI接入,就不要做产品!

如果产品没有能支撑一夜爆火的弹性,就不要创业!

如果架构设计没有极致的可扩展,就不是真弹性!

以 Airtable 为例,这是一家专注于低代码表格协作的 SaaS 企业,通过可视化的“表 — 关系”模型帮助其用户快速构建业务应用。

由于不同用户的业务模式不同,因此每个用户都需要在底层向量检索引擎中拥有独立的 collection,用于隔离业务数据,自定义数据模型,以及适配不同的 embedding 模型。大多用户的数据体量并不大,而且业务的繁忙时段不同,因此,多租户共用一个集群,一个 collection 一个租户的方案无疑非常适合这个场景。

然而,这个模式随着业务的扩展和客户量的快速增长遇到了问题,尤其是当租户数量攀升至万级以上时,单集群内支持大规模 collection 管理就成了系统性能与运维的最大瓶颈:传统的元数据、RPC 调度和资源分配机制在如此规模下难以承受,查询与加载延迟也会显著提高。

针对这一 SaaS 场景痛点,Milvus 从 v2.5.3 起陆续引入了包括容量上限提升、调度策略优化、内存管理改进等多项核心优化;到 v2.5.8 版本,我们将单集群支持的 collection 数量从数千扩展至十万级,帮助 Airtable 等 SaaS 平台在有限集群资源下按需动态创建和管理租户数据。

接下来,我们将系统性地剖析这些技术优化路径,深入揭示 Milvus 如何突破十万级场景的核心原理与工程实践。

01 

多 collection 场景落地的规模挑战

初期的 Milvus 并没有为多 collection 场景专门进行优化。压力测试显示,在数百 collection 规模下系统表现优异,然而当 collection 规模上升时,系统开始出现以下表现:

基于上述瓶颈分析,我们定义了大规模 collection 场景优化的具体要求:

02 

支持十万 collection 的技术攻坚之路

操作延迟优化

在管理十万级 collection 的场景下,高频操作延迟成为核心挑战。针对不同操作类型,我们通过架构升级与工程实践相结合,系统性优化了关键路径,大幅降低了延迟。主要改进方向包括:

在上述优化实施完成后,我们在预设的验证环境中进行了压力测试,重点验证系统在十万级 collection 下的操作延迟稳定性。

索引任务调度优化

在 Milvus 中,索引任务会由协调节点进行调度,由工作节点(DataNode)负责执行。在之前的版本中,协调节点为索引任务分配工作节点时采用“一任务一节点”的策略,导致两类典型问题:

新版本中,我们引入了索引任务动态评估模型,基于数据规模等特征参数,设计了资源量化评估模型,以 2c8g 为 DataNode 的基准计算单元,通过实时分析任务的权重系数为任务分配资源。该模型会持续监测任务执行状态,当检测到大量索引构建任务时,会开启并发调度,同时执行多个任务,以达到资源最大化利用的目的。

调度侧,引入了双缓冲队列结构,将任务执行与轮询解耦,执行线程处理当前排队队列时,调度器可在执行队列中编排后续任务,消除资源空窗期。对于只需要线程安全的链路,元数据管理采用无锁结构替代传统锁机制,规避了线程竞争导致的系统颠簸。两项优化共同降低资源争抢,使单集群十万级 collection 的索引任务调度延迟稳定在毫秒级。

在标准测试环境中,我们部署了 4 个 DataNode(4c16g)用于索引构建,对千行 segment 的小型索引任务进行压测。优化后系统展现出优异的性能:通过动态资源调度算法与双缓冲队列的协同作用,任务吞吐量从优化前的 10k/小时跃升至 300k/小时,实现 30 倍提升。

Rocovery 速度提升

在应对超大规模 collection 集群重启恢复挑战时,我们针对元数据恢复与消息流订阅两大核心链路进行优化,极大地优化了海量 collection 场景下的启动慢的问题。

实测表明,两项核心优化使得大规模 collection 集群启动时间从小时级缩减至分钟级,这一突破提高了系统容灾恢复能力,确保高敏感场景的业务连续性,同时为突发流量下的秒级集群扩容提供底层支撑,大幅降低业务中断风险与运维成本。

内存优化

在高并发、多租户场景中,用户行为存在显著的不确定性,其中最常见的是误操作。例如,一些用户经常将 Upsert 替代 Insert 使用,这类操作往往会导致系统收到大量不存在主键的 Delete 请求。在 Milvus 中,处理 Delete 操作时通常会先借助 BloomFilter 判断主键是否存在,从而避免浪费资源在为不存在的数据进行 Delete 操作。

但问题也随之而来:在百万级 segment 场景下,BloomFilter 带来的内存消耗是巨大的。我们简单计算一下,假设每个 BloomFilter 的元素个数为十万,假阳性率为 0.001,其内存占用约为 175KB。当系统中 segment 数量达到一百万时,光是 BloomFilter 的总内存就高达 175GB(175 KB × 1million),这对于集群来说是极大的负担。

为此,在 Milvus 2.5.8 中我们做出调整:DataNode 不再将 BloomFilter 加载至内存,所有 Delete 记录直接持久化到底层对象存储。这意味着即便 Delete 的主键在当前数据中不存在,也不再进行过滤,而是交由后续阶段统一处理。这一策略的优势在于:

一个简化的 Delete 处理流程如下:

    用户发起 Delete 请求,主键可能存在,也可能尚未写入;

    DataNode 直接将 Delete 记录写入 binlog,不再判断主键是否存在;

    若 Compaction 时发现主键存在,则主键被成功删除;

    若 Compaction 时发现主键不存在,则丢弃 Delete 记录。

这项调整不仅大幅降低了 Datanode 的内存占用,还简化了数据路径,提高了系统在复杂场景下的稳定性,是十万级 collection 优化路径中一项典型的“以简制繁”的实践。

结尾

回到 Airtable 的使用场景,在采用 Milvus v2.5.8 后,其团队无需再为持续增长的租户部署更多 Milvus 集群。通过维护一个 Milvus 集群,为每个租户创建单独的 collection 即可实现租户级隔离。

对用户而言,每个“智能表格”背后都对应一个独立的向量 collection,支持自定义的搜索、分类与推荐模型,在不增加运维成本的前提下,用户的使用体验依然得到了保证。

Milvus v2.5.8 通过支持单集群管理十万级 collection,可以帮助企业在单一集群上高效运行大规模多租户向量检索服务。无论是构建百万级智能文档、客服机器人,还是企业级 AI 数据协作平台,一个能够承载海量 collection 的高扩展性向量数据库,都是支持多租户应用的基础设施核心。

未来,随着 AI Saas 应用的落地和持续演进,Milvus 作为超大规模向量数据库的弹性扩展能力,将成为驱动 AI 基础设施升级的核心引擎。如果您也感兴趣如何使用单一 Milvus 集群支持数万不同 schema 的租户,请点击查看原文联系我们。

作者介绍

戴一豪

Milvus资深研发工程师

推荐阅读
Milvus 向量数据库进阶系列丨构建 RAG 多租户/多用户系统 (上)
Milvus 向量数据库进阶系列丨构建 RAG 多租户/多用户系统 (下)
讨论|谁能统一Agent 接口?MCP 对比 A2A 、Function Calling
先码后学|从Manus到DeepSearcher,2025年最值得关注的十大AI Agent
官宣,DeepSearcher开源:告别传统RAG,私有数据+Deepseek,打造本地版Deep Research
点击“阅读原文”即可体验zillz cloud

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Milvus 向量数据库 SaaS 性能优化 多租户
相关文章