标准答案

  1. 身份层从登录态和成员关系中确定可信租户上下文,不能只相信客户端请求传来的 tenantId。
  2. 数据层根据安全与规模选择行级、Schema、数据库或集群隔离,并让所有查询、缓存 Key、搜索和对象存储路径带有受控租户边界。
  3. 配置和功能开关可按租户覆盖,但需要默认值、权限、版本和回滚,避免一个租户配置影响全局。
  4. 计费和资源层记录用量、配额、限流和超额策略,确保重度租户不会挤占其他租户或绕过计费。

题目解析

多租户问题的本质是“任何入口都不能越过边界”。API、后台任务、消息消费、导出、缓存、日志和运维工具都需要同样的租户检查。

隔离级别可以随着业务成长升级,但迁移成本很高。早期至少要让数据所有权和访问路径可识别,避免以后无法拆分。

常见误区

  • 只在 HTTP 层过滤 tenantId,后台任务和消息消费者没有租户上下文。
  • 缓存 Key 不包含租户,导致数据串租户。
  • 将租户配额当作 UI 提示,而不是服务端强制规则。

作者信息