SaaS 多租户架构设计实践:衡石 BI 如何实现数据隔离与资源调度

对于软件 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 能力的基础。


相关推荐
Fansi1 天前
iOS 实时活动(Live Activity)开发指南
app
duanze2 天前
从零开始Android商业项目Vibe coding完全指南(八)
app·vibecoding
Bigger7 天前
Tauri (26)——托盘图标总对不上系统主题?一行 Template Image 搞定
前端·rust·app
duanze11 天前
从零开始Android商业项目Vibe coding完全指南(七)
app·vibecoding
方白羽17 天前
一份 AGENTS.md,让 Android AI 代码规范率飙升
android·app·客户端
私人珍藏库17 天前
[Android] OldRoll复古胶片相机高级版-徕卡-哈苏-宝丽来等等
数码相机·智能手机·app·工具·软件·多功能
私人珍藏库17 天前
[Android] 红妆相机-拍照美颜图片美化工具
android·数码相机·app·软件·多功能
私人珍藏库17 天前
[Android] 精图地球-高清卫星3D街景VR地图工具
智能手机·app·工具·软件·多功能
私人珍藏库17 天前
[Android] 视频下载鸟 v20.02 会员
android·人工智能·智能手机·app·工具·多功能
私人珍藏库18 天前
[Android] 三维山水全景地图-3D地形全景观测地图
android·3d·app·工具·软件·多功能