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 能力的基础。


相关推荐
私人珍藏库3 小时前
【Android】压缩视频1.1.28-视频压缩-解放内存
android·app·工具·软件·多功能
ᴀᴠɪᴄɪɪ ғᴏʀᴇᴠᴇʀ4 小时前
WebHomeTV:把 Android 影音盒子变成一个可编程的网页应用平台
app·安卓·智能tv·tv box·webtv
私人珍藏库5 小时前
【Android】iTubeGo(去除限制)
android·智能手机·app·工具·多功能
方白羽21 小时前
Vibe Coding 四个核心阶段
android·前端·app
duanze1 天前
从零开始Android商业项目Vibe coding完全指南(六)
app·vibecoding
河北清兮网络科技2 天前
深度解析:2026石家庄短视频APP开发真实成本、隐性开销与避坑方案
大数据·小程序·app·短剧app·广告联盟
暗冰ཏོ3 天前
Flutter 从入门到项目实战:Dart 基础、跨平台开发、App 架构与上线发布完整指南
flutter·架构·app·安卓·应用开发
gxf5203088069884 天前
Flutter 裁剪图片
前端·app
私人珍藏库4 天前
【Android】 VidFetch一键下载各大平台视-内置播放器
android·app·工具·软件·多功能