一种批处理数据分片方法、系统、计算机设备及存储介质与流程

文档序号:25543284发布日期:2021-06-18 20:40阅读:101来源:国知局
一种批处理数据分片方法、系统、计算机设备及存储介质与流程

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



背景技术:

zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是google的chubby一个开源的实现,是hadoop和hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

随着现在分布式系统应用越来越广泛,且处理的数据量也越来越大,在传统模式中处理批处理的任务往往都是单机部署,这样的话就会存在瓶颈,不利于提高批处理任务的执行效率。因此,需要一种基于zookeeper,能够支持动态、实时扩容,以提高批处理任务执行效率的批处理数据分片方法。



技术实现要素:

本发明的目的是提供一种批处理数据分片方法、系统、计算机设备及存储介质,该方案通过zookeeper,能够实现批处理数据分片的动态、实时扩容,从而能够提高批处理任务的执行效率,有利于降低开发接入成本和开发难度。

本发明提供的技术方案如下:

本发明提供一种批处理数据分片方法,包括步骤:

在客户端启动时,注册服务到zookeeper;

接收所述zookeeper对新注册的消息发送的广播;

查询所述zookeeper更新后的节点列表;

获得所述客户端对应的节点在所述节点列表中的当前排序位置,以及总注册数量;

根据所述当前排序位置以及所述总注册数量,计算获得所述客户端对应的分片系数。

在客户端启动时,通过sdk注册服务到zookeeper,zookeeper能够根据新的注册服务更新节点列表,并对新注册的消息发送广播,sdk在接收到广播后能够查询zookeeper更新后的节点列表,从而确定客户端对应的节点在节点列表中的当前排序位置,以及总注册数量,根据当前排序位置以及总注册数量,便能够计算获得客户端对应的分片系数,从而达到数据分片的效果。本方案通过zookeeper,能够实现批处理数据分片的动态、实时扩容,从而提高批处理任务的执行效率,有利于降低开发接入成本和开发难度。

进一步地,所述的在客户端启动时,注册服务到zookeeper,具体包括:

初始化zookeeper连接;

通过开源框架与所述zookeeper建立连接;

监听所述zookeeper中的自定义持久节点的实时状况。

具体的,开源框架封装了一整套连接zookeeper的底层api,能极大简化连接过程及保证链路的稳定,且内部封装了心跳检测机制;监听zookeeper中自定义持久节点/monitor-folder(如不存在则先创建),利用zookeeper中的watch特性,处于监听节点下的任何变动都会通知到监听者;在持久节点/monitor-folder下创建(ephemeral_sequential)临时顺序节点/monitor-folder/node..........n,根据临时顺序节点的特性,node的序号会自动按照节点生成顺序自动生成(zookeeper目录结构图),由于临时顺序节点的序号是由zookeeper自动生成,所以客户端每次创建临时顺序节点时需要获取到节点名称(nodename),并保存在内存中,后续监听到变更时需要依赖创建的节点名称来确定位置。如果客户端断开跟zookeeper的连接,该临时顺序节点会自动删除。

当被监听的持久节点/monitor-folder下有新增或删除操作时会触发监听器,通知到每一个客户端(监听者),客户端收到监听通知后立即发起查询持久节点/monitor-folder,获取该持久节点下的所有临时节点。通过当时创建的临时节点名称可以判断当前客户端的位置以及计算出分片系数。

进一步地,所述的计算获得所述客户端对应的分片系数之后,还包括步骤:

将所述分片系数发送至所述客户端,使所述客户端通过所述分片系数查询数据库中不同片区的数据。

另外,本发明还提供另一种批处理数据分片方法,包括步骤:

接收在客户端启动时,sdk发送的注册服务;

根据所述注册服务更新节点列表中的节点;

在节点创建完成后,对新注册的消息进行广播;

接受所述sdk在接收到所述广播后发送的节点列表查询请求,使所述sdk根据所述客户端对应的节点在所述节点列表中的当前排序位置以及总注册数量,计算获得所述客户端对应的分片系数。

zookeeper通过接收在客户端启动时,sdk发送的注册服务,能够更新节点列表中的节点,并在节点创建完成后,对新注册的消息进行广播,sdk在接收到广播后能够查询zookeeper更新后的节点列表,从而确定客户端对应的节点在节点列表中的当前排序位置,以及总注册数量,根据当前排序位置以及总注册数量,便能够计算获得客户端对应的分片系数,从而达到数据分片的效果。本方案通过zookeeper,能够实现批处理数据分片的动态、实时扩容,从而提高批处理任务的执行效率,有利于降低开发接入成本和开发难度。

