主题
多租户架构(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 请求和租户命令均受可用状态约束。
- 中央权限:租户新增、读取、更新、删除、续期、变更套餐、停用、恢复,以及调度同步、执行和日志清理均有独立权限标识。
- 资源隔离:租户数据库、缓存、日志、文件系统和队列上下文相互隔离。
- 运维监控:提供租户日志、队列任务和调度任务监控页面。
- 数据库配置:支持使用默认租户数据库配置,也支持为租户指定独立数据库连接参数。