SaaS系统 #
资源隔离 #
为每个租户都分配独立资源是不切实际的,所以租户隔离时一般按用户级别进行区分处理。比如免费用户使用同一资源,付费用户按组隔离,VIP用户使用独立资源。
存储资源隔离 #
为每个租户分配独立的命名空间,按照用户级别选择不同隔离方案:
- 同一张表中通过租户标识字段tenant_id来区分租户。
- 表名后缀添加租户标识tenant_id区分租户。
- Schema后缀添加租户标识tenant_id区分租户。
代码实现
为了避免开发者在编写代码时忘记携带tenant_id字段,可以在框架中默认让所有SQL语句都添加tenant_id,然后使用自定义注解@TenantContextUnaware定义在不需要区分租户的地方。