首页> 中国专利> 数据库的预编译处理方法、装置、设备及介质

数据库的预编译处理方法、装置、设备及介质

摘要

本申请涉及一种数据库的预编译处理方法、装置、设备及介质,涉及数据库技术领域,该方法包括:确定异常节点,获取异常节点对应预设的预编译信息,依据预编译信息进行预编译链路重建,得到异常节点对应的预编译链路处理结果,从而在分布式数据库节点异常时能够自动进行预编译链路重建,有效解决节点异常问题,提高异常节点的解决效率,降低业务开发成本。

著录项

  • 公开/公告号CN115658078A

    专利类型发明专利

  • 公开/公告日2023-01-31

    原文格式PDF

  • 申请/专利权人 金篆信科有限责任公司;

    申请/专利号CN202211682040.X

  • 申请日2022-12-27

  • 分类号G06F8/41;G06F11/07;G06F16/27;

  • 代理机构北京华夏泰和知识产权代理有限公司;

  • 代理人刘立志

  • 地址 100176 北京市大兴区北京经济技术开发区科谷一街10号院8号楼18层

  • 入库时间 2023-06-19 18:27:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-01-31

    公开

    发明专利申请公布

说明书

技术领域

本申请涉及数据库技术领域,尤其涉及一种数据库的预编译处理方法、装置、设备及介质。

背景技术

目前,随着分布式数据库的快速发展,各分布式数据库产品之间的竞争也非常激烈,分布式的预编译(prepare)方案是核心竞争力,不仅追求性能,还需要保障高可用、稳定性。分布式数据库组件节点众多,如分布式数据库可能包含多个计算节点和存储节点,节点发生异常的概率较高,而且一旦有某个发生异常,该节点则无法正常工作,如在计算节点发生异常时,除了该计算节点无法正常工作外,与该计算节点连接的存储节点也将无法正常工作,进而导致数据库无法正常反馈数据。

现有的分布式数据库节点异常解决方法,通常是在节点异常时由开发人员进行手动重新建链,如开发人员需要通过业务侧重新编写建链代码并执行重新建链代码,以解决节点异常。然而,分布式数据库组件节点众多,通常存在多个节点同时发生异常的情况,手动对每一个异常节点进行重新建链非常繁琐,业务开发成本高。

发明内容

本申请提供了一种数据库的预编译处理方法、装置、设备及介质,在分布式数据库节点异常时能够自动进行预编译链路重建,有效解决现有技术只能针对异常节点进行人工手动重建所导致的问题,简化了对异常节点进行重新建链的过程,提高异常节点的解决效率,降低业务开发成本。

第一方面,本申请提供了一种数据库的预编译处理方法,包括:

确定异常节点;

获取所述异常节点对应预设的预编译信息;

依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果。

可选的,所述确定异常节点,包括:

确定待检测节点和与所述待检测节点关联的预编译节点;

基于所述预编译节点,依据所述待检测节点对应的探活方式进行节点探活处理,得到所述待检测节点的探活结果;

若所述探活结果为节点异常结果,则将所述待检测节点确定为异常节点。

可选的,所述探活方式包含数据库语句探活方式,所述基于所述预编译节点,依据所述待检测节点对应的探活方式进行节点探活处理,得到所述待检测节点的探活结果,包括:

针对所述数据库语句探活方式,确定探活时间信息;

若所述探活时间信息符合预设的节点探活条件,则通过所述预编译节点向所述待检测节点发送探活语句信息;

判断是否在预设时间内接收到所述探活语句信息对应的响应信息;

若在所述预设时间内没有接收到所述响应信息,则将节点异常结果确定为所述探活结果。

可选的,所述探活方式还包含信号探活方式,所述基于所述预编译节点,依据所述待检测节点对应的探活方式进行节点探活处理,得到所述待检测节点的探活结果,包括:

针对所述信号探活方式,通过所述预编译节点接收所述待检测节点发送的预编译协议信号;

判断所述预编译协议信号是否为失败信号;

若所述预编译协议信号为所述失败信号,则确定所述待检测节点出现异常,将节点异常结果确定为所述探活结果。

可选的,所述预设编译信息包含预编译语句和链路标识,所述获取所述异常节点对应预设的预编译信息,包括:

从所述预编译节点中提取所述异常节点对应的预编译语句和链路标识;

基于所述预编译语句和所述链路标识,生成所述预编译信息。

