掌桥专利:专业的专利平台
掌桥专利
首页

一种数据处理系统、方法、电子设备及存储介质

文献发布时间:2023-06-19 18:37:28


一种数据处理系统、方法、电子设备及存储介质

技术领域

本发明涉及计算机处理技术领域,尤其涉及一种数据处理系统、方法、电子设备及存储介质。

背景技术

现阶段,随着企业综合管理水平的提高和信息化建设的深入展开,企业也会因为业务需求、采购等原因,不仅在业务上有着新、旧数据库并行运行的需求,还存在在新数据库和旧数据库之间切换业务主库的需求,业务主库是指企业的服务运行时,为其提供数据读、写功能的数据库。如何解决这些问题已成为越来越被关注的话题。

现有技术中,在切换业务主库时,通过需要手动变更企业服务的配置文件,实现企业服务连接到新的数据库。但是这种方法在每次修改业务主库时,均需要手工修改配置,容易造成人工失误,或者因为数据库硬切换,导致数据出现错乱等问题。

发明内容

本发明提供了一种数据处理系统、方法、电子设备及存储介质,以实现保证数据同步的实时性,提高更换业务主库的便捷性,进而保证数据处理的稳定性,达到提高客户使用体验的技术效果。

根据本发明的一方面,提供了一种数据处理系统,该系统包括:主服务端、与所述主服务端相通信的至少一个子服务端;所述子服务端中包括至少一个待使用数据库;其中,

所述主服务端,用于在接收到数据同步请求时,将所述数据同步请求中的同步请求参数发送至所述至少一个子服务端;其中,所述同步请求参数中包括源数据库标识;

所述至少一个子服务端,用于在接收到所述同步请求参数时,基于将与所述同步请求参数对应的源数据库中的待同步数据,发送至所述至少一个待使用数据库,以在所述至少一个待使用数据库数据同步后,基于业务主数据库进行业务数据处理;

其中,所述业务主数据库是基于所述一致性协议确定的,所述一致性协议中包括至少一项主库选取配置规则。

根据本发明的另一方面,提供了一种数据处理方法,应用于主服务端、与所述主服务端相通信的至少一个子服务端;所述子服务端中包括至少一个待使用数据库;该方法包括:

基于所述主服务端在接收到数据同步请求时,将所述数据同步请求中的同步请求参数发送至所述至少一个子服务端;其中,所述同步请求参数中包括源数据库标识;

基于所述至少一个子服务端在接收到所述同步请求参数时,基于将与所述同步请求参数对应的源数据库中的待同步数据,发送至所述至少一个待使用数据库,以在所述至少一个待使用数据库数据同步后,基于业务主数据库进行业务数据处理;

其中,所述业务主数据库是基于所述一致性协议确定的,所述一致性协议中包括至少一项主库选取配置规则。

根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的数据处理方法。

根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的数据处理方法。

本发明实施例的技术方案,通过主服务端在接收到数据同步请求时,将数据同步请求中的同步请求参数发送至至少一个子服务端;通过至少一个子服务端在接收到同步请求参数时,基于将与同步请求参数对应的源数据库中的待同步数据,发送至至少一个待使用数据库,以在至少一个待使用数据库数据同步后,基于根据一致性协议确定的业务主数据库进行业务数据处理,解决了现有技术中人工更改业务主库配置信息,导致服务连接新业务主库效率低,且成本高,数据稳定差的问题,实现了通过主服务端向至少一个子服务端发送同步请求参数,以使各子服务端在接收到同步请求参数时,将与同步请求参数对应的源数据库中的待同步数据发送至至少一个待使用数据库,保证数据同步的实时性,同时通过包含主库选取配置规则的一致性协议确定业务主数据库,在数据库接收到消息时进行切换,提高更换业务主库的便捷性,保证数据处理的稳定性,达到提高客户使用体验的技术效果。

应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。

附图说明

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

图1是根据本发明实施例一提供的一种数据处理系统的结构示意图;

图2是根据本发明实施例一提供的一种数据处理系统的结构示意图;

图3是根据本发明实施例一提供的一种数据处理系统的结构示意图;

图4根据本发明实施例二所提供的数据处理系统的示意图;

图5是根据本发明实施例二所提供的数据迁移流程示意图;

图6是根据本发明实施例三提供的一种数据处理方法的流程图;

图7是实现本发明实施例的数据处理方法的电子设备的结构示意图。

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例一

图1是根据本发明实施例一提供的一种数据处理系统的结构示意图,本实施例可适用于数据迁移以及切换主库的情况,参考图1,本实施例提供的数据处理系统包括:主服务端110、与主服务端110相通信的至少一个子服务端120;子服务端120中包括至少一个待使用数据库。下面对本实施例的数据处理系统的结构组成进行具体的说明。

