潘志宝
2024-11-21 70079bd0772207e88414176f5ca9edb3dd4bd236
提交 | 用户 | 时间
e7c126 1 /**
H 2  * 多租户,支持如下层面:
3  * 1. DB:基于 MyBatis Plus 多租户的功能实现。
4  * 2. Redis:通过在 Redis Key 上拼接租户编号的方式,进行隔离。
5  * 3. Web:请求 HTTP API 时,解析 Header 的 tenant-id 租户编号,添加到租户上下文。
6  * 4. Security:校验当前登陆的用户,是否越权访问其它租户的数据。
7  * 5. Job:在 JobHandler 执行任务时,会按照每个租户,都独立并行执行一次。
8  * 6. MQ:在 Producer 发送消息时,Header 带上 tenant-id 租户编号;在 Consumer 消费消息时,将 Header 的 tenant-id 租户编号,添加到租户上下文。
9  * 7. Async:异步需要保证 ThreadLocal 的传递性,通过使用阿里开源的 TransmittableThreadLocal 实现。相关的改造点,可见:
10  *      1)Spring Async:
11  *          {@link com.iailab.framework.quartz.config.IailabAsyncAutoConfiguration#threadPoolTaskExecutorBeanPostProcessor()}
12  *      2)Spring Security:
13  *          TransmittableThreadLocalSecurityContextHolderStrategy
14  *          和 IailabSecurityAutoConfiguration#securityContextHolderMethodInvokingFactoryBean() 方法
15  *
16  */
17 package com.iailab.framework.tenant;