分布式环境下的数据查询方法、装置及存储介质与流程

文档序号:17476493发布日期:2019-04-20 06:09阅读:153来源:国知局
分布式环境下的数据查询方法、装置及存储介质与流程

本发明涉及信息检索技术领域,更具体地说,涉及一种分布式环境下的数据查询方法、装置存储介质。



背景技术:

应用使用了分库分表之后,会根据不同的数据分布部署不同的服务器资源,应用服务器只能访问本部署单元所能直接访问的数据源中的业务数据,而无法访问其他部署单元的数据源中的数据。

现有技术中,在分库分表之后,应用的访问路由会根据不同的数据分布,将应用的请求转发到对应的应用服务器上,如果不存在跨数据源的数据查询请求,这种路由方式不会出现问题,而一旦业务的查询请求需要访问不同的数据源,传统访问方式就无法满足需求,无法进行数据的统一查询。



技术实现要素:

为解决上述问题,本发明实施例提供一种分布式环境下的数据查询方法、装置及存储介质,能够在分布式环境下对跨数据源的查询请求进行处理。

本发明实施例的第一方面提供一种分布式环境下的数据查询方法,所述方法包括:从源部署单元接收查询请求;根据所述查询请求确定访问的目标数据源;判断所述源部署单元是否能直接访问所述目标数据源;当所述源部署单元不能直接访问目标数据源时,并发调用目标数据源的数据查询微服务进行数据库查询;根据所述数据查询微服务返回的查询结果获得查询结果集。

进一步地,所述数据查询微服务是使用hession协议封装的、以微服务方式提供的数据查询接口。

进一步地,根据所述数据查询微服务返回的查询结果获得查询结果集包括:获取所述数据查询微服务返回的查询子结果集;对所有的查询子结果集进行排序、合并,获取最终的查询结果集;其中,在对所述查询子结果集进行排序、合并的过程中,定时释放内存。

进一步地,根据所述查询请求确定访问的目标数据源包括:

获取部署单元相关信息,所述部署单元相关信息包括部署单元与数据源之间的映射关系、数据源与数据篮子之间的映射关系;根据所述查询请求中的数据分布键计算与所述数据分布键对应的目标数据篮子;根据所述目标数据篮子和所述数据源与数据篮子之间的映射关系确定所述查询请求的目标数据源。

进一步地,判断所述源部署单元是否能直接访问所述目标数据源包括:

根据所述部署单元与数据源之间的映射关系判断是否存在所述源部署单元不能直接访问的目标数据源。

进一步地,在所述并发调用所述目标数据源提供的数据查询微服务对所述目标数据源进行数据库查询之前:根据所述目标数据源的编号对数据分布键分组;使用多线程控制器按照目标数据源维度对调用所述数据查询微服务进行并发处理。

可选地,若所述查询请求中没有数据分布键,则在所述并发调用所述目标数据源提供的数据查询微服务对所述目标数据源进行数据库查询之前,

使用多线程控制器按照所述部署单元相关信息中的所有数据源维度进行并发处理。

本发明实施例的第二方面提供一种分布式环境下的数据查询装置,其特征在于,所述装置包括:查询模块,用于从源部署单元接收查询请求;目标数据源确定模块,用于根据所述查询请求确定访问的目标数据源;判断模块,判断所述源部署单元是否能直接访问所述目标数据源;并发查询模块,在所述源部署单元不能直接访问目标数据源时,并发调用目标数据源提供的数据查询微服务对目标数据源进行数据库查询;数据查询微服务,用于对目标数据源进行数据库查询;汇总模块,用于根据所述数据查询微服务返回的查询结果获得查询结果集。

进一步地,所述数据查询微服务是使用hession协议封装的、以微服务方式提供的数据查询接口。

进一步地,所述汇总模块根据所述数据查询微服务返回的查询结果获得查询结果集包括:获取所述数据查询微服务返回的查询子结果集;对所有的查询子结果集进行排序、合并,获取最终的查询结果集;其中,在对所述查询子结果集进行排序、合并的过程中,定时释放内存。

进一步地,目标数据源确定模块包括:配置中心模块,用于存储部署单元相关信息,所述部署单元相关信息包括部署单元与数据源之间的映射关系、数据源与数据篮子之间的映射关系;计算模块,用于获取部署单元相关信息,根据所述查询请求中的数据分布键计算与所述数据分布键对应的目标数据篮子;根据所述目标数据篮子和所述数据源与数据篮子之间的映射关系确定所述查询请求的目标数据源。

进一步地,所述判断模块判断所述源部署单元是否能够直接访问所述目标数据源包括:

根据所述部署单元与数据源之间的映射关系判断是否存在所述源部署单元不能直接访问的目标数据源。