主服务端110,用于在接收到数据同步请求时,将数据同步请求中的同步请求参数发送至至少一个子服务端120;其中,同步请求参数中包括源数据库标识;

至少一个子服务端120,用于在接收到同步请求参数时,基于将与同步请求参数对应的源数据库中的待同步数据,发送至至少一个待使用数据库,以在至少一个待使用数据库数据同步后,基于业务主数据库进行业务数据处理。

其中,每个子服务端120中均可以包括至少一个待使用数据库,每个待使用数据库的数据库类型可以相同,也可以不同,例如,待使用数据库可以为MySQL、Oracle、SQLServer、SQLite、NoSQL等中任意类型的数据库,在此不对数据库的类型一一进行赘述。数据同步请求可以为请求数据进行同步的程序和代码。源数据库标识可以用于表征源数据库的唯一性,源数据库是指需要将其数据备份至其他数据库的数据库,以实现源数据库与其他数据库之间数据同步。业务主数据库是指用于提供数据读、写功能的数据库,业务主数据库有别于其他并行运行的只进行数据同步但不提供读、写功能的数据库。业务主数据库是基于一致性协议确定的。例如,一致性协议的类型可以为Raft分布式一致协议,也可以为ZAB分布式一致协议。一致性协议中包括至少一项主库选取配置规则。主库选取配置规则可以理解为选取业务主数据库的方法,如基于数据库的服务器负载能力选取业务主数据库的方法,或者,基于数据库的存储空间选取业务主数据库的方法等等。待同步数据是指需要被同步至其他数据库的数据,可以为源数据库中存储的服务数据。

在本实施例中,可以在主服务端110接收到数据同步请求时,通过对数据同步请求进行解析,得到数据同步请求中包含的同步请求参数,并将同步请求参数发送至至少一个子服务端120。在服务端接收到同步请求参数时,可以将与源数据库标识相对应的待使用数据库作为源数据库,进而将源数据库中的待同步数据同步至其他待使用数据库中,实现数据同步。在数据同步后,可以基于一致性协议确定的业务主数据库进行数据处理;或者,也可以在待使用数据库与源数据库之间的数据差异小于一定阈值时,基于业务主数据库进行数据处理。需要说明的是,为了提高数据响应效率,在数据同步完成之前,可以将源数据库作为业务主数据库,并基于该业务主数据库进行业务处理,例如,在将与源数据库标识相对应的待使用数据库作为源数据库时,可以将源数据库暂时作为业务主数据库,后续当业务主数据库出现异常,或者,存在主库切换需求时,可以基于一致性协议中各项主库选取配置规则选择新的数据库作为业务主数据库,实现能够在不同数据库间进行业务主库切换的效果。

本发明实施例通过主服务端在接收到数据同步请求时,将数据同步请求中的同步请求参数发送至至少一个子服务端;通过至少一个子服务端在接收到同步请求参数时,基于将与同步请求参数对应的源数据库中的待同步数据,发送至至少一个待使用数据库,以在至少一个待使用数据库数据同步后,基于根据一致性协议确定的业务主数据库进行业务数据处理,解决了现有技术中人工更改业务主库配置信息,导致服务连接新业务主库效率低,且成本高,数据稳定差的问题,实现了通过主服务端向至少一个子服务端发送同步请求参数,以使各子服务端在接收到同步请求参数时,将与同步请求参数对应的源数据库中的待同步数据发送至至少一个待使用数据库,保证数据同步的实时性,同时通过包含主库选取配置规则的一致性协议确定业务主数据库,在数据库接收到消息时进行切换,提高更换业务主库的便捷性,保证数据处理的稳定性,达到提高客户使用体验的技术效果。

在上述实施例的基础上,参考图2,图2为本发明实施例一提供的一种数据处理系统的结构示意图,主服务端110中包括:请求代理模块1101和发布模块1102;其中,

请求代理模块1101,用于在接收到数据同步请求时,将数据同步请求中的同步请求参数发送至发布模块1102;

发布模块1102中包括与同步请求类型相对应的主同步订阅单元;发布模块1102,用于基于主同步订阅单元将同步请求参数发送至至少一个子服务端120。

其中,主同步订阅单元可以理解为订阅(Subscriber)的话题(Topic),在实际应用中,消息发布方与消息订阅方处于同一话题下,可通过话题传递消息,无需再进行IP及端口等配置,也无需应用动态地调整发送或者接收方的IP或端口。例如,可以通过Apache Kafka或Google PubSub创建对话题的订阅,创建订阅后,发布到该话题的消息可用于订阅者应用程序,订阅将话题连接到订阅者应用程序,订阅者应用程序可接收和处理发布到话题的消息。

