网关层动态切换接口级数据源
需求背景
公司存在一些项目因为系统架构不合理,并且在生产环境已经频繁因为数据库性能导致不可用的情况
在已经存在的较重的项目中,导出,核心业务,非核心业务揉在一起的情况下,导致对主库的压力及风险非常大,服务经常因为某些查询接口设计没有优化,或者是接口没有优化,导致拖垮整个服务器
主要解决的问题是,某些非核心业务的查询接口造成的主实例数据库负载。
- 生产环境因为导出等接口太慢,会拖累主库
- 某些不重要的业务在服务器负载过高的情况下,与核心业务同数据库会导致核心业务不可用
设计思想

- 从网关进来之后,根据请求的地址,获取对应的数据源,通过RPC传递的时候附带过去
- 在服务的拦截器中取出数据源参数,并且放入ThreadLocal中,注意ThreadLocal在线程池及异步时候如果需要传递,需要额外进行处理,默认不支持
- 然后在动态数据源中根据ThreadLocal的值动态去切换
浙公网安备 33010602011771号