网关层动态切换接口级数据源

需求背景

公司存在一些项目因为系统架构不合理,并且在生产环境已经频繁因为数据库性能导致不可用的情况

在已经存在的较重的项目中,导出,核心业务,非核心业务揉在一起的情况下,导致对主库的压力及风险非常大,服务经常因为某些查询接口设计没有优化,或者是接口没有优化,导致拖垮整个服务器

主要解决的问题是,某些非核心业务的查询接口造成的主实例数据库负载。

  1. 生产环境因为导出等接口太慢,会拖累主库
  2. 某些不重要的业务在服务器负载过高的情况下,与核心业务同数据库会导致核心业务不可用

设计思想

  1. 从网关进来之后,根据请求的地址,获取对应的数据源,通过RPC传递的时候附带过去
  2. 在服务的拦截器中取出数据源参数,并且放入ThreadLocal中,注意ThreadLocal在线程池及异步时候如果需要传递,需要额外进行处理,默认不支持
  3. 然后在动态数据源中根据ThreadLocal的值动态去切换
posted @ 2021-07-17 20:42  随风森林  阅读(105)  评论(0)    收藏  举报