在本实施例中,可以通过请求代理模块1101接收数据同步请求,并将数据同步请求中的同步请求参数发送至发布模块1102,进一步的,发布模块1102通过主同步订阅单元将同步请求参数发出,发到各子服务端120。示例性的,数据同步请求可以由开发人员发出,由请求代理模块1101接收,数据同步请求中包含哪一数据库为源数据库的信息,即源数据库标识,以便与源数据库标识对应的源数据库可以对其他数据库发起数据同步。请求代理模块1101接收到数据同步类的请求时,可以将源数据库标识通过主同步订阅单元经由发布模块1102发出,以使被处于同一话题下的子同步订阅单元接收。

在上述实施例的基础上,参考图3,图3为本发明实施例一提供的一种数据处理系统的结构示意图,至少一个子服务端120中包括:接收模块1201和数据一致性模块1202;其中,接收模块1201中包括与同步请求类型相对应的子同步订阅单元;

接收模块1201,用于将基于子同步订阅单元接收的同步请求参数发送至数据一致性模块1202;

数据一致性模块1202,用于确定与同步请求参数相对应的源数据库,并将源数据库中的待同步数据发送至同步消息队列中,并将同步消息队列中的队列同步数据发送至至少一个待使用数据库,以使至少一个待使用数据库数据同步。

其中,子同步订阅单元与主同步订阅单元所处同一话题下,可以接收和处理发布到话题的消息。同步消息队列可以为线性表,例如,可在表的前端(即队头)进行删除消息操作,在表的后端(即队尾)进行插入消息操作。

在实际应用中,接收模块1201可以通过子同步订阅单元接收同步请求参数,并将同步请求参数发送至数据一致性模块1202。进一步的,数据一致性模块1202在接收到同步请求参数后,可以确定与同步请求参数(源数据库标识)相对应的待使用数据库作为源数据库,进而可以将源数据库中的待同步数据发送至同步消息队列中。例如,可以将表征待同步数据的消息依次传输同步消息队列,由同步消息队列按导入顺序依次导出至区别于源数据库的其他数据库,实现各数据库之间的数据同步。示例性的,各个子服务端120上的数据一致性模块1202可通过子同步订阅单元话题接收指定的源数据库配置(即源数据库标识),与源数据库标识相对应的源数据库子服务端120上的数据一致性模块1202可将其角色切换为源数据库,同时可将源数据库作为业务主数据库。进一步的,可将源数据库中的数据(即待同步数据)导出到SQL文件中,并将SQL文件中的所以SQL语句加入到同步消息队列中,以使依次向其他数据库同步数据。

需要说明的是,如果当哪个数据一致性模块1202收到子同步订阅单元发来的新的需要执行的SQL时,可以将该SQL内容追加到同步消息队列的尾部。为了防止消息队列中的数据内容过多,导致业务主数据库需要花费过长时间等待其他备库同步并处理消息队列中的消息,无法进行最新业务请求的处理的情况的发生,可以在数据同步的过程中,基于一致性协议使业务主数据库在收到需要处理的消息后,可直接将处理后的响应数据返回至客户端,无需等待其他数据库数据同步应答。其他数据库可通过同步消息队列收到数据后,将收到的数据存储在自身数据库。

可选的,请求代理模块1101,还用于在接收到主库切换请求时,将主库切换请求中的切换请求参数发送至发布模块1102;其中,切换请求参数中包括原主库标识和新主库标识;

发布模块1102中还包括与切换请求类型相对应的主切换订阅单元;发布模块1102,用于基于主切换订阅单元将切换请求参数发送至至少一个子服务端120。

其中,主库切换请求可以为用于请求切换业务主数据库的程序和代码。原主库标识可以用于表征原主库的唯一性。原主库是指未切换主数据库时的业务主数据库。新主库标识可以用于表征新主库的唯一性。新主库是指待切换为主数据库的业务主数据库。例如,假设欲将业务主数据库由数据库A更换为数据库B,数据库A即为原主库,数据库B为新主库。

在本实施例中,可以通过请求代理模块1101接收主库切换请求,并对主库切换请求进行解析,得到主库切换请求中包含的切换请求参数,并将切换请求参数发送至发布模块1102。进一步的,发布模块1102通过主切换订阅单元将切换请求参数发出,发到各子服务端120。示例性的,主库切换请求可以是由开发人员发出的,由请求代理模块1101接收,该主库切换请求中包含欲切换为业务主数据库的数据库信息(即新主库标识),以使与主库标识对应的数据库在获悉后切换至业务主数据库。例如,请求代理模块1101接收到主库切换类的请求时,可以将原主库标识和新主库标识通过主切换订阅单元话题经由发布模块1102发出,以使被处于同一话题下的子切换订阅单元接收。

可选的,接收模块1201中还包括与切换请求类型相对应的子切换订阅单元;

接收模块1201,用于将基于子切换订阅单元接收的切换请求参数发送至数据一致性模块1202;

