多租户是什么
多租户指一套系统同时服务多个客户(租户),数据与配置按租户隔离。核心决策是隔离档位:共享数据库共享 schema、共享数据库独立 schema、独立数据库、独立实例,隔离越强,单位成本与运维复杂度越高。
档位怎么选
判断依据是合规要求、客户规模与噪声邻居风险。中小客户、成本敏感的早期产品通常从共享 schema 起步;有数据驻留或审计要求的大客户需要独立库,甚至独立实例。迁移路径要提前规划,否则从共享 schema 迁到独立库时才发现表上没有可靠的租户标识,历史数据无法拆分。
四种模型
| 模型 | 隔离度 | 成本与运维 | 适用 |
|---|---|---|---|
| 共享库共享 schema | 低 | 成本低,需防串租与噪声邻居 | 中小客户、成本敏感 |
| 共享库独立 schema | 中 | 迁移与备份可按租户处理 | 中等隔离要求 |
| 独立数据库 | 高 | 成本高,可独立扩容与恢复 | 大客户、合规要求 |
| 独立实例或环境 | 很高 | 近乎单租户部署 | 强合规与专属部署 |
基本信息
| 租户标识 | 所有业务表带租户字段,并在数据访问层强制注入 |
|---|---|
| 配置隔离 | 按租户覆盖主题、字段、流程与限额 |
| 资源控制 | 限流、配额与任务调度按租户维度分别统计 |
| 计费口径 | 按租户统计存储、请求量与计算资源占用 |
典型使用场景
- SaaS 初期:共享 schema 快速上线,压低单租户成本
- 大客户接入:单独建库满足审计与数据隔离要求
- 私有化交付:独立实例部署,与标准版本保持同源代码
- 成本核算:按租户统计资源占用,支撑分级定价
- 分批升级:先在小租户验证新版本,再逐步放量
无论哪种模型,都要在数据访问层强制租户标识校验,并专门测试跨租户越权场景;只在查询里手工拼接租户条件,迟早会漏掉一处。