可选的,所述异常节点包含目标计算节点,所述预编译节点包含与所述目标计算节点关联的链路驱动节点,所述依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果,包括:

所述链路驱动节点通过所述链路标识向所述目标计算节点发送所述预编译语句;

所述目标计算节点基于所述预编译语句进行预编译链路重建,得到所述预编译链路处理结果。

可选的,所述异常节点还包含目标存储节点,所述预编译节点还包含与所述目标存储节点关联的预编译计算节点,所述依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果,包括:

所述预编译计算节点基于所述预编译语句进行转换处理,得到目标预编译语句;

所述预编译计算节点通过所述链路标识向所述目标存储节点发送所述目标预编译语句;

所述目标存储节点基于所述目标预编译语句进行预编译链路重建,得到所述预编译链路处理结果。

可选的,所述异常节点还包含一级计算节点,所述预编译节点还包含与所述一级计算节点关联的二级计算节点,所述依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果,包括:

所述一级计算节点基于所述预编译语句进行转换处理,得到目标预编译语句;

所述一级计算节点通过所述链路标识向所述二级计算节点发送所述目标预编译语句;

所述二级计算节点基于所述目标预编译语句进行预编译链路重建,得到所述预编译链路处理结果。

可选的,所述获取异常节点对应预设的预编译信息之前,还包括:

确定用户针对所述预编译节点提交的预编译设置操作;

从所述预编译设置操作中提取用户预编译语句和用户链路标识;

将所述用户预编译语句和所述用户链路标识写入所述预编译节点。

第二方面,本申请提供了一种数据库的预编译处理装置,包括:

异常节点确定模块,用于确定异常节点;

预编译信息获取模块,用于获取所述异常节点对应预设的预编译信息;

预编译链路重建模块,用于依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果。

第三方面,本申请提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现如第一方面任一项实施例所述的数据库的预编译处理方法的步骤。

第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项实施例所述的数据库的预编译处理方法的步骤。

综上,本申请实施例通过确定异常节点,获取异常节点对应预设的预编译信息,依据预编译信息进行预编译链路重建,得到异常节点对应的预编译链路处理结果,从而可以在分布式数据库节点异常时能够自动进行预编译链路重建,有效解决现有技术只能针对异常节点进行人工手动重建所导致的问题,简化了对异常节点进行重新建链的过程,提高异常节点的解决效率,降低业务开发成本。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种数据库的预编译处理方法的流程示意图;

图2是本申请一个可选实施例提供的一种数据库的预编译处理方法的步骤流程示意图;

图3是本申请一个可选实施例提供的一种分布式数据库结构框图;

图4是本申请一个可选实施例提供的一种节点连接图;

图5是本申请一个可选实施例提供的一种业务应用端-计算节点的节点连接图;

图6是本申请一个可选实施例提供的一种多级计算节点连接图;

图7为本申请实施例提供的一种数据库的预编译处理装置的结构框图;

图8是本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

为便于对本申请实施例的理解,下面将结合附图以及具体实施例做进一步的解释说明,实施例并不构成对本申请实施例的限定。

图1为本申请实施例提供的一种数据库的预编译处理方法的流程示意图。如图1所示,本申请实施例提供的数据库的预编译处理方法具体可以包括如下步骤:

步骤110,确定异常节点。

具体的,异常节点可以包括计算节点、存储节点,本申请实施例对此不作限制。其中,计算节点可以不限于单层,如在分布式数据库领域中,计算节点可以有多层,在多层计算节点的组网中,计算节点可以包含上层计算节点和下层计算节点,本申请实施例对此也不作限制。具体而言,本申请实施例可以对计算节点和/或存储节点进行异常检测,将出现异常的计算节点和/或存储节点确定为异常节点。

步骤120,获取所述异常节点对应预设的预编译信息。

具体的,预编译信息可以包含预编译语句和链路标识,本申请实施例对此不作限制。其中,预编译语句可以是结构化查询语言(Structured Query Language,SQL),如可以是prepare-sql,本申请实施例对此不作限制。本申请实施例中诸如计算节点和存储节点可以有与其相关联的预编译节点,如与计算节点关联的预编译节点可以是链路驱动节点(也称链路驱动层,本申请实施例对此不作限制),与存储节点关联的预编译节点可以是计算节点,本申请实施例对此不作限制。预编译节点可以缓存有prepare预编译语句和链路标识,该链路标识可以用于确定预编译节点和异常节点之间的链路,本申请实施例对此也不作限制。