数据一致性模块1202,用于将切换请求参数发送至当前同步消息队列中,并将同步消息队列中的切换请求参数分别发送至与切换请求参数相对应的原主数据库和新主数据库,以使将新主数据库切换为业务主数据库,以及使根据一致性协议控制在与距离接收时刻达到预设时长时,将原主数据库切换为待同步数据库。

其中,接收时刻与原主数据库接收到切换请求参数的时刻相对应。一致性协议中包括保留原主数据库的数据读写权限的时长,即预设时长。

在实际应用中,接收模块1201可以通过子切换订阅单元接收切换请求参数,并将切换请求参数发送至数据一致性模块1202。进一步的,数据一致性模块1202在接收到切换请求参数后,可以将切换请求参数发送至当前同步消息队列的尾端,如果当前同步消息队列中存在需要同步的消息数据,可以按同步消息队列中消息的次序进行依次发送。在数据同步后,将切换请求参数发送至与原主库标识相对应的原主数据库,以及与新主库标识相对应的新主数据库,并将新主数据库切换为业务主数据库。为了保证数据处理的准确性和稳定性,以及满足客户端服务需求,可以在切换新旧主数据库时,基于一致性协议控制在距离原数据库接收到切换请求参数的时刻之后的时间达到预设时长时,再将原主数据库切换为待同步数据库,此时原主数据库仅可进行数据同步,不具备数据读写功能。

可选的,请求代理模块1101,还用于获取与主服务端110相通信的至少一个业务端发送的数据处理请求,并将与数据处理请求对应的数据处理指令发送至发布模块1102;

发布模块1102中包括与处理请求类型相对应的主处理订阅单元;发布模块1102,用于基于主处理订阅单元将数据处理指令发送至至少一个子服务端120。

其中,业务端可以为客户端。数据处理请求可以为用于请求进行业务处理的程序或代码,例如,数据处理请求可以为数据库读写请求。数据处理指令可以为SQL语句。

在实际应用中,可以通过请求代理模块1101接收业务端所发送的数据处理请求,并对数据处理请求进行解析,得到数据处理请求所对应的数据处理指令,并将数据处理指令发送至发布模块1102。进一步的,发布模块1102通过主处理订阅单元将数据处理指令发出,发到各子服务端120。示例性的,数据处理请求可以为服务业务端发出的,由请求代理模块1101接收,该数据处理请求中包含了数据库的读、写操作对应的SQL语句。请求代理模块1101接收到数据处理类的请求时,可将SQL语句通过主处理订阅单元话题经由发布模块1102发出,以使被处于同一话题下的子处理订阅单元接收。

需要说明的是,在实际应用中,每个待使用数据库的数据类型可能是不同的,如果将某一数据库类型的SQL语句输入至另一数据库类型的数据库时,该数据库可能不支持前一类的SQL语句,此时可以通过对SQL语句进行语句转换,以使转换后的SQL语句可以被输入至的数据库所支持。

可选的,继续参见图3,至少一个子服务端120中还包括:语句转换模块1203;

接收模块1201中还包括与处理请求类型相对应的子处理订阅单元;接收模块1201,用于将基于子处理订阅单元接收的数据处理指令发送至数据一致性模块1202;

数据一致性模块1202,用于将数据处理指令发送至当前同步消息队列中,并基于一致性协议将同步消息队列中的数据处理指令发送至语句转换模块1203;

语句转换模块1203,用于将数据处理指令转换为与业务主数据库相对应的数据处理语句,并将数据处理语句发送至业务主数据库,以使业务主数据库基于数据处理语句进行业务数据处理。

其中,语句转换模块1203可用于SQL语句的转换,如将输入的某一类型SQL语句转换为另一类型数据库支持的SQL语句。

在实际应用中,接收模块1201可以通过子处理订阅单元接收数据处理指令,并将数据处理指令发送至数据一致性模块1202。进一步的,数据一致性模块1202在接收到数据处理指令后,可以将数据处理指令发送至当前同步消息队列的尾端,如果当前同步消息队列中存在需要同步的消息数据,可以基于一致性协议控制将数据处理指令发送至语句转换模块1203。语句转换模块1203可以利用转换组件(如SOCI工具)将数据处理指令转换为与业务主数据库的数据库类型相对应的数据处理语句,并将数据处理语句发送至业务主数据库,以使业务主数据库执行该数据处理语句进行数据处理,同时业务主数据库处理后的响应数据可直接返回至业务端,提高用户体验。

需要说明的是,为了提高数据处理的效率,保证数据处理的正常性进行,防止出现因业务主数据库出现故障时,数据处理效率低的现象发生,可以在业务主数据库发生故障时,重新选取性能高的数据库作为业务主数据库,以提高数据处理的及时性。

