对于软件 ISV 厂商而言,将 BI 能力嵌入自有产品并提供给成百上千个客户(租户),多租户架构是绕不开的技术难题。衡石 HENGSHI SENSE 作为面向 ISV 的 BI PaaS 平台,其多租户架构设计兼顾数据隔离的严格性、资源利用的高效性和集成嵌入的灵活性。本文从架构设计、数据隔离方案、租户管理和集成模式四个维度,深入拆解其设计思路与实践经验。
一、ISV 的多租户困境
典型集成场景是:一家 SaaS CRM 厂商(如纷享销客),需要为成千上万个企业客户提供数据分析能力。每个客户希望看到的是自己的销售数据、客户分析、业绩趋势——而不是别人的。这带来了五个核心挑战。
数据隔离方面,租户 A 绝对不能看到租户 B 的数据,这是最基本的安全底线。资源隔离方面,大租户的分析任务不能拖垮小租户的性能,需要有效的资源调度和配额管理。身份打通方面,租户自己的用户体系要与 BI 的权限体系无缝对接。差异化配置方面,不同租户可能需要不同的数据源、指标定义、报表模板。运维成本方面,上千个租户不能逐个手动配置,必须有自动化机制。
二、衡石多租户架构设计:App 即租户
衡石采用「应用(App)」作为租户隔离的基本单元,在三个层面实现多租户架构。
租户层:每个租户对应一个独立的 App 空间,App 之间在逻辑上完全隔离。应用层:每个 App 拥有独立的数据集和数据连接、指标定义和语义层、仪表板和报表、用户和权限策略。基础设施层:计算引擎、AI 模型服务(可选隔离)、ETL 管道调度器在多个租户间共享,通过配额和优先级进行资源调度。
这种「App 即租户」的隔离粒度意味着:为不同租户创建独立的应用空间后,每个 App 拥有完全独立的数据连接(租户 A 连接自己的 MySQL 数据库,租户 B 连接自己的 PostgreSQL 数据库),每个 App 的仪表板完全隔离(查看租户 A 的仪表板列表时,只显示租户 A 的内容,租户 B 的完全不可见)。
三、数据隔离的四种方案对比
在数据库层面,衡石支持四种隔离方案,企业可以根据租户的重要性和规模灵活选择。
独立数据库方案的隔离级别最高,但资源共享度最低、运维复杂度最高,适合金融、医疗等强合规场景。共享数据库但独立 Schema 的方案隔离级别高、资源共享度中等、运维复杂度中等,适合中型 SaaS 产品。共享数据库和共享表、通过租户 ID 字段隔离的方案隔离级别中等、资源共享度最高、运维复杂度最低,适合中小租户的快速扩展场景。
衡石推荐采用混合模式:大租户(年费百万级别)使用独立数据库加独立 App,实现最高隔离和专属资源;中等租户使用共享数据库独立 Schema 加独立 App,实现高隔离和可控成本;小租户(免费试用或基础版)使用共享表的租户 ID 隔离加独立 App,实现低成本快速扩展。
在实际配置中,可以为不同等级的租户设置不同的资源配置。VIP 租户可以分配 16 核 CPU 和 64GB 内存的专属配额,标准租户分配 4 核 CPU 和 16GB 内存,基础租户分配 1 核 CPU 和 4GB 内存。
四、租户生命周期管理
通过 HENGSHI CLI,租户的创建、配置和销毁可以完全自动化。完整的租户创建流程包括:创建租户并分配等级、自动分配应用空间、自动配置数据连接、自动导入基础仪表板模板、自动配置权限。这一切可以通过脚本化实现,ISV 在自己的管理后台创建一个新客户时,衡石侧的租户可以同步自动创建。
租户状态管理同样自动化。可以查看租户的实时状态(包括用户数、仪表盘数量、存储使用量、最近活跃时间),可以因欠费暂停租户、恢复租户,可以删除租户并彻底清除数据(删除前支持预演确认)。租户配额管理允许设置最大用户数、最大仪表盘数量、最大存储空间、每小时最大查询数等限制,超过配额时优雅降级而非直接中断服务。
五、身份认证与权限打通
衡石采用三层认证体系来保障安全并实现灵活集成。第一层是平台认证,支持 OAuth 2.0 和 OIDC、企业 SSO(支持 SAML)、API Key(用于 Agent 和 CI 接入)。第二层是租户认证,与 ISV 产品的用户体系打通,通过 JWT Token 透传实现。第三层是数据权限,包括行级数据权限(RLS)、列级数据权限(敏感字段脱敏)和功能级权限(谁能创建仪表板、谁能查看)。
身份打通的典型场景是:某 SaaS CRM 产品嵌入了衡石 BI,CRM 的用户登录后应自动获得 BI 中对应角色的权限。ISV 后端生成嵌入式 BI 的访问令牌时,需要将租户 ID 映射到衡石的 App ID、将用户 ID 作为用户标识、将 CRM 中的角色映射到 BI 中的权限组、将数据权限范围(如用户所属区域)作为过滤条件,并设置合理的令牌过期时间。
权限操作在 CLI 中也非常灵活。可以查看权限矩阵(按用户、角色、资源、访问级别展示),可以通过用户组进行批量授权,权限配置支持预演机制——先预览权限变更的影响,确认后再正式执行。
六、三种嵌入模式的租户视角
在分析成果嵌入模式下,ISV 产品直接嵌入衡石的单个仪表板或图表,租户无感知。嵌入方式可以是单个仪表板的 iFrame 嵌入,也可以是单个指标卡的轻量嵌入。在分析能力嵌入模式下,允许租户在自己的空间内创建自定义仪表板。ISV 为租户开启自助分析能力后,租户可以在自己的 App 空间内选择已授权数据集、拖拽创建新图表、组合自己的仪表板,所有操作都在租户的隔离空间内。在深度集成定制模式下,以衡石为分析底座,ISV 完全定制前端交互,通过 API 获取和创建租户的分析资产。
七、资源调度与性能隔离
不同等级的租户可以设置不同的查询优先级。VIP 租户可以设置为高优先级,基础租户设置为低优先级,确保高价值客户的分析任务优先执行。资源监控可以通过 CLI 查看各租户的 CPU 使用率、内存占比、每小时查询量和存储用量。通过这些数据,ISV 可以及时发现资源瓶颈并进行动态调整。
八、最佳实践总结
ISV 集成 Checklist 包括:租户创建自动化(通过 CLI 或 API 脚本化,避免手动创建)、身份打通(JWT Token 透传,统一认证入口)、数据隔离验证(定期自动化测试验证跨租户数据不可见)、资源监控(部署租户资源使用仪表板,实时告警)、模板化初始化(新租户自动注入默认仪表板和指标体系)、优雅降级(租户超配额时提示升级,而非直接中断服务)。
常见坑与解法:忘记设置行级权限——即使 App 是隔离的,如果数据集指向的是共享数据库,仍然需要在查询层设置行级权限。大租户的查询影响其他租户——通过查询队列优先级和 CPU 配额限制解决。模板更新后存量租户不同步——通过 CLI 脚本加定时任务实现模板版本管理。
九、FAQ
Q1:一个衡石平台最多支持多少租户?
取决于硬件资源和数据隔离方案。共享表方案可支持数千租户,独立数据库方案受限于数据库连接数。
Q2:租户可以跨 App 共享数据吗?
默认不允许。如果确实需要(如集团型企业的跨子公司数据汇总),可通过专门的数据集成管道实现。
Q3:升级衡石版本会影响租户数据吗?
不会。衡石的版本升级只更新平台层,App 内的数据和配置完全独立。
结语
衡石的多租户架构设计体现了一个核心理念:「App 即租户」。通过将应用空间作为租户隔离的原子单元,在数据隔离的严格性和资源利用的高效性之间找到了平衡点。对 ISV 厂商来说,理解这一架构设计,是高效集成衡石 BI 能力的基础。