进一步地,所述的根据所述注册服务更新节点列表中的节点,具体包括:

创建自定义持久节点;

在所述自定义持久节点下创建临时顺序节点,所述临时顺序节点的序号按照节点生成的顺序自动生成。

进一步地,还包括:在与所述客户端的连接断开后,删除对应的所述临时顺序节点;

对所述自定义持久节点下的所述临时顺序节点进行重新排序。

具体的,在zookeeper中创建自定义持久节点/monitor-folder,利用zookeeper中的watch特性,处于监听节点下的任何变动都会通知到监听者;在持久节点/monitor-folder下创建(ephemeral_sequential)临时顺序节点/monitor-folder/node..........n,根据临时顺序节点的特性,node的序号会自动按照节点生成顺序自动生成(zookeeper目录结构图),由于临时顺序节点的序号是由zookeeper自动生成,所以客户端每次创建临时顺序节点时需要获取到节点名称(nodename),并保存在内存中,后续监听到变更时需要依赖创建的节点名称来确定位置。如果客户端断开跟zookeeper的连接,该临时顺序节点会自动删除。

当被监听的持久节点/monitor-folder下有新增或删除操作时会触发监听器,通知到每一个客户端(监听者),客户端收到监听通知后立即发起查询持久节点/monitor-folder,获取该持久节点下的所有临时节点。通过当时创建的临时节点名称可以判断当前客户端的位置以及计算出分片系数。

另外,本发明还提供一种批处理数据分片系统,包括:

注册模块,用于在客户端启动时,注册服务到zookeeper;

接收模块,用于接收所述zookeeper对新注册的消息发送的广播;

查询模块,用于查询所述zookeeper更新后的节点列表,获得所述客户端对应的节点在所述节点列表中的当前排序位置,以及总注册数量;

计算模块,用于根据所述当前排序位置以及所述总注册数量,计算获得所述客户端对应的分片系数。

进一步地,还包括:发送模块,用于将所述分片系数发送至所述客户端,使所述客户端通过所述分片系数查询数据库中不同片区的数据。

另外,本发明还提供一种计算机设备,包括:

存储器,用于存放运行程序;

处理器,用于执行所述存储器内存放的运行程序,实现上述两种批处理数据分片方法所述执行的操作。

另外,本发明还提供一种存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述的两种批处理数据分片方法所执行的操作。

根据本发明提供的一种批处理数据分片方法、系统、计算机设备及存储介质,在客户端启动时,通过sdk注册服务到zookeeper,zookeeper能够根据新的注册服务更新节点列表,并对新注册的消息发送广播,sdk在接收到广播后能够查询zookeeper更新后的节点列表,从而确定客户端对应的节点在节点列表中的当前排序位置,以及总注册数量,根据当前排序位置以及总注册数量,便能够计算获得客户端对应的分片系数,从而达到数据分片的效果。本方案通过zookeeper,能够实现批处理数据分片的动态、实时扩容,从而提高批处理任务的执行效率,有利于降低开发接入成本和开发难度。

附图说明

下面将以明确易懂的方式,结合附图说明优选实施方式,对本方案的上述特性、技术特征、优点及其实现方式予以进一步说明。

图1是本发明一个实施例的整体流程示意图;

图2是本发明另一个实施例的整体流程示意图;

图3是本发明实施例的sdk时序示意图;

图4是本发明实施例的zookeeper节点目录示意图;

图5是本发明实施例的框架示意图;

图6是本发明实施例的批处理数据分片示意图;

图7是本发明实施例的系统结构示意图。

图8是本发明实施例的计算机设备结构示意图。

图中标号:1-注册模块;2-接收模块;3-查询模块;4-计算模块;5-发送模块;100-存储器;200-处理器;300-通信接口;400-通信总线;500-输入/输出接口。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。

实施例1

本发明的一个实施例,如图1和图3所示,本发明提供一种批处理数据分片方法,包括步骤:

s1、在客户端启动时,注册服务到zookeeper。

优选的,在客户端启动时,注册服务到zookeeper,具体包括:

初始化zookeeper连接;通过开源框架(curator框架)与zookeeper建立连接;监听zookeeper中的自定义持久节点的实时状况,以便及时接收到zookeeper对新注册的消息发送的广播。