可选的,主服务端110,还用于在检测到业务主数据库反馈的故障信号时,向至少一个子服务端120发送主库更换消息;

至少一个子服务端120,用于在接收到主库更换消息时,基于一致性协议暂停执行将待同步数据发送至至少一个待使用数据库的操作,并基于至少一项主库选取配置规则,确定目标数据库,并将目标数据库切换为业务主数据库。

其中,故障信号可以用于表征bug,如内存崩溃、数据库连接异常、接入数据异常等等。主库更换消息是指更换业务主数据库的请求。

在实际应用中,主服务端110可通过检测子服务端120中的业务主数据库的运行情况,当业务主数据库出现异常时,可以认为接收到了业务主数据库反馈的故障信号,此时可以向各子服务端120发送主库更换消息。各子服务端120在接收到主库更换消息时,可启动一致性协议暂停执行将待同步数据发送至至少一个待使用数据库的操作,以免出现数据处理处理情况。并重新选取新的业务主数据库,如根据主库选取配置规则,选取新的数据库作为目标数据库,并将目标数据库切换为业务主数据库。例如,假设,主库选取配置规则为推举服务端稳定、内存空间大的待使用数据库作为业务主数据库,则可以在各待使用数据库处于并行运行模式时,将服务端稳定、内存空间大的待使用数据库作为业务主数据库。示例性的,请求代理模块1101可将主库更换消息类的请求通过“并行运行”话题经由发布模块1102发出至各子服务端120。各子服务端120上的数据一致性模块1202可通过“并行运行”话题收到主库更换消息,当前的业务主数据库与其他数据库均结束数据同步的行为(如果处于数据同步阶段),全部遵循一致性协议的运行规则,进行业务主数据库选举以及多数派同步。除选举为业务主数据库之外的其他数据库服务端可依据一致性协议,不执行任何操作或者进行一个周期的抑制成为业务主数据库的操作。

需要说明的是,为了提高数据处理的安全性和快捷性,可以通过构建分布式数据库集群的方式,将满足条件的数据库加入到分布式数据库集群中,以使实现多数据库数据同步,同时基于语句转换模块1203能够支持将各类型数据库加入到分布式数据库集群中,实现各种异构数据库的之间的信息交互。

可选的,还包括:主服务端110,用于获取待接入数据库信息,并将待接入数据库信息发送至至少一个子服务端120;其中,待接入数据库信息中包括至少一个待接入数据库;

至少一个子服务端120,用于在接收到至少一个待接入数据库时,基于一致性协议建立至少一个子服务端120与各待接入数据库所对应的子服务端120之间的网络连接,以使在建立网络连接之后,各子服务端120所对应的至少一个待使用数据库进行数据同步。

其中,待接入数据库可以为需要接入集群网络中的数据库。

需要说明的是,各个待使用数据库的子服务端120上的数据一致性模块1202在第一次启动时处于“空闲”状态(第一次启动的时机是指未经初始化配置的第一次启动的时机)。此时由于主服务端110未获取到用户配置的分布式集群的成员情况信息(可为待接入数据库),各子服务端120之间未互通信,可通过各自发布模块1102完成话题的订阅,此时不处理除“初始化”话题外的任何消息(如数据同步、切换主库等)。各个子服务端120上的数据一致性模块1202可通过“初始化”话题接收到分布式集群成员配置信息后,进而将信息存储到本地,启动分布式一致性协议,分布式一致性协议可根据配置信息建立网络连接,进而组建成分布式数据库集群。在构建分布式数据库集群之后,进入分布式数据库集群中的各个子服务端120可通过一致性协议等待处理“数据同步”和“数据库并行运行”话题的消息。在后续存在其他数据库接入至分布式数据库集群时,可基于一致性协议建立该数据库子服务端120与分布式数据库集群中各子服务端120网络连接。

在实际应用中,可以当主服务端110接收到待接入数据库信息,解析待接入数据库信息,得到至少一个待接入数据库,将各待接入数据库发送至已在数据库集群中的各子服务端120和各待接入数据库子服务端120。在各子服务端120接收到待接入数据库信息时,启动一致性协议,建立各子服务端120之间的网络连接,以使在建立网络连接之后,各子服务端120所对应的至少一个待使用数据库进行数据同步,以及主库异常时切换主库的操作。

示例性的,集群构建请求可以由开发人员发出,由请求代理模块1101接收,集群构建请求中包含分布式数据库集群的成员构成信息。请求代理模块1101接收到此类请求时,将成员构成信息通过“初始化”话题经由发布模块1102发出,以使数据一致性模块1202根据成员构成信息自行建立网络连接,以便组建分布式数据库集群。各个子服务端120上的数据一致性模块1202可通过“初始化”话题接收到分布式集群成员配置信息,进而将信息存储到本地,启动一致性协议,一致性协议将根据配置信息建立网络连接,进而组建成分布式数据库集群。

