概述
多租户架构(Multi-Tenancy)使单一物联网平台可同时服务多个企业客户(租户),每个租户拥有独立的设备、数据、用户、应用空间,实现逻辑隔离与资源配额。是物联网云平台商业化、SaaS运营、白标输出的基础架构。与单租户部署相比,多租户可显著降低每客户成本,实现规模化运营。物联网卡管理平台、行业物联网SaaS、代理商系统等均依赖多租户架构。
多租户的核心挑战是"隔离":租户A不能访问租户B的设备与数据;租户A的流量激增不能影响租户B。需在接入网关、消息队列、数据库、缓存、API等各层实现租户上下文(Tenant ID)的传递与过滤。达希物联作为物联网卡与连接服务商,其平台需支持多客户(运营商、代理商、终端客户)的隔离与独立管理,多租户是核心架构能力。
核心设计
数据隔离
租户ID(tenant_id)贯穿设备表、产品表、用户表、数据表。所有查询必须带租户过滤条件,避免跨租户数据泄露。可采用行级安全(RLS)、共享表+租户列、或租户独立Schema/数据库。设备接入时,从设备凭证解析租户ID,后续链路传递。
资源配额
设备数、消息量、存储空间、API调用量等按租户限制。超限时拒绝或告警。支持套餐(如基础版1000设备、专业版1万设备)与超量计费。配额检查在设备注册、消息接入、存储写入等关键路径执行。
独立计费与白标
按租户统计用量,生成账单。支持套餐、按量、混合计费。白标能力:租户自定义域名、Logo、登录页、邮件模板,实现" white-label"输出,代理商可自有品牌运营。
实现要点
租户上下文传递:从JWT、API Key、设备凭证中解析租户ID,注入请求上下文,各服务从上下文获取并过滤。消息队列Topic可按租户分区(如iot.{tenantId}.data),实现逻辑隔离。缓存Key包含租户ID,避免串租户。需在网关、认证、各业务服务全链路落地。