进一步地,所述查询装置还包括:

分组模块,用于根据所述目标数据源的编号对数据分布键分组;

多线程控制器,用于按照目标数据源维度对调用所述数据查询微服务进行并发处理。

可选地,若所述查询请求中没有数据分布键,使用多线程控制器按照所述部署单元相关信息中的所有数据源维度进行并发处理。

本发明实施例的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序能够被处理器执行以实现本发明实施例所述方法的步骤。

本发明实施例在分布式环境下查询需要访问不同数据源时,通过查询请求确定所需访问的目标数据源,并通过并发调用目标数据源提供的数据查询微服务的方式,对不同的目标数据源进行查询。本发明实施例提供了对不同数据源的统一访问方式,解决了分布式环境下不能跨数据源访问的问题。

附图说明

图1示出了根据本发明分布式环境下的数据查询方法的一个实施例;

图2示出了根据本发明实施例的获取查询结果集的一种实现方式;

图3示出了根据本发明分布式环境下的数据查询方法的另一个实施例;

图4示出了根据本发明分布式环境下的数据查询装置的一个实施例;

图5示出了根据本发明分布式环境下数据的数据查询装置的另一个实施例。

具体实施方式

为了便于理解本发明技术方案的各个方面、特征以及优点,下面结合附图对本发明进行具体描述。应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。

【实施例1】

图1示出了根据本发明分布式环境下数据查询方法的一个实施例,参照图1,本实施例1所述的方法包括:

s11:从源部署单元接收查询请求;

s12:根据所述查询请求确定查询请求的目标数据源;

s13:判断所述源部署单元是否能直接访问所述目标数据源;

s14:在所述源部署单元不能直接访问目标数据源时,并发调用目标数据源的数据查询微服务进行数据库查询;

s15:根据所述数据查询微服务返回的查询结果获得查询结果集。

本发明实施例所述的方法通过在所述源部署单元不能直接访问目标数据源时,并发调用目标数据源的数据查询微服务进行数据库查询,为分布式环境下跨数据源部署的数据提供了一种统一、高效的数据查询方法。

在本实施例的一种实现方式中,在处理s14中,所述数据查询微服务是使用hessian协议封装的、以微服务方式提供的数据查询接口。

举例来说,所述数据查询微服务可以为使用hessian协议封装的数据查询接口,其底层可以使用mybatis进行数据库的查询,并对分页逻辑进行特殊处理,将从返回start到max的记录变为返回从0到start+max的记录。

hessian是一个轻量级的remotingonhttp(远程http)工具,其采用binary-rpc(remotemethodinvocation,远程方法调用)协议。binary-rpc协议以标准的二进制格式来定义请求的信息(请求的对象、方法、参数等),因此,hessian很适合发送二进制数据,同时又具有防火墙穿透能力。

本实施例使用hessian的二进制编码协议,使用微服务方式,为源部署单元提供目标数据源的数据查询接口,使得分布式环境下跨数据源的数据查询更为简单快捷。

图2示出了根据本发明实施例的获取查询结果集的一种实现方式,如图2所示,在处理s15中,根据所述数据查询微服务返回的查询结果获得查询结果集包括:

s151:获取所述数据查询微服务返回的查询子结果集;

s152:对所有的查询子结果集进行排序、合并,获取最终的查询结果集。

其中,在处理s152中,在对查询子结果集进行排序、合并的过程中,定时释放内存,避免了出现oom(outofmemory,内存溢出)问题。

【实施例2】

图3示出了根据本发明分布式环境下的数据查询方法的另一个实施例,如图3所示,本实施例所述的分布式环境下的数据查询方法包括:

s21:从源部署单元接收查询请求;

s22:获取部署单元相关信息;

s23:根据所述查询请求中的数据分布键计算与所述数据分布键对应的目标数据篮子;

s24:根据所述目标数据篮子和所述数据源与数据篮子之间的映射关系确定所述查询请求的目标数据源。

s25:判断所述源部署单元是否能直接访问所述目标数据源;

s26:当所述源部署单元不能直接访问目标数据源时,并发调用目标数据源的数据查询微服务进行数据库查询;

具体而言,在处理s22中,所述部署单元相关信息包括部署单元与数据源之间的映射关系、数据源与数据篮子之间的映射关系。所述数据源可以为一个oracle数据库,所述数据篮子为分库分表后,查询请求中每个数据分布键对应的分表的子表编号,其与数据源存在静态的对应关系。

所述部署单元相关信息预先存储于独立的配置单元中,在需要根据数据分布键确定查询请求访问的目标数据源时,可以直接从配置单元中获取当前交易的部署单元相关信息即可,不用关心具体的数据分布。