需要说明的是,为了保证数据库之间的数据同步、并行运行、业务主库切换的顺利执行,每个子服务端120所对应的一致性协议均相同。

本实施例的技术方案,通过采用将旧数据库与若干不同类型的新数据库组建为一个分布式异构数据库集群的方式,实现数据库间数据同步、新旧数据库并行运行以及在各个数据库间切换业务主库,在少量占用服务器资源的情况下,能够实现极高实时性的数据同步。同时在业务主数据库切换时,不会造成数据错乱的问题,保证数据稳定性,能够在不修改配置文件的情况下,简单、快速地切换业务主库,提高业务主库切换的便捷性,减少成本。

实施例二

作为上述实施例的一可选实施例,图4根据本发明实施例二所提供的数据处理系统的示意图。具体的,可以参见下述具体内容。

参见图4,本技术方案可以通过主服务端110、与主服务端110相通信的至少一个子服务端120、子服务端120中的至少一个待使用数据库共同实现。其中,主服务端110上部署请求代理模块1101以及发布模块1102。在各子服务端120上部署有接收模块1201、数据一致性模块1202、语句转换模块1203。请求代理模块1101,用于接收来自客户端服务的数据库读、写请求,以及由开发人员发出的业务主库切换等操作请求,并将请求转发给各子服务端120上的数据库一致性模块。发布模块1102(同接收模块1201)用于使请求代理模块1101与各数据一致性模块1202进行通信。消息发布方与消息订阅方处于同一话题下,即可完成消息传输,无需再进行IP及端口等配置,也无需应用动态地调整发送或者接收对象的IP或端口,简化应用的消息传输的配置、发现流程,进而能够简化发消息给全体、发消息给特定数据库的动作,提高数据处理效率。数据一致性模块1202,用于各个待使用数据库间的数据同步,以及在各个待使用数据库间实现业务主库切换。数据一致性模块1202可基于分布式一致性协议,例如Raft、ZAB等分布式一致协议。分布式一致性协议为其提供分布式系统基础的运行框架,能够辅助完成数据库间的数据同步、并行运行、业务主库切换的工作。数据一致性模块1202可包含四种状态,分别为:空闲、初始化、数据同步、并行运行。这四种状态的数据迁移流程如图5所示。空闲状态只能向初始化状态迁移,初始化状态可以向数据迁移或并行运行状态迁移,数据迁移状态可以向并行运行状态迁移,并行运行状态属于稳定的运行状态,不进行迁移。需要说明的是,各个子服务端120上的数据一致性模块1202在第一次启动时处于“空闲”状态(第一次启动的时机有别于刚启动、重新启动的时机,特指未经初始化配置的第一次启动的时机),由于未获取到用户配置的分布式集群成员情况信息,因此需要等待下一步的用户指令。此时的数据一致性模块1202未启动分布式一致性协议,仅可通过发布模块1102完成所有话题的订阅,此时不处理除“初始化”话题外的任何消息。进一步的,可以由开发人员发出集群构建请求,即初始化操作请求,由请求代理模块1101接收集群构建请求,集群构建请求中包含分布式数据库集群的成员构成信息。请求代理模块1101接收到此类请求时,将成员构成信息通过“初始化”话题经由发布模块1102发出,以使数据一致性模块1202根据成员构成信息自行建立网络连接,以便组建分布式数据库集群。各个子服务端120上的数据一致性模块1202可通过“初始化”话题接收到分布式集群成员配置信息,进而将信息存储到本地,启动一致性协议,一致性协议将根据配置信息建立网络连接,进而组建成分布式数据库集群。此时仅是完成集群的建立,不进行业务主库的选取等后续工作,数据一致性模块1202进入“初始化”状态。此时不处理除“数据同步”和“并行运行”话题外的任何消息。开始数据同步的请求可以由开发人员发出,由请求代理模块1101接收,数据同步请求中包含哪一数据库为源数据库的信息,即源数据库标识,以便与源数据库标识对应的源数据库可以对其他数据库发起数据同步。请求代理模块1101接收到数据同步类的请求时,可以将源数据库标识通过主同步订阅单元话题经由发布模块1102发出,以使被处于同一话题下的子同步订阅单元接收。各个子服务端120上的数据一致性模块1202可通过子同步订阅单元话题接收指定的源数据库配置(即源数据库标识),与源数据库标识相对应的源数据库子服务端120上的数据一致性模块1202可将其角色切换为源数据库,同时可将源数据库作为业务主数据库。进一步的,可将源数据库中的数据(即待同步数据)导出到SQL文件中,并将SQL文件中的所以SQL语句加入到同步消息队列中,如果当哪个数据一致性模块1202收到子同步订阅单元发来的新的需要执行的SQL时,可以将该SQL内容追加到同步消息队列的尾部。为了防止消息队列中的数据内容过多,导致业务主数据库需要花费过长时间等待其他备库同步并处理消息队列中的消息,无法进行最新业务请求的处理的情况的发生,可以在数据同步的过程中,基于一致性协议使业务主数据库在收到需要处理的消息后,可直接将处理后的响应数据返回至客户端,无需等待其他数据库数据同步应答。其他数据库可通过同步消息队列收到数据后,将收到的数据存储在自身数据库,并根据业务主库的提交情况处理数据并提交。在数据同步之后,可以由开发人员发出开始并行运行的请求,该请求无参数。请求代理模块1101接收到此类请求时,可将请求通过“并行运行模式”话题经由发布模块1102发出至各子服务端120,以使各子服务端120上的待使用数据库并行运行。各个子服务端120上的数据一致性模块1202可通过“并行运行”话题收到并行运行消息,当前的业务主库与其他数据库均结束数据同步模式下的行为,全部遵循一致性协议的运行规则,可进行业务主库选举以及多数派同步。如果各子服务端120上的数据一致性模块1202收到主库切换类的请求时,对应的数据库获悉并切换至业务主库。如果各子服务端120上的数据一致性模块1202可通过“并行运行”话题收到主库更换消息,可全部遵循一致性协议的运行规则,业务主数据库依据一致性协议,将执行暂停数据同步及暂停数据提交等行为,消息中提及的将切换为业务主库的数据库,将立刻发起新一轮的选主投票以成为业务主库;其他数据库服务端依据一致性协议,不执行任何操作或者进行一个周期的抑制成为业务主数据库的操作。语句转换模块1203,用于利用转换组件(如SOCI工具)将数据处理指令转换为与业务主数据库的数据库类型相对应的数据处理语句,并将数据处理语句发送至业务主数据库,以使业务主数据库执行该数据处理语句进行数据处理,同时业务主数据库处理后的响应数据可直接返回至业务端,提高用户体验。同时基于语句转换模块1203能够支持将各类型数据库加入到分布式数据库集群中,实现各种异构数据库的之间的信息交互。

