数据库处理方法、装置、服务端及存储介质制造方法及图纸

技术编号:37987957 阅读:8 留言:0更新日期:2023-06-30 10:02
本申请公开了一种数据库处理方法、装置、服务端及存储介质,用于增强业务系统健壮性和业务连续性,避免因无效连接导致数据库访问异常及数据丢失等问题。所述方法包括:在通过数据库访问方法访问数据库的过程中,监听指定异常并抛出;基于所述指定异常对应的预定义的异常处理逻辑进行数据库访问重试,其中,所述异常处理逻辑包括:调用预定义的检测方法对连接池中的数据库连接进行有效性检测,获得有效的数据库连接;通过拦截器拦截目标数据库访问方法,所述目标数据库访问方法是指抛出所述指定异常的数据库访问方法;基于所述有效的数据库连接和所述目标数据库访问方法对所述数据库进行访问重试。进行访问重试。进行访问重试。

【技术实现步骤摘要】
数据库处理方法、装置、服务端及存储介质


[0001]本申请涉及计算机
,尤其涉及一种数据库处理方法、装置、服务端及存储介质。

技术介绍

[0002]在软件系统的开发中,数据通常作为系统的核心要素。作为数据的载体,数据库也就必不可少了,而连接数据库的连接池的容错能力就显得格外重要。如在使用mysql作为数据存储的载体时,为了数据安全及高可用,通常会采用主从部署模式,当主库出现某种异常时,为了确保业务正常,主从切换也成了一种常用的运维手段,如果连接池不能很好的处理无效连接就会导致系统异常,严重情况丢失数据。
[0003]通常情况下,系统使用druid作为访问数据库的连接池,在主从切换或者连接被数据库服务端关闭后,会导致系统连接池中的连接实际上为无效连接,但连接池不能及时判断并删除这些无效连接,进而出现一段时间内访问数据库异常,即需要消耗掉所有无效连接,再重新获取新连接后才能正常访问数据库。期间不仅会导致数据库底层的异常,严重情况下还会导致数据丢失,对业务造成影响。
[0004]因此,当前亟需一种能够避免因无效连接导致数据库访问异常及数据丢失等问题的方案。

技术实现思路

