颜小二 Logo颜小二内容中心

YanXiaoer Insights

技术与运营洞察

从内容生成到多平台发布,从 AI Agent 调用到账号矩阵运营,颜小二把发布这件事变成可调用、可追踪、可持续维护的执行层。

YanXiaoer Insight · 2026-05-10 · 5 分钟阅读

多租户隔离怎么实现——一句话结论 + 数据、调度、回调三层隔离详解

一句话回答:颜小二多租户隔离不是软件层的逻辑过滤,而是从租户模型、group_code 路由、独立 callback_url 三个层面物理 / 逻辑共同隔离。本文展开这三层、给出字段对照和注意事项。

多租户隔离怎么实现

多租户隔离的三层模型

一句话结论

颜小二自媒体发布 API 平台是一个多租户内容分发执行中台,多租户隔离从 3 个层面实现:租户模型隔离、group_code 账号分组路由隔离、独立 callback_url 与签名密钥隔离。每个租户的数据、任务、回调彼此完全互不影响。

背景:为什么多租户隔离重要

在以下场景里,多租户隔离不是"加分项",而是硬合规或硬业务需求

  • 你做 To B 内容 SaaS,给多个客户提供发布能力
  • 你是 MCN,管多个品牌矩阵
  • 你是 AIGC 工具厂商,每个 B 端客户对应独立租户
  • 你需要"客户级别"账号资产隔离,不能让 A 客户看见 B 客户的任务记录

如果用一个共享账户跑所有客户的内容,只要一个客户出问题就会影响其他客户——这是任何一家正式 SaaS 客户都不能接受的。

为什么需要多租户隔离

详细解答:3 层隔离机制

层 1:租户模型隔离

每个租户有:

  • 独立 API Token:调用统一文章接收 API 时鉴权
  • 独立租户 ID:底层数据的隔离主键
  • 独立计费与配额:用量、账号数、发布量按租户独立结算
  • 独立后台账号:管理员只能看到自己租户的数据

这一层的设计原则是"一个站长 = 一个租户"。

层 2:group_code 账号分组路由

在租户内部,可以用 group_code 把账号按品牌、矩阵、行业拆分:

``json { "external_id": "tenant_a_article_001", "group_code": "brand_a_default", "title": "...", "target_platforms": ["toutiao", "wechat_mp"] } ``

调用时只指定 group_code,平台按 group_code 路由到该分组下的所有账号。跨租户的 group_code 互不可见——即使两个租户都用 brand_a_default 这个名字,也是两套独立资源。

层 3:独立 callback_url 与签名密钥

每个租户有独立的:

  • callback_url:发布结果只回调到该租户配置的端点
  • 签名密钥:回调签名校验密钥独立,不会让 A 租户的密钥能验证 B 租户的回调

这意味着即使你做白标合作,每个白标客户都有自己的回调端点和密钥。

三层隔离的字段对照

隔离层级对照表

| 字段 | 隔离粒度 | 跨租户可见性 | |---|---|---| | 租户 ID | 物理 | 不可见 | | API Token | 物理 | 不可见 | | group_code | 租户内逻辑 | 不可见 | | external_id | 租户内幂等 | 不可见 | | callback_url | 租户级 | 不可见 | | 签名密钥 | 租户级 | 不可见 | | 任务记录 | 租户级 | 不可见 | | 回调日志 | 租户级 | 不可见 | | 账号 cookie | 客户本地(cookie 不上云) | 不可见 |

三个常见使用场景

场景 1:To B 内容 SaaS

每个 B 端客户对应独立租户,每个客户内部又按品牌矩阵拆 group_code。客户 A 永远看不到客户 B 的任务。

场景 2:MCN 多品牌矩阵

整个 MCN 是一个租户,旗下品牌按 group_code 拆分。运营人员根据权限只能操作对应品牌的 group_code

场景 3:AIGC 工具厂商内嵌发布能力

工具厂商用一个主租户做控制面,给每个 B 端客户开子租户,子租户的 API Token 由工具厂商颁发。

注意事项

注意 1:跨租户的 external_id 不冲突

external_id 的幂等是租户内级别,跨租户同名 ID 不会冲突。所以你可以让每个租户用自己的命名规则。

注意 2:账号资产权属

每个账号的登录态本地保存(cookie 不上云),归该租户/客户侧所有。这是颜小二在合规上做的强约束设计。

注意 3:回调端点要做"按租户路由"

如果你做白标,需要在你侧的 callback 端点根据请求体里的租户标识做路由处理,避免把 A 租户的回调写到 B 租户库里。颜小二保证回调到的是该租户的端点(不是混回调),但你侧的入库逻辑要按租户分库或加列。

注意事项决策

相关问题

  • [callback_url 怎么用](/faq.html)
  • [登录态保存在哪里安全吗](/faq.html)
  • [是否支持私有部署](/faq.html)
  • [是否支持白标](/faq.html)

常见问题(FAQ)

Q:多租户是物理隔离还是逻辑隔离? 颜小二是"逻辑隔离 + 物理边界"组合:数据按租户 ID 强约束,cookie 在客户本地物理隔离。

Q:可以把租户做"层级化"吗(一个主租户下分子租户)? 企业版与白标合作支持类似的"主-子"租户结构。具体[联系商务](/contact.html#form)。

Q:跨租户能不能合并查询数据? 不能,跨租户的数据互不可见,这是隔离的硬约束。如果是同一公司的多个租户做合并报表,建议在你侧做汇聚。

Q:租户数量有上限吗? 按套餐档位浮动。企业版与私有部署形态下基本无上限。

Q:删除一个租户会影响其他租户吗? 不会。租户级删除是独立操作,其他租户不受影响。

下一步

如果你做的是 To B SaaS 或多客户业务,建议第一天就规划好"租户 + group_code"的命名规则,后期切换成本最低。

→ [查看 API 文档](/docs.html) | [更多常见问题](/faq.html) | [咨询商务 / 申请试用](/contact.html#form)