在处理s23中,所述数据分布键为将查询访问的数据映射到数据篮子的shardingkey。在分库分表中,选取某个业务字段作为某个系统的分表依据,并根据该业务字段的值计算哈希值并映射到某个数据篮子上,其中所述的业务字段就是shardingkey。也就是说,shardingkey与数据篮子具有映射关系,本发明是根据查询请求中的数据分布键和部署单元相关信息确定目标数据源的。

在处理s25中,判断所述源部署单元是否能直接访问所述目标数据源包括:根据所述部署单元与数据源之间的映射关系判断所述源部署单元能否直接访问所述目标数据源。在存在所述源部署单元不能直接访问的数据源时,进行s26的处理。

进一步地,在处理26中,若存在所述源部署单元不能直接访问的目标数据源,在并发调用所述目标数据源提供的数据查询微服务对所述目标数据源进行数据库查询之前,根据目标数据源的编号对所述数据分布键进行分组,使用多线程控制器按照目标数据源维度进行并发处理。

具体而言,当存在所述源部署单元不能直接访问的目标数据源时,在调用数据查询微服务之前,可以根据目标数据源的编号对数据分布键分组,根据所述分组将所述查询请求分解为多个调用相应目标数据源提供的数据查询微服务进行数据库查询的子任务,然后使用多线程控制器按目标数据源维度对所述子任务进行并发处理。所述多线程控制器可以为使用java线程池模型封装的多线程任务控制模块,主要实现添加子任务以及从所述子任务中获取数据查询微服务返回的结果集的功能,对子任务进行并发控制。

本实施例根据目标数据源的编号对数据分布键分组,按照目标数据源的维度将查询请求组织为多个子任务,可以在每次调用数据查询微服务时,都能够一次性将对同一数据源的查询请求转发到对应目标数据源上,提高查询的执行效率。

可选地,若查询请求中没有指定数据分布键,则在并发调用所述目标数据源提供的数据查询微服务对所述目标数据源进行数据库查询之前,使用多线程控制器按照所述部署单元相关信息中的所有数据源维度进行并发处理,按所有数据源的维度将所述查询请求组织为多个调用相应目标数据源提供的数据查询微服务进行数据库查询的子任务,然后使用多线程控制器按所有数据源维度对所述子任务进行并发处理。

图4示出了根据本发明分布式环境下的数据查询装置的一个实施例,如图所示,所述查询装置40包括:

41:查询模块,用于从源部署单元70接收查询请求;

42:目标数据源确定模块,用于根据所述查询请求确定访问的目标数据源50;

43:判断模块,判断所述源部署单元是否能直接访问所述目标数据源60;

44:并发查询模块,在所述源部署单元不能直接访问目标数据源60时,并发调用目标数据源提供的数据查询微服务45对目标数据源进行数据库查询;

45:数据查询微服务,用于对目标数据源60进行数据库查询;

46:汇总模块,用于根据所述数据查询微服务45返回的查询结果获得查询结果集。

具体地,所述数据查询微服务是使用hession协议封装的、以微服务方式提供的数据查询接口。

进一步地,所述汇总模块根据所述数据查询微服务返回的查询结果获得查询结果集包括:

获取所述数据查询微服务返回的查询子结果集;

对所有的查询子结果集进行排序、合并,获取最终的查询结果集;

其中,在对所述查询子结果集进行排序、合并的过程中,定时释放内存。

图5示出了根据本发明分布式环境下数据查询装置的另一种实施例,如图5所示,所述目标数据源确定模块包括:

配置中心模块47,用于存储部署单元相关信息,所述部署单元相关信息包括部署单元与数据源之间的映射关系、数据源与数据篮子之间的映射关系;

计算模块48,用于获取所述部署单元相关信息,根据所述查询请求中的数据分布键计算与所述数据分布键对应的目标数据篮子;根据所述目标数据篮子和所述数据源与数据篮子之间的映射关系确定所述查询请求的目标数据源。

进一步地,所述判断模块判断所述源部署单元是否能够直接访问所述目标数据源包括:

根据所述部署单元与数据源之间的映射关系判断是否存在所述源部署单元不能直接访问的目标数据源。

进一步地,所述查询装置还包括:

49:分组模块,用于根据所述目标数据源的编号对数据分布键分组;

50:多线程控制器,用于按照目标数据源维度对调用所述数据查询微服务进行并发处理。

可选地,若所述查询请求中没有数据分布键,使用多线程控制器按照所述部署单元相关信息中的所有数据源维度进行并发处理。

所述领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、模块、单元的具体工作过程,可以参考前述方法实施例中对应的过程,在此不再赘述。

根据本发明的实施例,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序能够被处理器执行实现前述方法实施例中的任一种方法。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1