[0005]本申请实施例的目的提供一种数据库处理方法、装置、服务端及存储介质,用于增强业务系统健壮性和业务连续性,避免因无效连接导致数据库访问异常及数据丢失等问题。
[0006]为了实现上述目的,本申请实施例采用下述技术方案:
[0007]第一方面,本申请实施例提供一种数据库处理方法,包括:
[0008]在通过数据库访问方法访问数据库的过程中,监听指定异常并抛出;
[0009]基于所述指定异常对应的、预定义的异常处理逻辑进行数据库访问重试,其中,所述异常处理逻辑包括:调用预定义的检测方法对连接池中的数据库连接进行有效性检测,获得有效的数据库连接;通过拦截器拦截目标数据库访问方法,所述目标数据库访问方法是指抛出所述指定异常的数据库访问方法;基于所述有效的数据库连接和所述目标数据库访问方法对所述数据库进行访问重试。
[0010]第二方面,本申请实施例提供一种数据库处理装置,包括:
[0011]监听单元,用于在通过数据库访问方法访问数据库的过程中,监听指定异常并抛出;
[0012]处理单元,用于基于所述指定异常对应的、预定义的异常处理逻辑进行数据库访问重试,其中,所述异常处理逻辑包括:调用预定义的检测方法对连接池中的数据库连接进行有效性检测,获得有效的数据库连接;通过拦截器拦截目标数据库访问方法,所述目标数
据库访问方法是指抛出所述指定异常的数据库访问方法;基于所述有效的数据库连接和所述目标数据库访问方法对所述数据库进行访问重试。
[0013]第三方面,本申请实施例提供一种服务端,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面所述的方法。
[0014]第四方面,本申请实施例提供一种计算机可读存储介质,当所述存储介质中的指令由服务端的处理器执行时,使得服务端能够执行如第一方面所述的方法。
[0015]本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:在通过数据库访问方法访问数据库的过程中,监听指定异常并抛出,然后基于针对该指定异常的、预定义的异常处理逻辑处理进行数据库访问重试,具体而言,通过调用预定义的检测方法对连接池中的数据库连接进行有效性检测,可以自动、及时获取有效的数据库连接;通过拦截器对抛出异常的目标数据库访问方法进行拦截,可以及时获知出现数据库访问异常的数据库访问方法,以及基于连接池中有效的数据库连接和目标数据库访问方法对数据库进行访问重试,可以避免数据丢失,提高了数据安全性和完整性,减少对业务的影响;并且,由于连接池中的数据库连接的有效性已经被检测过,使用有效的数据库连接和目标数据库访问方法对数据库进行自动访问重试,故正常情况下再次执行目标数据库访问方法,不会再导致数据库访问异常,保证数据库访问方法的正常执行,进而可以增强业务系统的健壮性及业务连续性。
附图说明
[0016]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0017]图1为本申请的一个实施例提供的一种数据库处理方法所适用的应用场景的示意图;
[0018]图2为本申请的一个实施例提供的一种数据库处理方法的流程示意图;
[0019]图3为本申请的另一个实施例提供的一种数据库处理方法的流程示意图;
[0020]图4为本申请的一个实施例提供的一种数据库处理装置的结构示意图;
[0021]图5为本申请的一个实施例提供的一种服务端的结构示意图。
具体实施方式
[0022]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0023]本说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应理解,这样使用的数据在适当情况下可以互换,以便本申请实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,本说明书和权利要求书中“和/或”表示所连接对象的至少其中之一,字符“/”一般表示前后关联对象是一种“或”的关系。
[0024]部分概念说明:
[0025]java:一种计算机开发语言。
[0026]druid:是一个数据库连接池框架,是java语言的一种技术,可用于类、方法。
[0027]连接池(Connection Pool):程序启动时将创建一定数量的数据库连接放在连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲数据库连接;使用完毕后,用户也并非将数据库连接关闭,而是将数据库连接放回连接池中,以供下一个请求访问使用,这样省略了创建连接和关闭数据库连接的过程,可以提高业务系统性能,避免重复多次的创建和关闭数据库连接而产生的性能下降和业务系统资源的浪费。而连接的建立、断开都由连接池自身来管理。
[0028]主从部署模式:是指数据库部署至少一个主节点、至少一个从节点,通常数据写入主节点、查询使用从节点,主节点向从节点同步数据,达到主从节点数据一致。
[0029]主从切换不可用的原因:连接池中数据库连接对应的服务端已被切换,即不能再访问到原来的服务端,而客户端并不知道服务端已被切换,导致客户端连接池中的数据库连接仍被认为是有效连接,导致客户端仍使用该数据库连接访问原数据库,却不能连接上,进而报错Communications link fai本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库处理方法,其特征在于,包括:在通过数据库访问方法访问数据库的过程中,监听指定异常并抛出;基于所述指定异常对应的、预定义的异常处理逻辑进行数据库访问重试,其中,所述异常处理逻辑包括:调用预定义的检测方法对连接池中的数据库连接进行有效性检测,获得有效的数据库连接;通过拦截器拦截目标数据库访问方法,所述目标数据库访问方法是指抛出所述指定异常的数据库访问方法;基于所述有效的数据库连接和所述目标数据库访问方法对所述数据库进行访问重试。2.根据权利要求1所述的方法,其特征在于,所述检测方法包括连接检测方法和检测开启方法;所述调用预定义的检测方法对连接池中的数据库连接进行有效性检测,获得有效的数据库连接,包括:通过所述检测开启方法开启所述连接池的使用前检测功能,所述使用前检测功能用于触发所述连接池调用所述连接检测方法对所述连接池中的数据库连接进行有效性检测,获得有效的数据库连接。3.根据权利要求1所述的方法,其特征在于,所述拦截器包括事务拦截器;所述通过拦截器拦截目标数据库访问方法,包括:通过所述事务拦截器拦截具有事务注解的事务方法;若所述事务方法抛出所述指定异常,则确定所述事务方法为所述目标数据库访问方法。4.根据权利要求3所述的方法,其特征在于,所述基于所述有效的数据库连接和所述目标数据库访问方法对所述数据库进行访问重试,包括:获取所述目标数据库访问方法的事务传播特性信息;基于所述事务传播特性信息和所述连接池中有效的数据库连接对所述数据库进行访问重试。5.根据权利要求4所述的方法,其特征在于,所述基于所述事务传播特性信息和所述连接池中有效的数据库连接对所述数据库进行访问重试,包括:基于所述事务传播特性信息,确定所述目标数据库访问方法与所述目标数据库访问方法所在的方法链路...

【专利技术属性】
技术研发人员:李昇卿力赵飞罗仕杰吴海英蒋宁
申请(专利权)人:马上消费金融股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1