具体的,开源框架封装了一整套连接zookeeper的底层api,能极大简化连接过程及保证链路的稳定,且内部封装了心跳检测机制。

s2、接收zookeeper对新注册的消息发送的广播。

s3、查询zookeeper更新后的节点列表。

s4、获得客户端对应的节点在节点列表中的当前排序位置,以及总注册数量;

s5、根据当前排序位置以及总注册数量,计算获得客户端对应的分片系数。

优选的,计算获得客户端对应的分片系数之后,还包括步骤:

s6、将分片系数发送至客户端,使客户端通过分片系数查询数据库中不同片区的数据。

具体的,监听zookeeper中自定义持久节点/monitor-folder(如不存在则先创建),利用zookeeper中的watch特性,处于监听节点下的任何变动都会通知到监听者;在持久节点/monitor-folder下创建(ephemeral_sequential)临时顺序节点/monitor-folder/node..........n,根据临时顺序节点的特性,node的序号会自动按照节点生成顺序自动生成(如图4所示),由于临时顺序节点的序号是由zookeeper自动生成,所以客户端每次创建临时顺序节点时需要获取到节点名称(nodename),并保存在内存中,后续监听到变更时需要依赖创建的节点名称来确定位置。如果客户端断开跟zookeeper的连接,该临时顺序节点会自动删除。

当被监听的持久节点/monitor-folder下有新增或删除操作时会触发监听器,通知到每一个客户端(监听者),客户端收到监听通知后立即发起查询持久节点/monitor-folder,获取该持久节点下的所有临时节点。通过当时创建的临时节点名称可以判断当前客户端的位置以及计算出分片系数。

在客户端启动时,通过sdk(即软件开发工具包)注册服务到zookeeper,zookeeper能够根据新的注册服务更新节点列表,并对新注册的消息发送广播,sdk在接收到广播后能够查询zookeeper更新后的节点列表,从而确定客户端对应的节点在节点列表中的当前排序位置,以及总注册数量,根据当前排序位置以及总注册数量,便能够计算获得客户端对应的分片系数,从而达到数据分片的效果。本方案通过zookeeper,能够实现批处理数据分片的动态、实时扩容,从而提高批处理任务的执行效率,有利于降低开发接入成本和开发难度。

如图5和图6所示,在本方案中,有4台客户端注册到zookeeper,按上述方法可得各客户端参数:

client-1:节点名称(nodename=node0000000001)、节点总数(nodetotal=4)、节点位置(index=0);

client-2:节点名称(nodename=node0000000002)、节点总数(nodetotal=4)、节点位置(index=1);

client-3:节点名称(nodename=node0000000003)、节点总数(nodetotal=4)、节点位置(index=2);

client-4:节点名称(nodename=node0000000004)、节点总数(nodetotal=4)、节点位置(index=3)。

业务处理时,每台客户端都读取数据库db中的数据,不同的客户端通过各自的分片系数(index)及节点总数(nodetotal)来确定需要处理的数据,从而达到数据分片的目的。

实施例2

本发明的一个实施例,如图2和图3所示,本发明还提供另一种批处理数据分片方法,包括步骤:

s10、接收在客户端启动时,sdk发送的注册服务。

s11、根据注册服务更新节点列表中的节点。

s12、在节点创建完成后,对新注册的消息进行广播。

s13、接受sdk在接收到广播后发送的节点列表查询请求,使sdk根据客户端对应的节点在节点列表中的当前排序位置以及总注册数量,计算获得客户端对应的分片系数。

zookeeper通过接收在客户端启动时,sdk发送的注册服务,能够更新节点列表中的节点,并在节点创建完成后,对新注册的消息进行广播,sdk在接收到广播后能够查询zookeeper更新后的节点列表,从而确定客户端对应的节点在节点列表中的当前排序位置,以及总注册数量,根据当前排序位置以及总注册数量,便能够计算获得客户端对应的分片系数,从而达到数据分片的效果。本方案通过zookeeper,能够实现批处理数据分片的动态、实时扩容,从而提高批处理任务的执行效率,有利于降低开发接入成本和开发难度。

优选的,根据注册服务更新节点列表中的节点,具体包括:

创建自定义持久节点;在自定义持久节点下创建临时顺序节点,临时顺序节点的序号按照节点生成的顺序自动生成。

另外,本方案的批处理数据分片方法,还包括:在与客户端的连接断开后,删除对应的临时顺序节点;对自定义持久节点下的临时顺序节点进行重新排序。

