本发明涉及数据处理,尤其涉及一种多数据源切换方法、装置及电子设备。
背景技术:
1、在目前互联网高并发(写少读多)的场景下,多数据源的读写分离可以缓解目前db(写主库读从库)的压力,从而提升系统的吞吐率.对于银行某些交易场景也存在少数场景写服务在主库(mas ter),读服务在备(oracle adg)库。
2、由于生产环境偶尔出现网络不稳定或者adg((act ive data guard)库延时导致读取数据失败,从而造成生产事故的发生。虽然目前spring开源框架有提供双数据源配置的处理方案,但是需要业务代码定义那些sql语句从不同的数据源读取,在遇到备库异常情况,数据读取失败,造成生产环境业务崩溃。
3、因此,现有技术还有待于改进和发展。
技术实现思路
1、鉴于上述现有技术的不足,本发明提供了一种多数据源切换方法、装置及电子设备,旨在解决现有技术中spring开源框架有提供双数据源配置的处理方案,但是需要业务代码定义那些sql语句从不同的数据源读取,在遇到备库异常情况,数据读取失败,造成生产环境业务崩溃的问题。
2、本发明的技术方案如下:
3、本发明第一实施例提供了一种多数据源切换方法,所述方法包括:
4、检测到定时任务,判断定时任务是否在延时检测间隔内;
5、若当前的定时任务在延时检测间隔内,判断当前的定时任务是否存在延时;
6、若当前的定时任务存在延时,则将从数据库的状态设置为不可用,将主数据库作为数据源;
7、若当前的定时任务不存在延时,则将从数据库的状态设置为可用,将主数据库和从数据库作为数据源。
8、进一步地,所述若当前的定时任务存在延时,则将从数据库的状态设置为不可用,将主数据库作为数据源,包括:
9、若当前的定时任务存在延时,则对延时次数进行处理;
10、将从数据库的状态设置为不可用,将主数据库作为数据源。
11、进一步地,所述若当前的定时任务不存在延时,则将从数据库的状态设置为可用,将主数据库和从数据库作为数据源,包括:
12、若当前的定时任务不存在延时,则对非延时次数进行处理;
13、将从数据库的状态设置为可用,将主数据库和从数据库作为数据源。
14、进一步地,所述若当前的定时任务存在延时,则对延时次数进行处理,包括:
15、若当前的定时任务存在延时,则将非延时次数设置为0,并将延时次数设置为上次延时次数再加1。
16、进一步地,所述若当前的定时任务不存在延时,则对非延时次数进行处理,包括:
17、若当前的定时任务不存在延时,则将非延时次数设置为上次非延时次数加1,将延时次数设置为0。
18、进一步地,所述若当前的定时任务存在延时,则将从数据库的状态设置为不可用,将主数据库作为数据源后,还包括:
19、判断定时任务否为第一次启动;
20、若定时任务第一次启动,则将从数据库的状态设置为可用,将主数据库和从数据库作为数据源;
21、若定时任务非第一次启动,且非延迟次数大于等于预设的非延迟次数阈值,则将主数据库和从数据库作为数据源。
22、进一步地,所述若当前的定时任务存在延时,则将从数据库的状态设置为不可用,将主数据库作为数据源后,还包括:
23、判断定时任务否为第一次启动;
24、若定时任务第一次启动,则将从数据库的状态设置为可用,将主数据库和从数据库作为数据源;
25、若定时任务非第一次启动,且非延迟次数大于等于预设的非延迟次数阈值,则将主数据库和从数据库作为数据源。
26、本发明的另一实施例提供了一种多数据源切换装置,装置包括:
27、检测间隔判断模块,用于检测到定时任务,判断定时任务是否在延时检测间隔内;
28、延时判断模块,用于若当前的定时任务在延时检测间隔内,判断当前的定时任务是否存在延时;
29、第一数据源选择模块,用于若当前的定时任务存在延时,则将从数据库的状态设置为不可用,将主数据库作为数据源;
30、第二数据源选择模块,用于若当前的定时任务不存在延时,则将从数据库的状态设置为可用,将主数据库和从数据库作为数据源。
31、本发明的另一实施例提供了一种电子设备,所述电子设备包括至少一个处理器;以及,
32、与所述至少一个处理器通信连接的存储器;其中,
33、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的多数据源切换方法。
34、本发明的另一实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的多数据源切换方法。
35、有益效果:本发明实施例的多数据源切换方法,通过自动动态切换数据源来规避异常场景,保证生产环境业务稳定;而且实时监控主从库的数据库连接情况,提供实时大盘监控能力。
1.一种多数据源切换方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述若当前的定时任务存在延时,则将从数据库的状态设置为不可用,将主数据库作为数据源,包括:
3.根据权利要求2所述的方法,其特征在于,所述若当前的定时任务不存在延时,则将从数据库的状态设置为可用,将主数据库和从数据库作为数据源,包括:
4.根据权利要求3所述的方法,其特征在于,所述若当前的定时任务存在延时,则对延时次数进行处理,包括:
5.根据权利要求4所述的方法,其特征在于,所述若当前的定时任务不存在延时,则对非延时次数进行处理,包括:
6.根据权利要求5所述的方法,其特征在于,所述若当前的定时任务存在延时,则将从数据库的状态设置为不可用,将主数据库作为数据源后,还包括:
7.根据权利要求6所述的方法,其特征在于,所述若定时任务非第一次启动,且非延迟次数大于等于预设的非延迟次数阈值,则将主数据库和从数据库作为数据源,包括:
8.一种多数据源切换装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,所述电子设备包括至少一个处理器;以及,
10.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1-7任一项所述的多数据源切换方法。