(19)国家知识产权局
(12)发明 专利
(10)授权公告 号
(45)授权公告日
(21)申请 号 202210777838.6
(22)申请日 2022.07.04
(65)同一申请的已公布的文献号
申请公布号 CN 114840272 A
(43)申请公布日 2022.08.02
(73)专利权人 好享家舒适智能家居股份有限公
司
地址 210016 江苏省南京市玄武区中山 东
路311-2号
(72)发明人 汪浩 李郃 郑华忠
(74)专利代理 机构 南京知识律师事务所 32 207
专利代理师 徐航天
(51)Int.Cl.
G06F 9/445(2018.01)
G06F 9/48(2006.01)G06F 9/54(2006.01)
审查员 郭俊
(54)发明名称
一种多数据源动态规划及监测系统、 方法
(57)摘要
本发明公开一种多数据源动态规划及监测
系统, 包括: 多数据源切换注解组件, 内部定义数
据源ID属性, 标记多数据源切换注解组件的方法
在执行期间切换到内部指定的数据源ID; 动态数
据源管理组件, 包括数据源ID和数据源对象的键
值对映射属性、 默认的数据源对象属性, 及获取
当前线程应使用或正在使用的数据源ID的方法;
多数据源切换切面组件, 拦截 标记了多数据源切
换注解组件的方法; 运行时数据源线程持有组
件, 持有当前线程正在操作的数据源ID; 运行时
数据源缓存池, 能够缓存创建的运行时数据源对
象。 本发明还公开一种多数据源动态 规划及监测
方法, 保证系统正常启动, 提高服务启动时的性
能。
权利要求书3页 说明书7页 附图5页
CN 114840272 B
2022.09.30
CN 114840272 B
1.一种多数据源动态规划及监测系统, 其特 征在于, 包括以下组件:
多数据源切换注解组件, 内部定义数据源ID属性, 标记多数据源切换注解组件的方法
在执行期间切换到内部指定的数据源ID;
动态数据源管理组件, 包括数据源ID和数据源对象的键值对 映射属性、 默认的数据源
对象属性; 还 包括以下 方法: 获取当前线程应使用或正在使用的数据源ID;
多数据源切换切面组件, 拦截标记了多数据源切换注解组件的方法;
运行时数据源线程持有组件, 持有当前线程 正在操作的数据源ID;
运行时数据源缓存 池, 能够缓存创建的运行时数据源 对象;
数据源监测组件, 记录每个数据源的使用频率, 并根据使用频率, 判断数据源是否属于
热点数据源, 当动态数据源管理组件中已注册的数据源数量达到上限时, 根据配置的移除
规则移除数据源。
2.根据权利要求1所述的多数据源动态规划及监测系统, 其特 征在于:
数据源监测组件管理运行时数据源缓存池, 即: 当创建运行时数据源后, 根据数据源的
使用频率, 决定是否需要缓存创建的运行时数据源对 象到运行时数据源缓存池、 是否需要
清理数据源以节省内存。
3.根据权利要求1 ‑2中任一项所述的多数据源动态规划及监测系统, 其特 征在于:
多数据源切换切面组件在标记了多数据源切换注解组件的方法执行前织入切换数据
源的逻辑, 切换至多数据源切换注解组件中指定的数据源ID; 在方法执行后织入自动清理
数据源信息的逻辑, 清理运行时数据源线程持有组件。
4.一种多数据源动态规划及监测方法, 包括以下步骤:
S11, 项目启动时, 通过循环遍历的方式加载配置文件中提前配置好的各个数据源连接
参数;
S12, 创建数据源对象和数据库连接池之前, 先测试数据源的连通性, 即校验数据源是
否能正常连接、 用户名或密码是否正确;
S13, 如果不可连接, 则认为数据源当前存在问题, 程序发送告警信息, 同时在内存缓存
中记录异常数据源;
S14, 如果可连接, 判断当前已初始化的数据源数量是否已达上限, 如果已达上限, 将数
据源信息加入延迟创建缓存, 不执行初始化过程; 如果未达上限, 则继续创建数据源对象,
并注册至动态数据源管理 组件中, 完成数据源的初始化工作;
还包括延迟创建多数据源的方法:
目标方法执行前, 先执行前置通知; 前置通知首先获取连接点信 息; 从连接点信 息中解
析得到目标对象、 目标 方法;
判断目标方法是否标记了多数据源切换注解组件的方法, 如果标记了, 则从多数据源
切换注解组件属性中得到当前目标 方法需要切换到的数据源ID;
根据数据源ID查找数据源对象, 将数据源对象注册到动态数据源管理组件中, 进而执
行自动切换、 目标 方法。
5.根据权利要求4所述的多数据源动态规划及监测方法, 其特征在于, 还包括自动重连
方法:
S21, 设定定时重试任务, 依次读取内存缓存中记录的异常数据源, 再次判断数据源是权 利 要 求 书 1/3 页
2
CN 114840272 B
2否可连接, 如果 仍不能正常连接, 则更新数据源的失败重试次数;
S22, 如果已能正常连接, 则执行数据源对象创建、 注册到动态数据源管理组件的过程,
完成数据源的初始化工作; 并将数据源信息从异常数据源的缓存中移除;
S23, 循环结束后, 判断是否仍然有未能成功连通的数据源, 如果已经全部成功连通, 则
将定时重试任务关闭;
S24, 如果仍有未连通的数据源, 则退出本次定时重试任务; 等待下次定时重试任务执
行。
6.根据权利要求4所述的多数据源动态规划及监测方法, 其特征在于, 延迟创建多数据
源的方法具体包括如下步骤:
S31, 目标方法执行前, 先执行前置通知; 目标方法是标记了多数据源切换注解组件的
方法; 连接点包括目标 方法的索引、 所属对象、 参数信息;
S32, 判断目标方法是否标记了多数据源切换注解组件的方法, 如果未标记则说明当前
目标方法无需使用多数据源;
S33, 判断数据源是否已经初始化: 在动态数据源管理组件中根据数据源ID查找数据源
对象, 如果找到数据源对 象, 则说明已经初始化, 直接执行数据源自动切换的步骤, 继而执
行目标方法;
S34, 如果未找到, 则未初始化, 执 行创建数据源的逻辑;
S35, 创建完毕后, 调用数据源监测组件, 判断当前系 统中已初始化的数据源数量是否
已达上限, 如果未达上限, 则直接将数据源对象注册到动态数据源管理组件中, 进而 执行自
动切换、 目标 方法;
S36, 如果已达上限, 则继续调用数据源监测组件, 根据开发者配置的规则找到可移除
的数据源 对象;
S37, 移除后, 将数据源对象注册到动态数据源管理组件中, 继续执行自动切换、 目标方
法。
7.根据权利要求6所述的多数据源动态规划及监测方法, 其特征在于, S36中可配置的
规则包括:
规则A, 移除预设时间内使用频率最低的数据源; 规则B, 移除创建时间距今最久的数据
源; 规则C, 移除上次使用时间距今最久的数据源; 查找的范围包括动态数据源管理组件、 运
行时数据源缓存 池;
查找并移除数据源 对象包括如下 执行逻辑:
S361, 判断配置的移除规则, 如果用户未配置, 则默认为 规则A;
S362, 如果是规则A, 则调用数据源监测组件, 获取每个数据源 的创建时间和已使用次
数, 计算每 个数据源的使用频率, 排序得到使用频率 最低的数据源;
S363, 如果是规则B, 则调用数据源监测组件, 获取每个数据源的创建时间, 排序得到创
建时间距今最久的数据源;
S364, 如果是规则C, 则调用数据源监测组件, 获取每个数据源上次使用时间, 排序得到
上次使用时间距今最久的数据源;
S365, 判断得到的数据源是否有线程正在使用, 如果没有, 则从动态数据源管理组件或
运行时数据源缓存池中移除得到的数据源对象, 清理数据源监测组件中缓存的数据源创建权 利 要 求 书 2/3 页
3
CN 114840272 B
3
专利 一种多数据源动态规划及监测系统、方法
文档预览
中文文档
16 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共16页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 16:32:40上传分享