具体的,在zookeeper中创建自定义持久节点/monitor-folder,利用zookeeper中的watch特性,处于监听节点下的任何变动都会通知到监听者;在持久节点/monitor-folder下创建(ephemeral_sequential)临时顺序节点/monitor-folder/node..........n,根据临时顺序节点的特性,node的序号会自动按照节点生成顺序自动生成(如图4所示),由于临时顺序节点的序号是由zookeeper自动生成,所以客户端每次创建临时顺序节点时需要获取到节点名称(nodename),并保存在内存中,后续监听到变更时需要依赖创建的节点名称来确定位置。如果客户端断开跟zookeeper的连接,该临时顺序节点会自动删除。

当被监听的持久节点/monitor-folder下有新增或删除操作时会触发监听器,通知到每一个客户端(监听者),客户端收到监听通知后立即发起查询持久节点/monitor-folder,获取该持久节点下的所有临时节点。通过当时创建的临时节点名称可以判断当前客户端的位置以及计算出分片系数。

实施例3

本发明的一个实施例,如图7所示,本发明还提供一种批处理数据分片系统,包括注册模块1、接收模块2、查询模块3、计算模块4和发送模块5。

注册模块1用于在客户端启动时,注册服务到zookeeper;接收模块2用于接收zookeeper对新注册的消息发送的广播;查询模块3用于查询zookeeper更新后的节点列表,获得客户端对应的节点在节点列表中的当前排序位置,以及总注册数量;计算模块4用于根据当前排序位置以及总注册数量,计算获得客户端对应的分片系数;发送模块5用于将分片系数发送至客户端,使客户端通过分片系数查询数据库中不同片区的数据。

在客户端启动时,通过注册模块1注册服务到zookeeper,zookeeper能够根据新的注册服务更新节点列表,并对新注册的消息发送广播,sdk在通过接收模块2接收到广播后能够再通过查询模块3查询zookeeper更新后的节点列表,从而确定客户端对应的节点在节点列表中的当前排序位置,以及总注册数量,根据当前排序位置以及总注册数量,计算模块4便能够计算获得客户端对应的分片系数,从而达到数据分片的效果。本方案通过zookeeper,能够实现批处理数据分片的动态、实时扩容,从而提高批处理任务的执行效率,有利于降低开发接入成本和开发难度。

实施例4

另外,如图8所示,本发明还提供一种计算机设备,包括存储器100和处理器200,存储器100用于存放运行程序,处理器200用于执行存储器内存放的运行程序,实现实施例1和/或实施例2任一所述的批处理数据分片方法所执行的操作。

具体的,计算机设备还可以包括通信接口300、通信总线400和输入/输出接口500,其中,处理器200、存储器100、输入/输出接口500和通信接口300通过通信总线400完成相互间的通信。

通信总线400是连接所描述的元素的电路并且在这些元素之间实现传输。例如,处理器200通过通信总线400从其它元素接收到命令,解密接收到的命令,根据解密的命令执行计算或数据处理。存储器100可以包括程序模块,例如内核(kernel),中间件(middleware),应用程序编程接口(applicationprogramminginterface,api)和应用。该程序模块可以是有软件、固件或硬件、或其中的至少两种组成。输入/输出接口500转发用户通过输入输出设备(例如感应器、键盘、触摸屏)输入的命令或数据。通信接口300将该计算机设备与其它网络设备、用户设备、网络进行连接。例如,通信接口300可以通过有线或无线连接到网络以连接到外部其它的网络设备或用户设备。无线通信可以包括以下至少一种:无线保真(wifi),蓝牙(bt),近距离无线通信技术(nfc),全球卫星定位系统(gps)和蜂窝通信等等。有线通信可以包括以下至少一种:通用串行总线(usb),高清晰度多媒体接口(hdmi),异步传输标准接口(rs-232)等等。网络可以是电信网络和通信网络。通信网络可以为计算机网络、因特网、物联网、电话网络。计算机设备可以通过通信接口300连接网络,计算机设备和其它网络设备通信所用的协议可以被应用、应用程序编程接口(api)、中间件、内核和通信接口至少一个支持。

实施例5

另外,本发明还提供一种存储介质,存储介质中存储有至少一条指令,指令由处理器加载并执行以实现实施例1和/或实施例2任一所述的批处理数据分片方法所执行的操作。例如,计算机可读存储介质可以是只读内存(rom)、随机存取存储器(ram)、只读光盘(cd-rom)、磁带、软盘和光数据存储设备等。它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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