具体而言,本申请实施例确定异常节点后,可以确定与异常节点关联的预编译节点,以便可以从预编译节点中提取prepare预编译语句和链路标识,以作为异常节点对应预设的预编译信息。

例如,在异常节点为计算节点时,与计算节点关联的预编译节点可以是链路驱动节点,则可以从链路驱动节点中提取与计算节点对应的prepare预编译语句和链路标识。

步骤130,依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果。

具体的,预编译链路处理结果可以包含预编译链路重建成功结果和预编译链路重建失败结果,本申请实施例对此不作限制。具体而言,本申请实施例确定预编译信息后,可以依据预编译信息进行预编译链路重建,如可以通过与异常节点关联的预编译节点,利用链路标识向异常节点发送prepare预编译语句,异常,以针对异常的链路进行prepare协议单独重建,在预编译链路重建成功时,得到预编译链路重建成功结果,以作为预编译链路处理结果;在预编译链路重建失败时,得到预编译链路重建失败结果,以作为预编译链路处理结果。从而在分布式数据库节点异常时能够自动进行预编译链路重建,有效解决节点异常问题,提高异常节点的解决效率,提升分布式数据库的prepare预编译链路高可用性,开发人员无需考虑涉及prepare预编译重连代码,减少业务侧代码开发成本。

可见,本申请实施例通过确定异常节点,获取异常节点对应预设的预编译信息,依据预编译信息进行预编译链路重建,得到异常节点对应的预编译链路处理结果,从而可以在分布式数据库节点异常时能够自动进行预编译链路重建,有效解决现有技术只能针对节点异常进行人工手动重建所导致的问题,简化了对异常节点进行重新建链的过程,提高异常节点的解决效率,提升分布式数据库的prepare预编译链路高可用性,开发人员无需考虑涉及prepare预编译重连代码,减少业务侧代码开发成本。

参照图2,示出了本申请一个可选实施例提供的一种数据库的预编译处理方法的步骤流程示意图。该数据库的预编译处理方法具体可以包括如下步骤:

步骤210,确定待检测节点和与所述待检测节点关联的预编译节点。

具体的,待检测节点可以包含需要进行异常检测的计算节点和存储节点,本申请实施例对此不作限制。可以确定待检测节点和待检测节点关联的预编译节点,以便后续可以通过预编译节点检测待检测节点是否异常。

在具体实现中,本申请实施例提供的数据库的预编译处理方法可以应用于分布式数据库中,该数据库的预编译处理方法不仅可以用于实现业务链接驱动侧与分布式计算节点之间的prepare预编译链路保活重连机制,还可以用于实现分布式计算节点与分布式存储节点之间的prepare预编译链路保活重连机制。对于多层计算节点,如上层计算节点与下层计算节点,本申请实施例提供的数据库预编译处理方法还可以用于实现分布式计算节点之间的prepare预编译保活重连机制,即用于实现上层计算节点与下层计算节点之间的预编译链路保活重连机制,本申请实施例对此不作限制。

作为一个示例,参照图3,图3是分布式数据库结构框图,该分布式数据库结构可以包含计算节点、存储节点、管理节点以及全局事务管理节点。具体而言,计算节点可以负责接收来自业务应用系统的SQL请求,并将通过计算将SQL分发到对应的储存节点,然后接收/计算汇总储存节点处理结果返回给应用系统;全局事务管理节点可以用于负责生产/管理分布式事务全局唯一标识,并维护全局唯一标识列表,计算节点可以从全局事务管理节点获取/使用分布式事务全局唯一标识,从而保障分布式事务的ACID特性;存储节点用于负责存储数据的组件,业务的数据分布式储存在由多个存储节点组成的一个大的储存集群中;管理节点可以用于负责运维/管理计算节点、储存节点、全局事务管理节点的状态监控、高可用切换等,本示例对此不作限制。

步骤220,基于所述预编译节点,依据所述待检测节点对应的探活方式进行节点探活处理,得到所述待检测节点的探活结果。

具体的,探活方式可以包含数据库语句探活方式和信号探活方式,本申请实施例对此不作限制。具体而言,本申请实施例可以基于预编译节点,依据待检测节点对应的探活方式进行节点探活处理,得到待检测节点的探活结果,以便可以根据探活结果确定待检测节点是否异常,从而实现自动探活待检测节点,以在待检测节点出现异常时,自动进行预编译链路重建。