本实施例的技术方案,通过主服务端在接收到数据同步请求时,将数据同步请求中的同步请求参数发送至至少一个子服务端;通过至少一个子服务端在接收到同步请求参数时,基于将与同步请求参数对应的源数据库中的待同步数据,发送至至少一个待使用数据库,以在至少一个待使用数据库数据同步后,基于根据一致性协议确定的业务主数据库进行业务数据处理,解决了现有技术中人工更改业务主库配置信息,导致服务连接新业务主库效率低,且成本高,数据稳定差的问题,实现了通过主服务端向至少一个子服务端发送同步请求参数,以使各子服务端在接收到同步请求参数时,将与同步请求参数对应的源数据库中的待同步数据发送至至少一个待使用数据库,保证数据同步的实时性,同时通过包含主库选取配置规则的一致性协议确定业务主数据库,在数据库接收到消息时进行切换,提高更换业务主库的便捷性,保证数据处理的稳定性,达到提高客户使用体验的技术效果。

实施例三

图6是根据本发明实施例三提供的一种数据处理方法的流程图,该方法可以应用于上述实施例提供的数据处理系统,参见图6,该方法可以包括如下步骤:

S610、基于所述主服务端在接收到数据同步请求时,将所述数据同步请求中的同步请求参数发送至所述至少一个子服务端;其中,所述同步请求参数中包括源数据库标识。

S620、基于所述至少一个子服务端在接收到所述同步请求参数时,基于将与所述同步请求参数对应的源数据库中的待同步数据,发送至所述至少一个待使用数据库,以在所述至少一个待使用数据库数据同步后,基于业务主数据库进行业务数据处理。

其中,所述业务主数据库是基于一致性协议确定的,所述一致性协议中包括至少一项主库选取配置规则。

可选的,所述主服务端中包括:请求代理模块和发布模块;其中,

所述请求代理模块,用于在接收到数据同步请求时,将所述数据同步请求中的同步请求参数发送至所述发布模块;

所述发布模块中包括与同步请求类型相对应的主同步订阅单元;所述发布模块,用于基于所述主同步订阅单元将所述同步请求参数发送至所述至少一个子服务端。

可选的,所述至少一个子服务端中包括:接收模块和数据一致性模块;其中,所述接收模块中包括与同步请求类型相对应的子同步订阅单元;

所述接收模块,用于将基于所述子同步订阅单元接收的所述同步请求参数发送至所述数据一致性模块;

所述数据一致性模块,用于确定与所述同步请求参数相对应的源数据库,并将所述源数据库中的待同步数据发送至同步消息队列中,并将所述同步消息队列中的队列同步数据发送至所述至少一个待使用数据库,以使所述至少一个待使用数据库数据同步。

