Skip to content

多租户架构(Multi-Tenancy)

当前运行环境

本版本租户 HTTP 生命周期适配 PHP-FPM。租户上下文会保持到响应发送、流式回调和请求终止阶段完成。

体验

可以在这里注册租户体验,注册完成后系统会自动创建租户。

体验环境每日自动删除租户数据。

如何购买

支持单独购买该扩展。专业版用户可以直接使用该扩展。

使用许可

禁止将该扩展用于外包私有化部署。如需为客户提供私有化部署,请联系专业版开发团队单独报价。

架构说明

CatchAdmin 多租户扩展采用“一套应用、一个中央数据库、每租户一个独立数据库”的多库架构:

  • 应用层共享:所有租户运行同一套代码,统一发布和升级。
  • 中央数据库:保存租户、域名、套餐、操作记录和监控数据。
  • 租户数据库:保存对应租户的业务数据,租户之间相互隔离。
  • 运行时隔离:租户初始化后切换数据库,并隔离缓存、日志、文件系统和队列上下文。

这种架构提供较强的数据隔离能力,适合需要独立备份、迁移、容量管理或合规控制的 SaaS 系统。多库架构也会增加数据库资源、迁移执行和日常运维成本。

租户识别模式

同一套部署全局选择一种识别模式:

模式识别方式适用场景基础设施要求
domain根据请求 Host 匹配租户域名每个租户使用独立域名为租户准备 Domain、DNS、TLS 和反向代理
shared_domain登录入口指定租户,API 使用 X-Tenant 传递租户 UUID所有租户共用一个后台域名前端保存当前标签页的租户上下文,并为租户 API 附加请求头

后端识别模式由 TENANCY_IDENTIFICATION_MODE 配置,管理端租户页面由 VITE_TENANCY_IDENTIFICATION_MODE 配置,两个值保持一致。单域名模式的登录入口为 /#/login?tenant=<uuid>,登录后的租户 API 同时携带 X-Tenant: <uuid> 和租户 Token。完整协议见配置说明

当前能力

  • 租户生命周期:创建、编辑、续期、变更套餐、停用、恢复、删除和操作记录。
  • 套餐管理:配置套餐价格、授权菜单和启停状态;创建租户和变更套餐只接受启用套餐。
  • 访问控制:停用或已到期租户不进入可用租户集合,HTTP 请求和租户命令均受可用状态约束。
  • 中央权限:租户新增、读取、更新、删除、续期、变更套餐、停用、恢复,以及调度同步、执行和日志清理均有独立权限标识。
  • 资源隔离:租户数据库、缓存、日志、文件系统和队列上下文相互隔离。
  • 运维监控:提供租户日志、队列任务和调度任务监控页面。
  • 数据库配置:支持使用默认租户数据库配置,也支持为租户指定独立数据库连接参数。

接下来可从安装基础能力配置开始使用租户扩展。