SaaS系统

SaaS系统 #

资源隔离 #

为每个租户都分配独立资源是不切实际的,所以租户隔离时一般按用户级别进行区分处理。比如免费用户使用同一资源,付费用户按组隔离,VIP用户使用独立资源。

存储资源隔离 #

为每个租户分配独立的命名空间,按照用户级别选择不同隔离方案:

  • 同一张表中通过租户标识字段tenant_id来区分租户。
  • 表名后缀添加租户标识tenant_id区分租户。
  • Schema后缀添加租户标识tenant_id区分租户。

代码实现

为了避免开发者在编写代码时忘记携带tenant_id字段,可以在框架中默认让所有SQL语句都添加tenant_id,然后使用自定义注解@TenantContextUnaware定义在不需要区分租户的地方。