数据流生成方法及其装置、设备、介质、产品与流程

文档序号:31857635发布日期:2022-10-19 03:30阅读:64来源:国知局
数据流生成方法及其装置、设备、介质、产品与流程

1.本技术涉及数据处理领域,尤其涉及一种数据流生成方法,此外还涉及该方法相应的装置、设备、非易失性存储介质以及计算机程序产品。


背景技术:

2.现有的互联网平台需对平台的数据进行不同应用场景的数据库的数据同步处理,以确保不同数据库集群中存储的数据的数据一致性,例如,将sql的数据库集群中的数据同步至kafka的数据库集群中以进行数据同步,平台一般使用数据流将具有新数据的数据库集群的数据以数据流的方式推送至其他数据库集群中,以同步更新其他数据库集群中存储的数据,平台一般会使用datax或kettle等集成数据仓库技术的数据同步工具进行不同数据库集群之间的数据同步处理。
3.但传统的数据同步工具需要开发人员自行规划所有数据同步任务的执行时间,以避免对用个数据库实例造成过大的负载,所需消耗的开发成本较高,且因数据同步任务的执行时长并无法准确的预测,难免会有部分数据同步任务的执行时间重叠,造成多个数据同步任务同时访问同一数据库,使得数据库负载上升,进而导致整个数据同步服务无法稳定运行。
4.其次,传统的数据同步工具缺少数据处理限速的功能,巨量的数据读取及传输将堵塞数据通信链路,容易导致数据同步服务发生宕机,使得数据同步服务无法使用,数据库集群之间的数据将无法同步。
5.另外,传统的数据同步工具进行数据同步时需开发人员进行繁杂的配置以保证数据同步服务可顺利执行,较高的学习成本使得数据同步服务无法快速地部署使用,影响了数据库集群间数据同步的时效性。
6.鉴于现有的数据库集群间数据同步所存在的问题,本技术人出于解决该问题的考虑做出相应的探索。


技术实现要素:

7.本技术的目的在于满足用户需求而提供一种数据流生成方法,此外还涉及该方法相应的装置、设备、非易失性存储介质以及计算机程序产品。
8.为实现本技术的目的,采用如下技术方案:
9.适应本技术的目的而提出的一种数据流生成方法,包括如下步骤:
10.响应作用于第一数据库集群的数据流生成指令,根据数据读取配置信息,确定各工作线程各自对应的待读取数据表,所述待读取数据表存储于第一数据库集群的数据库中;
11.驱动各所述工作线程从各自对应的待读取数据表中读取第一数据,并根据全局速度配置信息,控制该些工作线程读取其待读取数据表的读取速度;
12.驱动各所述工作线程将各自所读取的第一数据映射为适用于第二数据库集群存
储的第二数据,并将该些第二数据推送至数据流推送器中;
13.驱动数据流推送器将各第二数据逐一推送至第二数据库集群中,并根据所述全局速度配置信息,控制数据流推送器推送第二数据的推送速度。
14.进一步的实施例中,根据数据读取配置信息,响应作用于第一数据库集群的数据流生成指令,根据数据读取配置信息,确定各工作线程各自对应的待读取数据表,所述待读取数据表存储于第一数据库集群的数据库中的步骤中,包括如下步骤:
15.响应所述数据流生成指令,获取该数据流生成指令中包含的数据读取配置信息;
16.获取所述数据读取配置信息中包含的多个由数据库名称及数据表名称的映射关系数据;
17.将具有同一数据库名称的映射关系数据的数据表名所对应的数据表确定为同一工作线程的待读取数据表,以此类推,确定出各工作线程的待读取数据表。
18.进一步的实施例中,驱动各所述工作线程从各自对应的待读取数据表中读取第一数据,并根据全局速度配置信息,控制该些工作线程读取其待读取数据表的读取速度的步骤中,包括如下步骤:
19.获取当前待读取数据表所对应的快照数据表,读取该快速数据表中各快照数据存储位置存储的第一数据;
20.当当前读取的快照存储位置中不存在第一数据时,则确定该快照数据存储位置的快速存储位置,从地址映射表中查询出该快照存储地址所对应的源存储地址;
21.查询出当前待读取数据表中所述源存储地址所对应的源数据存储位置,读取该源数据存储位置所存储的第一数据;
22.以此类推,读取出读取待读取数据表的所有第一数据,其中,读取各所述第一数据的过程中将根据全局速度配置信息包含的数据读取速度控制读取速度。
23.进一步的实施例中,驱动各所述工作线程将各自所读取的第一数据映射为适用于第二数据库集群存储的第二数据,并将该些第二数据推送至数据流推送器中的步骤中,包括如下步骤:
24.读取出当前待读取数据表的第一数据时,确定该第一数据所对应的数据类型及键数据;
25.校验所述第一数据的数据类型是否满足预设的第二数据类型规则,若不满足,则将所述第一数据的数据类型修改为对应的第二数据类型;
26.生成包含所述第一数据及键数据的第二数据,将该第二数据推送至数据流推送器中。
27.进一步的实施例中,驱动数据流推送器将各第二数据逐一推送至第二数据库集群中,并根据所述全局速度配置信息,控制数据流推送器推送第二数据的推送速度的步骤中,包括如下步骤:
28.获取当前最新进行数据推送的工作线程所推送的第二数据,将该第二数据存储至数据推送队列中最靠前的存储位置;
29.将数据推送队列中最靠后的存储位置存储的第二数据推送至第二数据库集群中;
30.以此类推,处理所述数据推送队列的第二数据存储及推送,并根据全局速度配置信息包含的数据推送速度控制第二数据的推送速度。
31.进一步的实施例中,本方法包括如下同步步骤:
32.响应工作线程的工作错误事件,确定该工作错误事件所对应的待读取数据表;
33.确定所述待读取数据表所属的数据库,确定当前读取该数据库存储的数据表的工作线程,将所述待读取数据表分配至该工作线程,由该工作线程重新读取所述待读取数据表的第一数据。
34.适应本技术的目的而提出的一种数据流生成装置,其包括:
35.数据表分配模块,用于响应作用于第一数据库集群的数据流生成指令,根据数据读取配置信息,确定各工作线程各自对应的待读取数据表,所述待读取数据表存储于第一数据库集群的数据库中;
36.读取速度控制模块,用于驱动各所述工作线程从各自对应的待读取数据表中读取第一数据,并根据全局速度配置信息,控制该些工作线程读取其待读取数据表的读取速度;
37.映射数据推送模块,用于驱动各所述工作线程将各自所读取的第一数据映射为适用于第二数据库集群存储的第二数据,并将该些第二数据推送至数据流推送器中;
38.数据流推送模块,用于驱动数据流推送器将各第二数据逐一推送至第二数据库集群中,并根据所述全局速度配置信息,控制数据流推送器推送第二数据的推送速度。
39.进一步的实施例中,所述数据表分配模块包括:
40.读取配置信息获取子模块,用于响应所述数据流生成指令,获取该数据流生成指令中包含的数据读取配置信息;
41.关系数据获取子模块,用于获取所述数据读取配置信息中包含的多个由数据库名称及数据表名称的映射关系数据;
42.数据表规划子模块,用于将具有同一数据库名称的映射关系数据的数据表名所对应的数据表确定为同一工作线程的待读取数据表,以此类推,确定出各工作线程的待读取数据表。
43.进一步的实施例中,所述读取速度控制模块包括:
44.快速数据表读取子模块,用于获取当前待读取数据表所对应的快照数据表,读取该快速数据表中各快照数据存储位置存储的第一数据;
45.地址映射表查询子模块,用于当当前读取的快照存储位置中不存在第一数据时,则确定该快照数据存储位置的快速存储位置,从地址映射表中查询出该快照存储地址所对应的源存储地址;
46.源数据读取子模块,用于查询出当前待读取数据表中所述源存储地址所对应的源数据存储位置,读取该源数据存储位置所存储的第一数据;
47.数据读取控制子模块,用于以此类推,读取出读取待读取数据表的所有第一数据,其中,读取各所述第一数据的过程中将根据全局速度配置信息包含的数据读取速度控制读取速度。
48.进一步的实施例中,所述映射数据推送模块包括:
49.数据类型确定子模块,用于读取出当前待读取数据表的第一数据时,确定该第一数据所对应的数据类型及键数据;
50.数据类型校验子模块,用于校验所述第一数据的数据类型是否满足预设的第二数据类型规则,若不满足,则将所述第一数据的数据类型修改为对应的第二数据类型;
51.第二数据生成子模块,用于生成包含所述第一数据及键数据的第二数据,将该第二数据推送至数据流推送器中。
52.进一步的实施例中,所述数据流推送模块包括:
53.第二数据存储子模块,用于获取当前最新进行数据推送的工作线程所推送的第二数据,将该第二数据存储至数据推送队列中最靠前的存储位置;
54.第二数据推送子模块,用于将数据推送队列中最靠后的存储位置存储的第二数据推送至第二数据库集群中;
55.推送速度控制子模块,用于以此类推,处理所述数据推送队列的第二数据存储及推送,并根据全局速度配置信息包含的数据推送速度控制第二数据的推送速度。
56.为解决上述技术问题本技术实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述数据流生成方法的步骤。
57.为解决上述技术问题本技术实施例还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述数据流生成方法的步骤。
58.为解决上述技术问题本技术实施例还提供一种计算机程序产品,包括计算机程序及计算机指令,该计算机程序及计算机指令被处理器执行时,使得所述处理器执行上述所述数据流生成方法的步骤。
59.相对于现有技术,本技术的优势如下:
60.本技术为平台提供数据同步服务以便平台进行不同数据库集群之间的数据同步处理,该数据同步服务可将第一数据库集群需读取的数据表分配给各工作线程,以调度各工作线程读取数据表中的第一数据库集群的第一数据,进而形成对应的数据流推送至需进行数据同步的第二数据库集群,且在分配各工作线程所需读取的数据表时,将同一数据库的数据表分配给同一工作线程,以防止多线程并发读取单一数据库,减轻数据库的负载,保证数据同步服务的系统稳定性。
61.其次,本技术的工作线程将从第一数据库集群所读取的第一数据映射为第二数据,该第二数据的数据类型及数据格式符合需进行数据同步的第二数据库集群的存储方式,以保证推送至第二数据库集群的数据可被有效使用,提升数据同步服务的数据同步效率。
62.另外,本技术的数据同步服务将控制各工作线程读取第一数据的读取速度及负责进行数据流提升的数据推送器推送第二数据的推送速度,通过控制数据的读取及推送速度以保证数据同步服务的数据读取及数据传输的稳定性,且防止巨量的数据堵塞进行数据同步的数据库之间的数据通信链路。
63.可以理解,本技术的数据同步服务易于上手,平台人员仅需配置需进行数据同步的数据库及其数据表,数据同步服务即可根据配置信息分配各工作线程所需读取的数据表,且平台人员可通过配置全局速度以控制数据同步服务的数据读取及推送速度,保证数据同步服务的服务稳定性。
communications service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;pda(personal digital assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或gps(global positioning system,全球定位系统)接收器;传统膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的传统膝上型和/或掌上型计算机或其他设备。这里所使用的“客户端”、“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“客户端”、“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是pda、mid(mobile internet device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
78.本技术所称的“服务器”、“客户端”、“工作节点”等名称所指向的硬件,本质上是具备个人计算机等效能力的电子设备,为具有中央处理器(包括运算器和控制器)、存储器、输入设备以及输出设备等冯诺依曼原理所揭示的必要构件的硬件装置,计算机程序存储于其存储器中,中央处理器将存储在外存中的程序调入内存中运行,执行程序中的指令,与输入输出设备交互,借此完成特定的功能。
79.需要指出的是,本技术所称的“服务器”这一概念,同理也可扩展到适用于服务器机群的情况。依据本领域技术人员所理解的网络部署原理,所述各服务器应是逻辑上的划分,在物理空间上,这些服务器既可以是互相独立但可通过接口调用的,也可以是集成到一台物理计算机或一套计算机机群的。本领域技术人员应当理解这一变通,而不应以此约束本技术的网络部署方式的实施方式。
80.请参阅图1,本技术相关技术方案实施时所需的硬件基础可按图中所示的架构进行部署。本技术所称服务器80部署在云端,作为一个在线服务器,其可以负责进一步连接起相关数据服务器以及其他提供相关支持的服务器等,以此构成逻辑上相关联的服务机群,来为相关的终端设备例如图中所示的智能手机81和个人计算机82或者第三方服务器(未图示)提供服务。所述的智能手机和个人计算机均可通过公知的网络接入方式接入互联网,与云端的服务器80建立数据通信链路,以便运行所述服务器所提供的服务相关的终端应用程序。
81.对于服务器而言,所述的应用程序通常会被构建为服务进程,开放相应的程序接口,供各种终端设备上运行的应用程序进行远程调用,本技术中适于运行于服务器的相关技术方案,便可以此种方式实现于服务器中。
82.所述的应用程序,是指运行于服务器或终端设备上的应用程序,这一应用程序采用编程的方式实现了本技术的相关技术方案,其程序代码可被以计算机可执行指令的形式保存于计算机能识别的非易失性存储介质中,并被中央处理器调入内存中运行,通过该应用程序在计算机的运行而构造出本技术的相关装置。
83.对于服务器而言,所述的应用程序通常会被构建为服务进程,开放相应的程序接口,供各种终端设备上运行的应用程序进行远程调用,本技术中适于运行于服务器的相关技术方案,便可以此种方式实现于服务器中。
84.本领域技术人员对此应当知晓:本技术的各种方法,虽然基于相同的概念而进行描述而使其彼此间呈现共通性,但是,除非特别说明,否则这些方法都是可以独立执行的。
同理,对于本技术所揭示的各个实施例而言,均基于同一发明构思而提出,因此,对于相同表述的概念,以及尽管概念表述不同但仅是为了方便而适当变换的概念,应被等同理解。
85.请参阅图2,本技术的一种数据流生成方法,在其典型实施例中,其包括如下步骤:
86.步骤s11,响应作用于第一数据库集群的数据流生成指令,根据数据读取配置信息,确定各工作线程各自对应的待读取数据表,所述待读取数据表存储于第一数据库集群的数据库中:
87.所述的数据读取配置信息中包含一个或多个由数据库名称及数据表名称组成的映射关系数据,该些映射关系数据由处于管理端的管理人员所编辑以同步所述第一数据库集群与第二数据库集群之间的数据,管理端将由开发人员编辑的映射关系数据封装为所述读取配置信息,将向服务器推送包含该数据读取配置信息的所述数据流生成指令,以便服务器响应该数据流生成指令,根据所述读取配置信息中包含的映射关系数据,调度各所述工作线程读取对应的数据库中对应的数据表所存储第一数据。
88.所述的第一数据库集群中包含多个数据库,各所述数据库中具有一个或多个数据表,存储于该些数据库中的数据为所述第一数据,服务器需根据所述数据读取配置信息中包含的数据库名称及数据表名称,调度其具有的各工作线程从对应的数据表中读取第一数据,以将该些第一数据推送至所述第二数据库集群中,同步该第二数据库集群中存储的数据与第一数据库集群中存储的数据,保证第一数据库集群与第二数据库集群的数据一致性。
89.所述的工作线程用于从对应的数据表中读取第一数据,并将其读取所得的第一数据映射为适用于第二数据库集群存储的第二数据,即所述工作线程为所述第一数据库集群的数据消费线程,负责从服务器根据所述数据读取配置信息而为其分配的数据表中消费第一数据,进而将其所消费的第一数据映射对应的所述第二数据。
90.所述的待读取数据库是指由服务器根据所述数据读取配置信息为各工作线程所分配的数据表,即该谢工作线程所需读取的数据表,具体的,服务器根据所述数据读取配置信息中包含的数据库名称及其对应数据表名称,为各工作线程分配对应的数据库及数据库中其所需读取的数据表,其中,服务器一般将同一数据库所述的数据表分配给一个工作线程,以防止多个工作线程并发访问一个数据库,对数据库造成访问压力。
91.步骤s12,驱动各所述工作线程从各自对应的待读取数据表中读取第一数据,并根据全局速度配置信息,控制该些工作线程读取其待读取数据表的读取速度:
92.服务器根据所述数据读取配置信息分配各工作线程各种的待读取数据表后,将驱动该些工作线程读取其所对应的待读取数据表,以读取待读取数据表中存储的第一数据。
93.所述第一数据一般是指待读取数据表的快照数据或增量数据,通过驱动各所述工作线程读取各自对应的数据表中存储的第一数据,以保证所述第一数据库集群与第二数据库集群之间的数据一致性,其中,若工作线程所读取的第一数据为快照数据时,则工作线程将从所述待读取数据表所对应的快照数据表中读取其具有的快照数据,若工作线程所读取的对应数据为增量数据时,则工作线程将从所述待读取数据表中读取其新存储的增量数据;另外,所述第一数据也可指全量数据,当工作线程所读取的第一数据为全量数据时,工作线程将从读取其所对应的待读取数据表中存储的所有数据,该情况一般应用于在所述第二数据库集群为新部署且未具有第一数据库存储的任何数据的场景中。
94.所述第一数据库集群中的数据表的快照数据存储方式可为cow(写时拷贝)或row(写时重定向),当当前工作线程所读取的待读取数据表为cow的快照存储方式存储快照数据时,当前工作线程获取待读取数据表所对应的快照数据表,读取该快速数据表中各快照数据存储位置存储的第一数据,所述第一数据是指快照数据,当当前读取的快照存储位置中不存在第一数据时,则确定该快照数据存储位置的快速存储位置,从地址映射表中查询出该快照存储地址所对应的源存储地址,以查询出当前待读取数据表中所述源存储地址所对应的源数据存储位置,读取该源数据存储位置所存储的第一数据,以此类推,当前工作线程读取出读取待读取数据表的所有第一数据;当当前工作线程所读取的待读取数据表为row的快照存储方式存储快照数据时,则该待读取数据表存储其具的所有快照数据的快照数据表,因此,当前工作线程可从待读取数据表的快照数据表中读取该待读取数据表的所有快照数据。
95.所述的全局速度配置信息中包含数据读取速度以控制各所述工作线程读取第一数据的速度,服务器将根据该数据读取速度限定各工作线程读取第一数据的速度,例如,在面对第二数据库集群需快速地从第一数据库集群获取数据进行同步时,可将所述数据读取速度设置至较高的速度,以提升同步数据的速率,当然,也可将数据读取数据调整至较低的速度,以在数据并发时,保护第一数据库集群及第二数据库集群间数据传输的稳定性。
96.步骤s13,驱动各所述工作线程将各自所读取的第一数据映射为适用于第二数据库集群存储的第二数据,并将该些第二数据推送至数据流推送器中:
97.所述工作线程从其对应的待读取数据表中读取出第一数据后,将该第一数据映射为所述第二数据,以便第二数据库集群进行存储,例如,当第一数据库集群为基于mysql构建的数据库集群,而第二数据库集群为基于kafka构建的数据库集群,所述工作线程从所述第一数据库集群中读取的第一数据为岁数属性的“18”,则该工作线程将该第一数据映射为{“year”:18}json数据格式,而当第一数据为时间属性的“2013/3/4”的时间数据类型时,因kafka不支持时间数据类型的数据,因此所述工作线程将该第一数据映射为{“time”:“2013/3/4”}json数据格式,其中,“2013/3/4”为字符串数据类型。
98.具体的,当前工作线程读取出当前待读取数据表的第一数据时,确定该第一数据所对应的数据类型及键数据,且校验所述第一数据的数据类型是否满足预设的第二数据类型规则,若不满足,则将所述第一数据的数据类型修改为对应的第二数据类型,如上所述的将时间数据类型修改为字符串数据类型,并生成包含所述第一数据及键数据的第二数据,将该第二数据推送至数据流推送器中。
99.所述的数据流推送器负责接收各工作线程推送的第二数据,以将该些第二数据以数据流的形式推送至所述第二数据库集群中,且所述数据流推送器在推送第二数据时,将根据所述全局速度配置信息中包含的数据推送速度,控制向第二数据库集群推送所述第二数据的推送速度。
100.步骤s14,驱动数据流推送器将各第二数据逐一推送至第二数据库集群中,并根据所述全局速度配置信息,控制数据流推送器推送第二数据的推送速度:
101.所述数据流推送器获取各工作线程所推送的第二数据后,将根据接收该些第二数据的时间,按序存储至数据推送队列中,以将所述数据推送队列中存储的第二数据逐一按序推送至所述第二数据库集群中。
102.所述的数据流推送器接收到当前最新进行数据推送的工作线程所推送的第二数据,将该第二数据存储至数据推送队列中最靠前的存储位置,若当所述推送队列中存储着其他第二数据时,所述数据流推送器将数据推送队列中最靠后的存储位置存储的第二数据推送至第二数据库集群中,以此类推,处理所述数据推送队列的第二数据存储及推送。
103.所述数据流推送器在向所述第二数据库集群推送第二数据时,将根据全局速度配置信息包含的数据推送速度控制第二数据的推送速度,所述数据推送速度一般与所述全局速度配置信息中包含的数据读取数据的速度相同,以保证读取与推送的速度可同步运行,且保证数据数据通信链路可稳定进行数据传输。
104.通过本方法的典型实施例可知,本方法为平台提供数据同步服务以便平台进行不同数据库集群之间的数据同步处理,该数据同步服务可将第一数据库集群需读取的数据表分配给各工作线程,以调度各工作线程读取数据表中的第一数据库集群的第一数据,进而形成对应的数据流推送至需进行数据同步的第二数据库集群,且在分配各工作线程所需读取的数据表时,将同一数据库的数据表分配给同一工作线程,以防止多线程并发读取单一数据库,减轻数据库的负载,保证数据同步服务的系统稳定性。
105.其次,本方法的工作线程将从第一数据库集群所读取的第一数据映射为第二数据,该第二数据的数据类型及数据格式符合需进行数据同步的第二数据库集群的存储方式,以保证推送至第二数据库集群的数据可被有效使用,提升数据同步服务的数据同步效率。
106.另外,本方法的数据同步服务将控制各工作线程读取第一数据的读取速度及负责进行数据流提升的数据推送器推送第二数据的推送速度,通过控制数据的读取及推送速度以保证数据同步服务的数据读取及数据传输的稳定性,且防止巨量的数据堵塞进行数据同步的数据库之间的数据通信链路。
107.可以理解,本方法的数据同步服务易于上手,平台人员仅需配置需进行数据同步的数据库及其数据表,数据同步服务即可根据配置信息分配各工作线程所需读取的数据表,且平台人员可通过配置全局速度以控制数据同步服务的数据读取及推送速度,保证数据同步服务的服务稳定性。
108.以上的典型实施例及其变化实施例充分揭示了本技术的数据流生成方法的实施方案,但是,仍可通过对一些技术手段的变换和扩增而演绎出该方法的多种变化实施例,如下概要说明其他实施例:
109.一种实施例中,请参考图3,根据数据读取配置信息,响应作用于第一数据库集群的数据流生成指令,根据数据读取配置信息,确定各工作线程各自对应的待读取数据表,所述待读取数据表存储于第一数据库集群的数据库中的步骤中,包括如下步骤:
110.步骤s111,响应所述数据流生成指令,获取该数据流生成指令中包含的数据读取配置信息:
111.所述的数据流生成指令一般由管理端所触发推送,该管理端一般与服务器进行远程通信,以便平台中远程维护服务器中的数据同步服务,当然,部分的管理端也可由服务器进行本地通信。
112.所述数据流生成指令中包含的数据读取配置信息一般由处于管理端的开发人员所编辑,开发人员可在管理端中编辑所述数据读取配置信息中包含的数据库名称及其对应
的数据表名称。
113.步骤s112,获取所述数据读取配置信息中包含的多个由数据库名称及数据表名称的映射关系数据:
114.各所述映射关系数据中对应存储的数据库名称及数据表名称一般由管理点的开发人员所编辑,以驱动服务器调度各工作线程,第一数据库集群中与各映射关系数据中包含的数据表名称所对应的数据表的第一数据映射为第二数据推送至第二数据库集群中。
115.步骤s113,将具有同一数据库名称的映射关系数据的数据表名所对应的数据表确定为同一工作线程的待读取数据表,以此类推,确定出各工作线程的待读取数据表:
116.服务器获取各所述映射关系数据后,将具有同一数据库名称所对应存储的数据表名称的数据表分配至同一工作线程中,即一个数据库一般仅由一个工作线程负责其存储的数据表中第一数据的读取,防止并发连接数据库,保证数据库的稳定性。
117.本实施例中,管理人员可自定义数据同步服务所读取的数据库及数据表,以控制数据同步服务的数据读取,且数据同步服务将调度工作线程所读取的数据库及数据表,保证同一数据库仅被一个工作线程所读取,防止并发连接数据库,保证数据库的稳定性。
118.一种实施例中,请参考图4,驱动各所述工作线程从各自对应的待读取数据表中读取第一数据,并根据全局速度配置信息,控制该些工作线程读取其待读取数据表的读取速度的步骤中,包括如下步骤:
119.步骤s121,获取当前待读取数据表所对应的快照数据表,读取该快速数据表中各快照数据存储位置存储的第一数据:
120.所述的快照数据表基于cow(写时拷贝)快照存储方式所构建,该快照数据表中仅存储源数据表中发生修改的第一数据,所述源数据表是指该快照数据所对应的待读取数据表,具体的,在完成快速数据表的创建后,需存储第一数据至源数据表时,将分别存储至所述源数据表及快照数据表中。
121.步骤s122,当当前读取的快照存储位置中不存在第一数据时,则确定该快照数据存储位置的快速存储位置,从地址映射表中查询出该快照存储地址所对应的源存储地址:
122.所述的地址映射表中存储着待读取数据表中各第一数据的源存储地址及快速数据表中各快照存储地址,源存储地址与快速存储地址为相互映射,即存储在快速数据表中的第一数据所对应的快速存储地址与待读取数据表中具有该第一数据的源存储地址对应存储至所述地址映射表中,因此,当所述快照数据表中对应的快速存储位置不存在需读取的第一数据时,将确定该快照数据存储位置的快速存储位置,以从所述地址映射表中查询出该快照存储地址所对应的源存储地址,进而从对应的待读取数据表中源存储地址中获取所述第一数据。
123.步骤s123,查询出当前待读取数据表中所述源存储地址所对应的源数据存储位置,读取该源数据存储位置所存储的第一数据:
124.当前工作线程从所述地址映射表中查询出所述快照存储地址所对应的源存储地址后,将查询读取待读取数据表中该源存储地址所对应的源数据存储位置,以读取该源数据存储位置所存储的第一数据。
125.步骤s124,以此类推,读取出读取待读取数据表的所有第一数据,其中,读取各所述第一数据的过程中将根据全局速度配置信息包含的数据读取速度控制读取速度:
126.各所述工作线程在读取基于cow(写时拷贝)快照存储方式进行快照数据存储的数据表所存储的快照数据时,皆按照上述方式进行快速数据读取,且各工作线程在读取其对应的待读取数据表的第一数据时,将根据全局速度配置信息包含的数据读取速度控制其读取第一数据的读取速度。
127.本实施例中,工作线程可读取第一数据库集群中存储的快照数据,以保证所述第一数据库集群与第二数据库集群之间的数据一致性,且工作线程根据全局速度配置信息中包含的速度读取数据控制其读取第一数据的速度,以保证数据传输的稳定性。
128.一种实施例中,请参考图5,驱动各所述工作线程将各自所读取的第一数据映射为适用于第二数据库集群存储的第二数据,并将该些第二数据推送至数据流推送器中的步骤中,包括如下步骤:
129.步骤s131,读取出当前待读取数据表的第一数据时,确定该第一数据所对应的数据类型及键数据:
130.工作线程从其当前待读取数据表中读取出第一数据后,将确定该第一数据所对应的数据类型及键数据,所述键数据一般是指第一数据在待读取数据表中的数据属性,例如,当所述第一数据为表征用户年龄的数据时,其对应的键数据一般为“years”或“user years”,且该第一数据的数据类型一般为int或short等整型数据类型。
131.步骤s132,校验所述第一数据的数据类型是否满足预设的第二数据类型规则,若不满足,则将所述第一数据的数据类型修改为对应的第二数据类型:
132.因所述第二数据库集群与第一数据库集群可存储的数据类型一般互不相同,例如,对于基于mysql构建的第一数据库集群可存储的数据类型包含时间数据类型,而基于kafka构建的第二数据库集群不持支时间数据类型,因此,工作线程可通过为所述第二数据库集群所预设的所述第二数据类型规则,确定所述第二数据库集群支持的数据类型,若当前的第一数据的数据类型不满足该第二数据类型规则,则将该第一数据的数据类型对应修改为所述第二数据类型规则所支持的数据类型,例如,当所述第一数据的数据类型为时间数据类型,则将该第一时间的时间类型修改为字符串数据类型或整型数据类型。
133.步骤s133,生成包含所述第一数据及键数据的第二数据,将该第二数据推送至数据流推送器中:
134.当第二数据库集群为基于kafka构建的数据库集群,所述工作线程将所述第一数据映射为{“year”:18}的json数据格式作为对应的第二数据,其中,“18”为第一数据,而“year”为该第一数据的键数据。
135.本实施例中,工作线程读取出第一数据后,将通过第二数据类型规则校验第一数据是否为第二数据库集群所支持的数据类型,若否,则将对应修改第一数据的数据类型,且将第一数据映射为适用于第二数据库集群存储的第二数据,以保证第二数据库集群可存储有效第一数据,即保证数据的有效性。
136.一种实施例中,请参考图6,驱动数据流推送器将各第二数据逐一推送至第二数据库集群中,并根据所述全局速度配置信息,控制数据流推送器推送第二数据的推送速度的步骤中,包括如下步骤:
137.步骤s141,获取当前最新进行数据推送的工作线程所推送的第二数据,将该第二数据存储至数据推送队列中最靠前的存储位置:
138.所述的数据推送队列用于存储推送至第二数据库集群的第二数据,所述数据推送队列依照先入先出的规则将其存储的第二数据按序推送至所述第二数据库集群中,所述数据流推送器将确定其所接收到的各第二数据的接收时间,将接收时间最早的第二时间优先存储至所述数据推送队列中。
139.步骤s142,将数据推送队列中最靠后的存储位置存储的第二数据推送至第二数据库集群中:
140.所述数据推送器依照先入队先出队的规则,将所述数据推送队列中最靠后的存储位置存储的第二数据推送至第二数据库集群中。
141.步骤s143,以此类推,处理所述数据推送队列的第二数据存储及推送,并根据全局速度配置信息包含的数据推送速度控制第二数据的推送速度:
142.所述数据推送器将所述数据推送队列中先入队的第二数据优先出队推送至所述第二数据集群中,以形成数据流进行各所述第二数据的数据推送至所述第二数据库集群中。
143.所述数据流推送器在向所述第二数据库集群推送第二数据时,将根据全局速度配置信息包含的数据推送速度控制第二数据的推送速度,所述数据推送速度一般与所述全局速度配置信息中包含的数据读取数据的速度相同,以保证读取与推送的速度可同步运行,且保证数据数据通信链路可稳定进行数据传输。
144.本实施例中,数据推送队列将按照优先接收的第二数据存储至数据推送队列中,以依照先入队先出队的规则推送第二数据,保证数据的时效性,且将根据全局速度配置信息控制其推送第二数据的推送速度,保证其与第二数据库集群的数据通信链路的数据传输的稳定性。
145.一种实施例中,请参考图7,本方法包括如下同步步骤:
146.步骤s15,响应工作线程的工作错误事件,确定该工作错误事件所对应的待读取数据表:
147.所述的工作错误事件是指工作线程加载其待读取数据表时出现数据读取错误等读取问题时所触发的事件,服务器监听各工作线程,当任一工作线程触发所述工作错误事件时,服务器将响应该工作错误事件以确定触发事件读取问题的待读取数据表。
148.步骤s16,确定所述待读取数据表所属的数据库,确定当前读取该数据库存储的数据表的工作线程,将所述待读取数据表分配至该工作线程,由该工作线程重新读取所述待读取数据表的第一数据:
149.确定出所述工作错误事件的待读取数据表,将确定存储该待读取数据表的数据库,以确定出当前负责读取该数据库的数据表的工作线程,进而将所述待读取数据表分配至该工作线程进行第一数据读取,防止并发读取数据库。
150.本实施例中,服务器将监听各工作线程的工作错误事件,进而将出现读取错误的数据表重新分配给当前负责当前该数据表所属的数据库的工作线程,以进行重试该数据表的第一数据读取。
151.进一步,可以通过将上述各实施例所揭示的方法中的各个步骤进行功能化,构造出本技术的一种数据流生成装置,按照这一思路,请参阅图8,其中的一个典型实施例中,该装置包括:数据表分配模块11,用于响应作用于第一数据库集群的数据流生成指令,根据数
据读取配置信息,确定各工作线程各自对应的待读取数据表,所述待读取数据表存储于第一数据库集群的数据库中;读取速度控制模块12,用于驱动各所述工作线程从各自对应的待读取数据表中读取第一数据,并根据全局速度配置信息,控制该些工作线程读取其待读取数据表的读取速度;映射数据推送模块13,用于驱动各所述工作线程将各自所读取的第一数据映射为适用于第二数据库集群存储的第二数据,并将该些第二数据推送至数据流推送器中;数据流推送模块14,用于驱动数据流推送器将各第二数据逐一推送至第二数据库集群中,并根据所述全局速度配置信息,控制数据流推送器推送第二数据的推送速度。
152.一种实施例中,所述数据表分配模块11包括:读取配置信息获取子模块,用于响应所述数据流生成指令,获取该数据流生成指令中包含的数据读取配置信息;关系数据获取子模块,用于获取所述数据读取配置信息中包含的多个由数据库名称及数据表名称的映射关系数据;数据表规划子模块,用于将具有同一数据库名称的映射关系数据的数据表名所对应的数据表确定为同一工作线程的待读取数据表,以此类推,确定出各工作线程的待读取数据表。
153.一种实施例中,所述读取速度控制模块12包括:快速数据表读取子模块,用于获取当前待读取数据表所对应的快照数据表,读取该快速数据表中各快照数据存储位置存储的第一数据;地址映射表查询子模块,用于当当前读取的快照存储位置中不存在第一数据时,则确定该快照数据存储位置的快速存储位置,从地址映射表中查询出该快照存储地址所对应的源存储地址;源数据读取子模块,用于查询出当前待读取数据表中所述源存储地址所对应的源数据存储位置,读取该源数据存储位置所存储的第一数据;数据读取控制子模块,用于以此类推,读取出读取待读取数据表的所有第一数据,其中,读取各所述第一数据的过程中将根据全局速度配置信息包含的数据读取速度控制读取速度。
154.一种实施例中,所述映射数据推送模块13包括:数据类型确定子模块,用于读取出当前待读取数据表的第一数据时,确定该第一数据所对应的数据类型及键数据;数据类型校验子模块,用于校验所述第一数据的数据类型是否满足预设的第二数据类型规则,若不满足,则将所述第一数据的数据类型修改为对应的第二数据类型;第二数据生成子模块,用于生成包含所述第一数据及键数据的第二数据,将该第二数据推送至数据流推送器中。
155.一种实施例中,所述数据流推送模块14包括:第二数据存储子模块,用于获取当前最新进行数据推送的工作线程所推送的第二数据,将该第二数据存储至数据推送队列中最靠前的存储位置;第二数据推送子模块,用于将数据推送队列中最靠后的存储位置存储的第二数据推送至第二数据库集群中;推送速度控制子模块,用于以此类推,处理所述数据推送队列的第二数据存储及推送,并根据全局速度配置信息包含的数据推送速度控制第二数据的推送速度。
156.为解决上述技术问题,本技术实施例还提供一种计算机设备,用于运行根据所述数据流生成方法所实现的计算机程序。具体请参阅图9,图9为本实施例计算机设备基本结构框图。
157.如图9所示,计算机设备的内部结构示意图。该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种数据流生成方法。该计算机设备的处理
器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种数据流生成方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图9中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
158.本实施方式中处理器用于执行本技术的数据流生成装置中的各个模块/子模块的具体功能,存储器存储有执行上述模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有数据流生成装置中执行所有模块/子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
159.本技术还提供一种非易失性存储介质,所述的数据流生成方法被编写成计算机程序,以计算机可读指令的形式存储于该存储介质中,计算机可读指令被一个或多个处理器执行时,意味着该程序在计算机中的运行,由此使得一个或多个处理器执行上述任一实施例数据流生成方法的步骤。
160.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)等非易失性存储介质,或随机存储记忆体(random access memory,ram)等。
161.综上所述,本技术可规划数据读取任务,并控制数据的读取及推送速度,提升进行数据流处理双方数据库的稳定性。
162.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
163.本技术领域技术人员可以理解,本技术中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本技术中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本技术中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
164.以上所述仅是本技术的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1