百万用户,一人一 Topic:百炼资产中心用 RocketMQ LiteTopic 实现隔离与限流

简介: 当业务的并发单元是“用户”时,消息系统的治理单元也应该是“用户”。RocketMQ LiteTopic 把“百万用户 × 各自一条消息流”的业务模型直接变成消息系统的原生原语,整个过程中业务侧没有自建任何路由层与限流层。

作者:张世杰(靖泉)


海量用户,每人一条消息流,随时可能爆发的单用户流量风暴——这是百炼资产中心面对的消息链路。用户在百炼生成的图片、视频默认临时保存,要沉淀为长期资产,每条消息都要可靠处理。百炼资产中心的答案是 RocketMQ LiteTopic(轻量主题):一个用户一个 Topic。在传统 MQ 的经验里这近乎禁忌,而 LiteTopic 让它成为默认做法。

从临时链接到长期资产:资产中心要解决什么

用户在百炼平台调用模型生成图片、视频后,产物存放在 OSS 临时目录,过期即清理,只提供临时下载链接。但用户有两类长期诉求:

  • 持久保存: 生成结果需长期留存为个人数字资产;
  • 素材复用: 已生成的内容和上传的图片,可作为后续再创作的输入素材反复调用,免去重复上传。


资产中心服务因此而生:统一管理用户生成及上传的图片、视频、音频资产,对每一份产物完成安全检测等处理后持久化落库。这条处理链路要求消息可靠消费。

一条天然按用户组织的消息链路

资产中心选择了消息驱动的架构,整条链路分为生产与消费两段:

  • 生产侧: 模型生成图片/视频后写入 OSS 临时目录,随后发送消息——消息体携带资源元数据和 OSS 位置索引,不传文件本身;
  • 消费侧: 资产中心消费消息并依次处理:白名单校验、内容安全检测(违规内容机器审核),最终把资产持久化落库。

这条链路的特征决定了它对消息系统的要求:消息量大、需要可靠消费——而更关键的是,这条消息流天然是按用户组织的。

传统 Topic 接不住“按用户组织”的消息流

每个用户的资产相互独立:要单独做安全审核、单独控节奏,重度用户批量生成大量内容时,也不能拖累其他用户的入库进度。这推出三项治理诉求:

  • 用户级隔离: 单用户堆积、异常不阻塞他人;
  • 用户级限流: 限流阈值按用户单独设置,而非全局一刀切;
  • 用户级挂起: 触发限流时只暂停该用户的消费,而不是全体。


而传统 Topic 的隔离单元是队列而非用户:

  • 所有用户共享同一组队列,单用户风暴下消费线程被他的消息占满,其余用户的资产入库全部排队等待;
  • 只能全局限流,无法区分用户;
  • 消费挂起的粒度是整个消费组——要停一个用户,就得停所有人。

想补齐,就得在 Topic 之上自建用户路由层和用户级限流,等于在 MQ 之上再造一套 MQ。


问题的本质是:业务的并发单元是“用户”,而传统 Topic 的隔离单元是“队列”,两者错位,所有治理都得靠业务代码补齐。

LiteTopic:把“用户”变成消息系统的原生隔离单元

LiteTopic(轻量主题)是 RocketMQ 5.x 引入的轻量级队列形态:单 Broker 支撑百万级队列,运行时按需创建、按 TTL 自动回收,同一消费组下不同实例可订阅不同的队列子集。

它把 “百万用户 × 各自一条消息流” 的业务模型直接变成消息系统的原生原语,上述三项诉求恰好逐一对应:

落到用法上:

  • 发送侧按用户写入对应 LiteTopic,不存在时由 Broker 自动创建,无需预建和维护清单;
  • 消费侧一次通配符订阅覆盖全部用户,新用户接入零改动;
  • 限流侧在消费回调中返回挂起指令,Broker 在指定时长内只停止该 LiteTopic 的投递。


整个过程中,业务侧没有自建任何路由层与限流层。

落地效果

对资产中心而言,价值落在三点:

  • 架构简化: 用户隔离、限流、挂起由消息系统原生提供,业务方零开发成本获得多租户治理能力;
  • 稳定性: 用户间故障域隔离,单个重度用户的流量风暴通过“限流 + 定向挂起”自动降压,不影响整体 SLA;
  • 增长零改造: 用户与资产规模增长,无需预建队列、无需调整订阅,链路随业务自然扩展。

同一个原语,两种用法

