多租户

多租户(Multi-tenancy)是SaaS模式平台能够大规模获利的关键
它解决一个核心问题:如何在共享资源的同时,保障每个客户数据的绝对独立。
一套系统能够支撑多个租户。
一个租户通常是具有相似访问模式和权限的一组用户,典型的租户是同一个组织或者公司的若干用户。
数据层的多租户模型对上层服务和应用的多租户实现有突出影响。

多租户实现需要考虑因素:

  • 扩展性:租户数量级别,以及未来发展趋势
  • 安全性:租户之间数据隔离级别要求
  • 资源共享:多租户通常有某种形式的资源共享,需要避免某个租户的糟糕SQL吃掉系统资源,影响其他租户的响应时间
  • 灵活性:不同租户可能有不同的需求,对特定租户需求的扩展能力
  • 跨租户分析和优化:对全部租户或者多个租户的数据和行为进行分析的能力
  • 运维和管理:运维管理的复杂度和便宜性,包括监控、修改数据库模式、创建索引、收集统计数据、数据加载等
  • 成本:总体拥有成本,包括方案实现成本、运维成本等

多租户的三种实现路径:一租户一数据库、一租户一名字空间、全共享方式

隔离方案 描述 扩展性 成本 安全性 适用场景
一租户一数据库 每个租户一个专属数据库 低 最高 最高 金融级、政府级 IoT 项目
一租户一名字空间 同一个库,不同命名空间 中 中等 中等 多数企业级 SaaS 平台
全共享方式 都在一张表里,靠 tenant_id 区分 高(一键更新) 最低 较低(易出错) 轻量级、大量小客户场景

与普通电商系统不同,物联网的多租户还要考虑设备接入:

  • 设备权限隔离: 你绝不能让A工厂的设备,把数据发到B工厂的租户账号里。
  • Topic隔离: 在MQTT中,必须通过租户ID动态限制订阅权限。
  • API限流: 如果某一个租户疯狂发送垃圾数据,不能让这台设备把整个平台的服务器压垮,必须针对租户做QoS限制。

在设计 IoT 平台时,“租户隔离”不仅仅是数据库层面的事,它是从接入认证到数据存储,再到前端展示的全链路逻辑。如果在设计之初没有定好 tenant_id 的传递逻辑,后期想补救会非常痛苦。

posted @ 2026-03-03 17:08  技累者  阅读(60)  评论(0)    收藏  举报