[发明专利]基于方法参数切面多租户数据源切换系统有效
申请号: | 201810200309.3 | 申请日: | 2018-03-12 |
公开(公告)号: | CN108520004B | 公开(公告)日: | 2021-11-19 |
发明(设计)人: | 苗江波;汤定一;张旭荣;王宏祥 | 申请(专利权)人: | 舟谱数据技术南京有限公司 |
主分类号: | G06F16/25 | 分类号: | G06F16/25;G06F16/2455 |
代理公司: | 苏州翔远专利代理事务所(普通合伙) 32251 | 代理人: | 姜微微 |
地址: | 210000 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 方法 参数 切面 租户 数据源 切换 系统 | ||
1.基于方法参数切面多租户数据源切换系统,其特征在于:它包含以下步骤:
(1)、用户登录,统一认证返回当前用户属于哪个库,标识为cid,它是分库键;每个用户登录后便携带cid;
(2)、在拦截方法前,系统执行上下文SysContext中,给每次request请求绑定ThreadLocal,ThreadLocal保存了当前cid,用完便释放;
(3)、拦截到方法后,从内存中找到cid对应的数据源,切换当前数据源;
(4)、连接池不能在应用间共享,集群的各自应用,自己维护连接池;所有DataSource对象在每个应用中都保存一份;
(5)、动态新增一条数据源信息后,会将信息同时缓存到redis中;
一个请求携带cid到达某个应用后,如果在这个应用的内存中没有找到数据源,那么该应用就会主动去redis中取数据源信息;
(6)、动态修改数据源连接数及其他信息,会在系统内存中将该信息移除并从新创建新的对象替换;
系统是基于方法参数分库键拦截,动态切换数据源,拦截到方法,从方法参数中找到cid并获得cid的值从而得到数据源,切换当前数据源;
本系统运作时,新增数据源时记录到数据库中,并让各自应用服务器主动感知数据源;如果一个请求第一次到达A服务器,A服务器中没有该数据源,A服务器自己创建数据源并添加到自己内存中;整个过程全是热感知,无需重启集群服务;分库键绑定request线程,每个方法约定俗成第一个参数就是分库键,这就统一了无规则,代码维护困难的缺点,系统只需要拦截所有方法,并在执行前拿到方法执行的参数,便知道当前需要动态切换哪个数据源。
2.根据权利要求1所述的基于方法参数切面多租户数据源切换系统,其特征在于:所述步骤(3)中数据源也是绑定线程,一个线程请求结束也会将当前数据源释放。
3.根据权利要求1所述的基于方法参数切面多租户数据源切换系统,其特征在于:所述步骤(5)中如果redis中也没有该数据源信息将放弃该次请求;如有,该应用会用数据源信息创建数据源并保存到内存中。
4.根据权利要求1所述的基于方法参数切面多租户数据源切换系统,其特征在于:动态数据源维护是在线操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于舟谱数据技术南京有限公司,未经舟谱数据技术南京有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810200309.3/1.html,转载请声明来源钻瓜专利网。