可选的,本申请实施例在探活方式包含数据库语句探活方式的情况下,上述基于所述预编译节点,依据所述待检测节点对应的探活方式进行节点探活处理,得到所述待检测节点的探活结果,具体可以包括以下子步骤:

子步骤2201,针对所述数据库语句探活方式,确定探活时间信息。

具体的,探活时间信息可以用于是否通过预编译节点向待检测节点发送探活语句,本申请实施例对此不作限制。具体而言,本申请实施例可以在探活方式为数据库语句探活方式时,确定探活时间信息,以通过探活时间信息确定是否通过预编译节点向待检测节点发送探活语句。

例如,预编译节点可以设定定时或实时对待检测节点进行探活,若设定定时对待检测节点进行探活,则可以确定探活时间信息,通过探活时间信息确定当前时间是否达到向待检测节点发送探活语句进行探活的时间;若设定实时对待检测节点进行探活,则可以确定探活时间,以便预编译节点可以根据探活时间信息向待检测节点发送探活语句进行探活。

子步骤2202,若所述探活时间信息符合预设的节点探活条件,则通过所述预编译节点向所述待检测节点发送探活语句信息。

具体的,本申请实施例可以预设节点探活条件,如预设的节点探活条件可以是预编译节点定时对待检测节点进行探活,或预编译节点实时对待检测节点进行探活,本申请实施例对此不作限制。探活语句信息可以包含探活语句,如探活语句可以是探活SQL,本申请实施例对此不作限制。具体而言,本申请实施例可以在探活时间符合节点探活条件时,通过预编译节点向待检测节点发送探活SQL,以确定待检测节点是否异常。

子步骤2203,判断是否在预设时间内接收到所述探活语句信息对应的响应信息。

具体的,本申请实施例中预编译节点向待检测节点发送探活SQL后,可以判断是否在预设时间内接收到待检测节点针对探活SQL反馈的响应信息,以便在预设时间内接收到响应信息时,确定待检测节点没有出现异常;在预设时间内没有接收到响应信息时,确定待检测节点出现异常。

子步骤2204,若在所述预设时间内没有接收到所述响应信息,则将节点异常结果确定为所述探活结果。

具体的,本申请实施例中预编译节点可以在预设时间内没有接收到待检测节点反馈的响应信息时,确定待检测节点出现异常,随后可以将节点异常结果确定为探活结果,通过定时或实时的方式对待检测节点进行探活,以便在待检测节点出现异常时,及时进行预编译链路重建。

可选的,本申请实施例中探活方式还包含信号探活方式,上述基于所述预编译节点,依据所述待检测节点对应的探活方式进行节点探活处理,得到所述待检测节点的探活结果,具体可以包括以下子步骤:

子步骤2205,针对所述信号探活方式,通过所述预编译节点接收所述待检测节点发送的预编译协议信号。

具体而言,本申请实施例可以在探活方式为信号探活方式时,通过待检测节点向预编译节点返回prepare预编译协议信号,以便预编译节点可以接收待检测节点发送的prepare预编译协议信号,进而根据预编译协议信号确定待检测节点是否出现异常。

子步骤2206,判断所述预编译协议信号是否为失败信号。

具体而言,本申请实施例预编译节点可以判断接收到的prepare预编译协议信号是否为失败信号,以便可以在预编译协议信号不为失败信号时,确定待检测节点没有出现异常;在预编译协议信号为失败信号时,确定待检测节点出现异常。

子步骤2207,若所述预编译协议信号为所述失败信号,则确定所述待检测节点出现异常,将节点异常结果确定为所述探活结果。

具体的,本申请实施例可以在预编译协议信号为失败信号时,确定待检测节点出现异常,将节点异常结果确定为探活结果。

步骤230,若所述探活结果为节点异常结果,则将所述待检测节点确定为异常节点。

具体的,本申请实施例可以在探活结果为节点异常结果时,将待检测节点确定为异常节点。

