说明:收录25万 73个行业的国家标准 支持批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 20221097683 5.5 (22)申请日 2022.08.15 (71)申请人 全通金信控股 (广东) 有限公司 地址 528405 广东省中山市东区中山四路 88号尚峰金融商务中心五座 19层之八 (住所申报) (72)发明人 李宝君 何玉华  (51)Int.Cl. G06F 9/48(2006.01) G06F 9/50(2006.01) G06F 16/245(2019.01) G06F 16/27(2019.01) (54)发明名称 一种一主 多从的数据源调度、 管理装置 (57)摘要 本发明涉及互联网访问数据调度的技术领 域, 具体公开了一种一主多从的数据源调度、 管 理装置, 包括代理数据源、 DAO层切面拦截器和数 据源上下文, 包括以下步骤: S1、 获取数据源标 识; S2、 DAO层切面拦截器获取DAO层接口上的标 签的“数据源标识 ”, 将“数据源标识 ”记录到数据 源上下文; S3、 代理数据源由数据源上下文中获 取“数据源标识 ”; S4、 数据源上下文返回给代理 数据源“数据源标识”; S5、 代理数据源 根据“数据 源标识”选择数据源并调用数据库; S6、 数据库 将 调用数据源反馈到代理数据源、 DAO层以及DAO层 切面拦截器; S7、 查看 是否有挂起的sp ring事务; 该数据源调度、 管理装置不会因为等待可用连接 而耗尽系统的可用线程, 从而造成整个应用堵 死。 权利要求书2页 说明书6页 附图3页 CN 115309528 A 2022.11.08 CN 115309528 A 1.一种一主多从的数据源调度、 管理装置, 包括代理数据源、 DAO层切面拦截器和数据 源上下文, 其特 征在于, 包括以下步骤: S1、 获取数据源标识, 查看是否有spri ng事务, 有则挂 起该事务; S2、 DAO层切面拦截器获取DAO层接 口上的标签 的“数据源标识 ”, 将“数据源标识 ”记录 到数据源上 下文, 并调用DAO层和调用代理数据源; S3、 代理数据源由数据源上下文中获取 “数据源标识 ”, 所述代理数据源包括数据源调 度器、 主数据源和从数据源key ‑value容器, 所述数据源调度器用于从数据源 上下文中取出 “数据源标识 ”, 所述主数据源为直接使用的数据源, 所述 从数据源key ‑value容器内储存有 代理从数据源; S4、 数据源上 下文返回给代理数据源 “数据源标识 ”; S5、 代理数据源根据 “数据源标识 ”选择数据源并调用数据库; S6、 数据库将调用数据源反馈 到代理数据源、 DAO层以及DAO层切面 拦截器; S7、 查看是否有挂起的spring事务, 有则 恢复该事务, 将数据源标识由数据源上下文中 移除, 然后返回结果给service层。 2.根据权利要求1所述的一种一主多从的数据源调度、 管理装置, 其特征在于, 所述DAO 层切面拦截器的处理方法包括: 所述DAO层切面拦截器从DAO层接口中, 尝试获取 “数据源标 识”, 若获取不到, 则直接调用DAO层接口; 若获取得到, DAO层切面拦截器会调起数据源 前置 处理器, 该处理器会先将 “数据源标识 ”记录到数据源上下文中, 然后查看是否有spring事 务, 有则挂起该事务, 然后调用DAO层, DAO层返回调用结果后, 查看是否有挂起的spring事 务, 有则恢复该事务。 3.根据权利要求2所述的一种一主多从的数据源调度、 管理装置, 其特征在于, 所述DAO 层切面拦截器的配置如下: <aop:config>     <aop:aspect  ref="microServiceDao Interceptor ">         <aop:pointcut  expression="execution(*  cn.qtone.zf.*.*.dao..* Mapper.*(..))" id="daoInterceptor "/>        <aop:around  method="around"  pointcut‑ref="dao Interceptor "/>     </aop:aspect> </aop:config> 其中,“* cn.qtone.zf.*.*.dao. .*Mapper.*(..) ”为需要拦截的接口。 4.根据权利要求3所述的一种一主多从的数据源调度、 管理装置, 其特征在于, 所述DAO 层切面拦截器的处 理方法还 包括以下步骤: 当在service层开启spring所管理的事务时, spring事务管理器提前由数据源中获取 链接, 当在service层的某一带事务方法中, 顺序调用接口  functoinA、 functoinB、 functoinC时, 则在代理数据源表现为获取主数据源链接master, 然后执行functoinA的 sql, 然后保存链接master, 获取代理从数据源链接slave, 用链接slave执行functoinB的 sql, 然后释放链接slave, 用链接master执 行functo inC的sql, 释放链接master。 5.根据权利要求1所述的一种一主多从的数据源调度、 管理装置, 其特征在于, 所述代 理数据源 包括以下切换配置方法:权 利 要 求 书 1/2 页 2 CN 115309528 A 2A、 根据name、 type、 isProtected、 co nfig切换代理从数据源配置; B、 根据name查看从数据源key ‑value容器中是否有对应的代理从数据源, 若否, 则将任 务抛异常并结束, 若是, 则进入下一 步; C、 新建一个代理从数据源然后将type、 isProtected、 config传并启动; 若不能启动, 则 将任务抛异常并结束, 若正常启动, 则进入下一 步; D、 将name对应的原数据源取 出并保存, 将新数据源放入; E、 查看原数据链接是否有活跃连接, 若无, 则关闭原数据源并结束, 若有, 则循环查看 原数据链接是否有活跃 连接, 直至没有活跃 连接后关闭原数据源并结束。 6.根据权利要求1所述的一种一主多从的数据源调度、 管理装置, 其特征在于, 所述数 据源上下文内设置有一jdk提供的ThreadLocal对象, 该ThreadLocal对象可以将变量保存 在当前执行的线程当中。 7.根据权利要求6所述的一种一主多从的数据源调度、 管理装置, 其特征在于, 所述数 据源上下文包括以下提供 方法: a、 将数据源标识 记录到ThreadL ocal对象中:     public static void setSlaveDataSource(St ring slaveDataSource)  {..}; b、 将从ThreadL ocal对象获取 数据源标识:     public static String getSlaveDataSource()  {..}; c、 将数据源标识从ThreadL ocal对象移除:     public static String removeSlaveDataSource()  {..}。权 利 要 求 书 2/2 页 3 CN 115309528 A 3

.PDF文档 专利 一种一主多从的数据源调度、管理装置

文档预览
中文文档 12 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共12页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种一主多从的数据源调度、管理装置 第 1 页 专利 一种一主多从的数据源调度、管理装置 第 2 页 专利 一种一主多从的数据源调度、管理装置 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 13:07:16上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。