可选的,所述请求代理模块,还用于在接收到主库切换请求时,将所述主库切换请求中的切换请求参数发送至所述发布模块;其中,所述切换请求参数中包括原主库标识和新主库标识;

所述发布模块中还包括与切换请求类型相对应的主切换订阅单元;所述发布模块,用于基于所述主切换订阅单元将所述切换请求参数发送至所述至少一个子服务端。

可选的,所述接收模块中还包括与切换请求类型相对应的子切换订阅单元;

所述接收模块,用于将基于所述子切换订阅单元接收的所述切换请求参数发送至所述数据一致性模块;

所述数据一致性模块,用于将所述切换请求参数发送至当前同步消息队列中,并将同步消息队列中的切换请求参数分别发送至与所述切换请求参数相对应的原主数据库和新主数据库,以使将所述新主数据库切换为业务主数据库,以及使根据所述一致性协议控制在与距离接收时刻达到预设时长时,将所述原主数据库切换为待同步数据库;

其中,所述接收时刻与所述原主数据库接收到切换请求参数的时刻相对应。

可选的,所述请求代理模块,还用于获取与所述主服务端相通信的至少一个业务端发送的数据处理请求,并将与所述数据处理请求对应的数据处理指令发送至所述发布模块;

所述发布模块中包括与处理请求类型相对应的主处理订阅单元;所述发布模块,用于基于所述主处理订阅单元将所述数据处理指令发送至所述至少一个子服务端。

可选的,所述至少一个子服务端中还包括:语句转换模块;

所述接收模块中还包括与所述处理请求类型相对应的子处理订阅单元;所述接收模块,用于将基于所述子处理订阅单元接收的所述数据处理指令发送至所述数据一致性模块;

所述数据一致性模块,用于将所述数据处理指令发送至当前同步消息队列中,并基于所述一致性协议将同步消息队列中的数据处理指令发送至所述语句转换模块;

所述语句转换模块,用于将所述数据处理指令转换为与所述业务主数据库相对应的数据处理语句,并将所述数据处理语句发送至所述业务主数据库,以使所述业务主数据库基于所述数据处理语句进行业务数据处理。

可选的,还包括:所述主服务端,用于在检测到所述业务主数据库反馈的故障信号时,向所述至少一个子服务端发送主库更换消息;

所述至少一个子服务端,用于在接收到所述主库更换消息时,基于所述一致性协议暂停执行将所述待同步数据发送至所述至少一个待使用数据库的操作,并基于所述至少一项主库选取配置规则,确定目标数据库,并将所述目标数据库切换为业务主数据库。

可选的,还包括:所述主服务端,用于获取待接入数据库信息,并将所述待接入数据库信息发送至所述至少一个子服务端;其中,所述待接入数据库信息中包括至少一个待接入数据库;

所述至少一个子服务端,用于在接收到所述至少一个待接入数据库时,基于所述一致性协议建立所述至少一个子服务端与各待接入数据库所对应的子服务端之间的网络连接,以使在建立网络连接之后,各子服务端所对应的至少一个待使用数据库进行数据同步。

本实施例的技术方案,通过主服务端在接收到数据同步请求时,将数据同步请求中的同步请求参数发送至至少一个子服务端;通过至少一个子服务端在接收到同步请求参数时,基于将与同步请求参数对应的源数据库中的待同步数据,发送至至少一个待使用数据库,以在至少一个待使用数据库数据同步后,基于根据一致性协议确定的业务主数据库进行业务数据处理,解决了现有技术中人工更改业务主库配置信息,导致服务连接新业务主库效率低,且成本高,数据稳定差的问题,实现了通过主服务端向至少一个子服务端发送同步请求参数,以使各子服务端在接收到同步请求参数时,将与同步请求参数对应的源数据库中的待同步数据发送至至少一个待使用数据库,保证数据同步的实时性,同时通过包含主库选取配置规则的一致性协议确定业务主数据库,在数据库接收到消息时进行切换,提高更换业务主库的便捷性,保证数据处理的稳定性,达到提高客户使用体验的技术效果。

实施例四

图7是实现本发明实施例的数据处理方法的电子设备的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。

如图7所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。

电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如数据处理方法。

在一些实施例中,数据处理方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的数据处理方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据处理方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。

计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

相关技术
  • 医疗数据处理系统及方法、存储介质和电子设备
  • 一种基于用户特征的室内导航方法、电子设备及存储介质
  • 一种分布式系统部署方法、系统、电子设备及存储介质
  • 一种漆面识别方法、装置、存储介质及电子设备
  • 一种用于化妆间盒子的交易方法、系统、电子设备及存储介质
  • 一种非接触式数据处理系统、方法、电子设备及存储介质
  • 一种数据处理系统、方法、装置、电子设备及存储介质
技术分类

06120115630366