例如,参照图4,以业务应用端(即业务链接驱动侧)与计算节点之间的prepare预编译链路保活重连为例。假设业务应用端与计算节点之间的链路为链路A,业务应用端可以作为顶层保活重连机制,按照预设的探活方式对计算节点进行探活,如业务应用端可以定时向计算节点发送探活sql,在探活异常时,确定计算节点出现异常,以便后续可以发起预编译链路重建。或者,业务应用端可以接收计算节点返回的prepare预编译协议信号,以在prepare预编译协议信号为prepare预编译协议失败信号时,确定计算节点出现异常,以便后续可以发起预编译链路重建。

又如,参照图4,以计算节点与存储节点之间的prepare预编译链路保活重连为例。计算节点可以与多个存储节点构建prepare预编译链路,如计算节点可以分别与三个存储节点构建链路,计算节点可以作为中间层保活重连机制,按照预设的探活方式对存储节点进行探活,如计算节点可以定时向存储节点发送探活sql,在探活异常时,确定存储节点出现异常,以便后续可以发起预编译链路重建。或者,计算节点可以接收存储节点返回的prepare预编译协议信号,以在prepare预编译协议信号为prepare预编译协议失败信号时,确定存储节点出现异常,以便后续可以发起预编译链路重建。

步骤240,从所述预编译节点中提取所述异常节点对应的预编译语句和链路标识。

具体而言,本申请实施例中预编译节点可以预先缓存有prepare预编译语句及链路标识,如预编译节点为驱动链路层时,驱动链路层可以缓存有计算节点对应的prepare预编译语句及链路标识;又如预编译节点为计算节点时,计算节点可以缓存有存储节点对应的prepare预编译语句及链路标识;再如预编译节点为上层计算节点时,上层计算节点可以缓存有下层计算节点对应的prepare预编译语句及链路标识。

需要说明的是,在一些prepare-sql(即预编译语句)场景中,驱动层、计算节点层和存储节点层,可以缓存相同的prepare-sql,也可以缓存不同的prepare-sql。对于有上下层结构的计算节点,上层计算节点与下层计算节点区别可能在于缓存的prepare预编译语句不同,上层为父prepare-sql,下层为子prepare-sql。在一些sql场景中,上层计算节点和下层计算节点也可能会缓存相同的prepare-sql,本申请实施例对此不作限制。

在一个可选实施例中,本申请实施例获取异常节点对应预设的预编译信息之前,具体还可以包括:确定用户针对所述预编译节点提交的预编译设置操作;从所述预编译设置操作中提取用户预编译语句和用户链路标识;将所述用户预编译语句和所述用户链路标识写入所述预编译节点。

具体而言,诸如业务开发人员等用于可以通过预先构建的视图,通过业务层应用为预编译节点设置预编译语句和链路标识。

步骤250,基于所述预编译语句和所述链路标识,生成所述预编译信息。

具体的,本申请实施例可以基于预编译语句和链路标识,生成预编译信息

步骤260,依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果。

具体的,本申请实施例可以依据预编译信息进行预编译链路重建,得到预编译链路处理结果,从而能够提升分布式数据库的prepare预编译链路高可用性,解决分布式节点较多,节点发生异常概率较高以及prepare预编译链路容易失效的问题,减少业务侧代码开发成本,无需考虑设计prepare预编译重连代码,对业务应用侧是零代码侵入,不需要业务应用侧有多余的配合重连操作,减轻业务层代码开发成本和复杂度,通过使用分布式SQL的prepare预编译功能不仅可以提升并发性能,还可以防止SQL注入安全问题,有效解决现有技术只能针对节点异常进行人工手动重建所导致的问题。

在一个可选实施例中,本申请实施例在异常节点包含目标计算节点,预编译节点包含与目标计算节点关联的链路驱动节点的情况下,所述依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果,具体可以包括:所述链路驱动节点通过所述链路标识向所述目标计算节点发送所述预编译语句;所述目标计算节点基于所述预编译语句进行预编译链路重建,得到所述预编译链路处理结果。具体而言,在异常节点为目标计算节点时,可以通过与目标计算节点关联的链路驱动节点,利用链路标识向目标计算节点发送预编译语句,使得目标计算节点可以基于预编译语句进行预编译链路重建,得到预编译链路处理结果。

在具体实现中,链路驱动层可以通过负载均衡的方式同时搭载多个计算节点,在进行预编译链路重建时,链路驱动层可以精确针对某个异常的计算节点进行单独重建。例如,参照图5,链路驱动层可以通过链路A和链路B分别与两个计算节点连接,当A和B两条链路的prepare预编译协议同时存在异常,或者A、B两条链路中某条链路的prepare预编译协议存在异常时,可以针对异常的链路上的prepare协议单独重建。此时链路驱动层可以向计算节点发起的原生prepare-sql,即链路驱动层原来存储的prepare-sql,本示例对此不作限制。