此前百炼网关用 LiteTopic 重构了大模型限流(见《限流比降 10 倍:百炼网关如何用 RocketMQ LiteTopic 重构大模型限流》一文),那是把它当作分布式漏桶;资产中心这次则用它做用户级消息治理——同一个原语,两种用法,验证的都是同一件事:当业务的并发单元是“用户”时,消息系统的治理单元也应该是“用户”。


如果你的业务同样是“海量用户 × 轻量消息”的形态,不妨把用户路由和限流层从业务代码里拿掉,交给 RocketMQ LiteTopic。


🔗 加入 RocketMQ for AI 钉钉交流群,交流 LiteTopic 实践经验、获取最新动态:

image.png

钉钉群号:110085036316

📖 点击此处了解 RocketMQ for AI 完整方案。

相关文章
|
2月前
|
消息中间件 算法 Java
百炼网关实践:用 RocketMQ LiteTopic 让限流比降了 10 倍
LiteTopic 提供的 “轻量队列 + 差异化订阅 + Suspend 控速” 三件套,让百炼网关的限流比降低了 10 倍。
354 15
|
26天前
|
消息中间件 人工智能 Apache
Apache RocketMQ 面向 AI 演进:LiteTopic 支撑百万级多 Agent 会话协作
本文整理自 Apache 2026 技术分享《面向 AI 的 Apache RocketMQ:多 Agent 系统的可靠协作机制》。
174 11
|
9天前
|
存储 数据采集 人工智能
一本 Agent 白皮书,值得连续写两年么?
Alibaba Cloud AI Agent Handbook 即将开源。
|
15天前
|
消息中间件 人工智能 自然语言处理
从钉群提问到任务交付:团队级 Agent 基础设施全链路实践
依托钉群无人值守、跨群会话记忆、组织知识检索及前端专业 Skill,云原生消息前端团队自研的内部研发协作平台 Domino 正经历关键演进——从单一的代码执行工具,升级为能够理解团队上下文、持续沉淀演进并闭环真实交付的研发 Agent 系统。
|
26天前
|
算法 自动驾驶 安全
AgentLoop 数据飞轮实践(一):总览 —— 让 Agent 持续调优的闭环
Agent 上线的那一刻,真正的考试才开始:上线只是起点,持续调优才是关键。本文用一小时实操带你看 AgentLoop 如何把接入、评估、实验、经验库串成数据飞轮,以专家驱动与全自动经验挖掘,让 Agent 越转越聪明。
355 14
|
22天前
|
数据采集 人工智能 监控
数据飞轮的起点:四种方式把 Agent 连进 AgentLoop丨AgentLoop 数据飞轮实践(二)
本文介绍AgentLoop基于OTel协议与探针的数据接入体系,涵盖通用Agent一键接入、框架SDK集成、高代码注解埋点和eBPF无侵入四种方案,并以客服Agent为例,演示旁路采集、配置生效及观测页验证的完整链路。
|
22天前
|
算法 数据挖掘 Shell
经验自进化:自动挖掘经验资产,消融实验验证真实收益丨AgentLoop 数据飞轮实践(五)
本文介绍AgentLoop经验自进化实践:从运行轨迹自动挖掘成功与失败模式,经Skill召回并注入上下文。文章详解接入验证流程,并通过消融实验优化召回策略,降低耗时、成本、Token消耗和工具调用,让Agent持续迭代。
213 10
|
22天前
|
人工智能 C++ 微服务
评估:从黄金指标到 Rubric丨AgentLoop 数据飞轮实践(三)
Agent 跑得怎么样?人工抽检又贵又慢,还沉淀不成标准。这篇带你从零搭起可量化、可解释的评估体系:让 AI 把黄金指标拆成 Rubric,装进评估器、跑到评估任务——把"好不好"变成分数,把"为什么不好"变成证据。
|
26天前
|
人工智能 监控 安全
零代码改造:让 AI Agent Sandbox 不再是黑盒
OBI 基于 eBPF 在内核与库函数层零代码拦截通信,自动生成调用链与指标,内置 OpenAI、Anthropic、Gemini、Qwen 及自定义 LLM 网关的 GenAI 语义追踪,覆盖 LLM、工具、MCP 与 RAG 全链路,从性能、成本、安全三个维度透视沙箱执行。
|
1月前
|
人工智能 缓存 安全
模型这么多,请求该交给谁?阿里云 AI 网关智能路由,正式上线!
模型越来越多,每次请求该交给谁?AI 网关智能路由已上线:能力够是前提,更省、更快还是更适合由你选,Agent 干活中途不换脑。