在一个可选实施例中,本申请实施例在异常节点包含目标存储节点,预编译节点包含与目标存储节点关联的预编译计算节点的情况下,所述依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果,具体可以包括:所述预编译计算节点基于所述预编译语句进行转换处理,得到目标预编译语句;所述预编译计算节点通过所述链路标识向所述目标存储节点发送所述目标预编译语句;所述目标存储节点基于所述目标预编译语句进行预编译链路重建,得到所述预编译链路处理结果。具体而言,在异常节点为目标存储节点时,可以通过与目标存储节点关联的预编译计算节点对预编译语句进行转换处理,得到子预编译语句,如可以将一个较长、内容较为复杂的预编译语句进行简化为多个子预编译语句,以作为目标预编译语句,预编译计算节点可以利用链路标识向目标储存节点发送目标预编译语句,使得目标存储节点可以基于目标预编译语句进行预编译链路重建,得到预编译链路处理结果。

作为一个示例,参照图4,计算节点同时对接多个存储节点时,可以精确的针对某个异常的存储节点进行单独重建,如针对a、b、c三个prepare预编译协议链路中,某个链路出现异常时,计算节点可以只针对异常的链路重新创建prepare协议,此时计算节点可以将存储的prepare-sql转换为子prepare-sql,向存储节点发送子prepare-sql。当然,计算节点也可以不对存储的prepare-sql进行转换,可以直接将prepare-sql发送给存储节点。

在一个可选实施例中,本申请实施例在异常节点包含一级计算节点,预编译节点包含与一级计算节点关联的二级计算节点的情况下,所述依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果,具体可以包括:所述一级计算节点基于所述预编译语句进行转换处理,得到目标预编译语句;所述一级计算节点通过所述链路标识向所述二级计算节点发送所述目标预编译语句;所述二级计算节点基于所述目标预编译语句进行预编译链路重建,得到所述预编译链路处理结果。其中,一级计算节点可以是上层计算节点,二级计算节点可以是下层计算节点,上层计算节点可以作为下层计算节点的父节点,本申请实施例对此不作限制。

具体而言,在异常节点为二级计算节点时,可以通过与二级计算节点关联的一级计算节点对预编译语句进行转换处理,得到目标预编译语句,一级计算节点可以利用链路标识向二级计算节点发送目标预编译语句,使得二级计算节点可以基于目标预编译语句进行预编译链路重建,得到预编译链路处理结果,通过设置二级重连机制,使得计算节点不限于单层或多层,多层计算节点也能实现重新建链。

作为一个示例,参照图6,一级计算节点可以通过负载均衡的方式同时搭载多个二级计算节点,所有的计算节点均可以缓存相同的prepare预编译语句或不同的prepare预编译语句。在二级计算节点出现异常时,一级计算节点可以作为二级计算节点的父节点,向二级计算节点发送prepare预编译语句,重建该链路的prepare预编译协议。

综上,本申请实施例通过确定待检测节点和与待检测节点关联的预编译节点,以基于预编译节点,依据待检测节点对应的探活方式进行节点探活处理,得到待检测节点的探活结果,在探活结果为节点异常结果时,将待检测节点确定为异常节点,随后从预编译节点中提取异常节点对应的预编译语句和链路标识,基于预编译语句和链路标识,生成预编译信息,进而依据预编译信息进行预编译链路重建,得到异常节点对应的预编译链路处理结果,从而能够在分布式数据库节点异常时能够自动进行预编译链路重建,提升分布式数据库的prepare预编译链路高可用性,解决分布式节点较多,节点发生异常概率较高以及prepare预编译链路容易失效的问题,减少业务侧代码开发成本,无需考虑设计prepare预编译重连代码,有效解决现有技术只能针对节点异常进行人工手动重建所导致的问题。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。

如图7所示,本申请实施例还提供了一种数据库的预编译处理装置700,包括:

异常节点确定模块710,用于确定异常节点;

预编译信息获取模块720,用于获取所述异常节点对应预设的预编译信息;

预编译链路重建模块730,用于依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果。

可选的,所述异常节点确定模块710,包括:

待检测节点和预编译节点确定子模块,用于确定待检测节点和与所述待检测节点关联的预编译节点;

探活处理子模块,用于基于所述预编译节点,依据所述待检测节点对应的探活方式进行节点探活处理,得到所述待检测节点的探活结果;

异常节点确定子模块,用于在所述探活结果为节点异常结果时,则将所述待检测节点确定为异常节点。

可选的,所述探活方式包含数据库语句探活方式,所述探活处理子模块,包括:

探活时间信息确定单元,用于针对所述数据库语句探活方式,确定探活时间信息;

探活语句信息发送单元,用于在所述探活时间信息符合预设的节点探活条件时,通过所述预编译节点向所述待检测节点发送探活语句信息;

判断单元,用于判断是否在预设时间内接收到所述探活语句信息对应的响应信息;

探活结果确定单元,用于在所述预设时间内没有接收到所述响应信息,则将节点异常结果确定为所述探活结果。

可选的,所述探活方式还包含信号探活方式,所述探活处理子模块,包括:

预编译协议信号发送单元,用于针对所述信号探活方式,通过所述预编译节点接收所述待检测节点发送的预编译协议信号;

判断单元,用于判断所述预编译协议信号是否为失败信号;

探活结果确定单元,用于在所述预编译协议信号为所述失败信号时,则确定所述待检测节点出现异常,将节点异常结果确定为所述探活结果。

可选的,所述预设编译信息包含预编译语句和链路标识,,所述预编译信息获取模块720,包括:

提取子模块,用于从所述预编译节点中提取所述异常节点对应的预编译语句和链路标识;

生成子模块,用于基于所述预编译语句和所述链路标识,生成所述预编译信息。

可选的,所述异常节点包含目标计算节点,所述预编译节点包含与所述目标计算节点关联的链路驱动节点,所述预编译链路重建模块730具体用于通过所述链路标识向所述目标计算节点发送所述预编译语句;基于所述预编译语句进行预编译链路重建,得到所述预编译链路处理结果。

可选的,所述异常节点还包含目标存储节点,所述预编译节点还包含与所述目标存储节点关联的预编译计算节点,所述预编译链路重建模块730具体用于基于所述预编译语句进行转换处理,得到目标预编译语句;通过所述链路标识向所述目标存储节点发送预编译语句;基于所述目标预编译语句进行预编译链路重建,得到所述预编译链路处理结果。

可选的,所述异常节点还包含一级计算节点,所述预编译节点还包含与所述一级计算节点关联的二级计算节点,所述预编译链路重建模块730具体用于所述一级计算节点基于所述预编译语句进行转换处理,得到目标预编译语句;所述一级计算节点通过所述链路标识向所述二级计算节点发送所述目标预编译语句;所述二级计算节点基于所述目标预编译语句进行预编译链路重建,得到所述预编译链路处理结果。

可选的,所述数据库的预编译处理装置700,还包括:

预编译设置操作确定模块,用于确定用户针对所述预编译节点提交的预编译设置操作;

提取模块,用于从所述预编译设置操作中提取用户预编译语句和用户链路标识;

写入模块,用于将所述用户预编译语句和所述用户链路标识写入所述预编译节点。

需要说明的是,本申请实施例提供的数据库的预编译处理装置可执行本申请任意实施例所提供的数据库的预编译处理方法,具备执行方法相应的功能和有益效果。

在具体实现中,上述数据库的预编译处理装置可以集成在设备中,使得该设备可以针对异常节点进行预编译链路重建,作为电子设备,实现在分布式数据库节点异常时能够自动进行预编译链路重建。该电子设备可以是由两个或多个物理实体构成,也可以是一个物理实体构成,如电子设备可以是个人计算机(Personal Computer,PC)、电脑、服务器等,本申请实施例对此不作具体限制。

如图8所示,本申请实施例提供提供了一种电子设备,包括处理器111、通信接口112、存储器113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信;存储器113,用于存放计算机程序;处理器111,用于执行存储器113上所存放的程序时,实现前述任意一个方法实施例提供的数据库的预编译处理方法的步骤。示例性的,数据库的预编译处理方法的步骤可以包括如下步骤:确定异常节点;获取所述异常节点对应预设的预编译信息;依据所述预编译信息进行预编译链路重建,得到所述异常节点对应的预编译链路处理结果。

本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任意一个方法实施例提供的数据库的预编译处理方法的步骤。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号