CN114979289B - 数据分发方法、装置、***、设备、介质和程序产品 - Google Patents
数据分发方法、装置、***、设备、介质和程序产品 Download PDFInfo
- Publication number
- CN114979289B CN114979289B CN202210553667.9A CN202210553667A CN114979289B CN 114979289 B CN114979289 B CN 114979289B CN 202210553667 A CN202210553667 A CN 202210553667A CN 114979289 B CN114979289 B CN 114979289B
- Authority
- CN
- China
- Prior art keywords
- data
- full
- data storage
- keyword
- data acquisition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000013500 data storage Methods 0.000 claims abstract description 272
- 238000004590 computer program Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims description 64
- 230000008569 process Effects 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 17
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000008447 perception Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 8
- 238000012549 training Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开提供了一种数据分发方法、装置、***、电子设备、计算机可读存储介质以及计算机程序产品,涉及数据分发技术领域。该方法包括:响应于预设服务实例的启动指令,启动全量数据获取线程;通过全量数据获取线程确定至少一第一数据存储端,从确定出的至少一第一数据存储端获取并存储全量数据;第一数据存储端存储有全量数据;基于预设服务实例启动增量数据获取线程,通过增量数据获取线程从第二数据存储端获取并存储增量数据;响应于数据获取请求,将全量数据与增量数据分发至数据获取请求对应的用户端。本公开可以更快的读取历史全量数据,避免造成数据读取压力,节省大量机器成本,同时通过内部进行增量数据和全量数据分发,无需用户感知。
Description
技术领域
本公开涉及数据分发技术领域,尤其涉及一种数据分发方法、数据分发装置、数据分发***、电子设备、计算机可读存储介质以及计算机程序产品。
背景技术
数据分发是指将数据通过网络传递到不同节点的过程。目前,在多种应用场景中均涉及数据分发处理,例如,可以采用二进制树消息队列(Binary Tree Queue,BTQ)***进行数据分发。参考图1,图1是目前在机器学习场景下通过BTQ传输模型数据的一个应用场景图。在此应用场景中,包含BTQ***、训练服务、预估服务、应用程序接口与使用BTQ***的用户等。
在该场景中,预估服务在启动时,需要回溯BTQ***去读取一份最近的全量模型数据;在回溯全量模型数据的过程中,不同数据消费者的消费进度并不一致,另外,由于需要尽快的回溯完整个全量模型,需要以模型正常的写入流量的数倍读出,这样客户端缓存会采用更快的数据淘汰速度。基于上述原因,将导致产生BTQ服务端的数据读取压力过大等问题。
发明内容
本公开提供一种数据分发方法、数据分发装置、数据分发***、电子设备、计算机可读存储介质以及计算机程序产品,以至少解决相关技术中现有数据分发方案在回溯全量数据时由于数据消费速度不一致导致服务端数据读取压力较大,且需要用户自己开启线程导致实现复杂的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据分发方法,包括:响应于预设服务实例的启动指令,启动全量数据获取线程;通过所述全量数据获取线程确定至少一第一数据存储端,从确定出的至少一第一数据存储端获取并存储全量数据;所述第一数据存储端存储有全量数据;基于所述预设服务实例启动增量数据获取线程,通过所述增量数据获取线程从第二数据存储端获取并存储增量数据;所述第二数据存储端包括数据分发服务端;响应于数据获取请求,将所述全量数据与所述增量数据分发至所述数据获取请求对应的用户端。
在本公开的一种示例性实施例中,通过所述全量数据获取线程确定至少一第一数据存储端,包括:确定所有已启动的数据存储端,向各所述数据存储端发送全量数据获取请求;接收至少一所述数据存储端基于所述全量数据获取请求返回的响应报文,将返回所述响应报文的每一所述数据存储端确定为所述第一数据存储端。
在本公开的一种示例性实施例中,在所述接收至少一所述数据存储端基于所述全量数据获取请求返回的响应报文之前,上述方法还包括:获取所述全量数据对应的关键字数量阈值,确定各所述数据存储端所包含的关键字数量;接收所述关键字数量大于所述关键字数量阈值的所述数据存储端发送的所述响应报文;所述响应报文的生成操作通过所述数据存储端进行。
在本公开的一种示例性实施例中,从确定出的至少一所述第一数据存储端获取并存储全量数据,包括:根据接收到的响应报文的数量确定所述第一数据存储端的数量;根据所述第一数据存储端的数量确定对应的数据获取方式,基于与所述第一数据存储端的数量对应的数据获取方式,从发送过所述响应报文的第一数据存储端获取所述全量数据;将所述全量数据存储至本地数据表。
在本公开的一种示例性实施例中,基于与所述第一数据存储端的数量对应的数据获取方式,从发送过所述响应报文的第一数据存储端获取所述全量数据,包括:当所述第一数据存储端的数量为一个时,从确定出的所述第一数据存储端集中获取所述全量数据;当所述第一数据存储端的数量为多个时,从确定出的多个所述第一数据存储端中选取一目标全量存储端;从所述目标全量存储端中获取所述全量数据对应的关键字集合;所述关键字集合包含所述全量数据的所有关键字;根据所述关键字集合从多个所述第一数据存储端中获取所述全量数据。
在本公开的一种示例性实施例中,根据所述关键字集合从多个所述第一数据存储端中获取所述全量数据,包括:将所述关键字集合划分为多个关键字子集,基于所述关键字子集从多个所述第一数据存储端中确定一当前数据存储端;根据所述关键字子集从所述当前数据存储端中获取对应的关键字数值;根据所有所述关键字子集与对应的关键字数值生成所述全量数据。
在本公开的一种示例性实施例中,上述方法还包括:确定获取到的当前数据,确定所述当前数据包含的当前关键字数量;确定所述当前关键字数量是否大于关键字数量阈值;如果所述当前关键字数量大于所述关键字数量阈值,则配置为第一数据存储端。
在本公开的一种示例性实施例中,通过所述增量数据获取线程从第二数据存储端获取并存储增量数据,包括:获取所述预设服务实例对应的数据消费树;基于所述数据消费树并通过所述增量数据获取线程,从所述第二数据存储端获取所述增量数据;将所述增量数据存储至本地数据表。
在本公开的一种示例性实施例中,将所述增量数据存储至本地数据表,包括:对所述增量数据进行格式转换处理,以生成预设格式数据;所述预设格式数据包括键值对格式数据;将所述键值对数据存储至所述本地数据表。
根据本公开实施例的第二方面,提供一种数据分发装置,包括:全量线程启动模块,用于响应于预设服务实例的启动指令,启动全量数据获取线程;全量数据获取模块,用于通过所述全量数据获取线程确定至少一第一数据存储端,从确定出的至少一所述第一数据存储端获取并存储全量数据;所述第一数据存储端存储有全量数据;增量数据获取模块,用于基于所述预设服务实例启动增量数据获取线程,通过所述增量数据获取线程从第二数据存储端获取并存储增量数据;所述第二数据存储端包括数据分发服务端;数据分发模块,用于响应于数据获取请求,将所述全量数据与所述增量数据分发至所述数据获取请求对应的用户端。
在本公开的一种示例性实施例中,所述全量数据获取模块包括全量终端确定单元,所述全量终端确定单元被配置为执行:确定所有已启动的数据存储端,向各所述数据存储端发送全量数据获取请求;接收至少一所述数据存储端基于所述全量数据获取请求返回的响应报文,将返回所述响应报文的每一所述数据存储端确定为所述第一数据存储端。
在本公开的一种示例性实施例中,所述全量终端确定单元包括响应报文发送单元,所述响应报文发送单元被配置为执行:获取所述全量数据对应的关键字数量阈值,确定各所述数据存储端所包含的关键字数量;接收所述关键字数量大于所述关键字数量阈值的所述数据存储端发送的所述响应报文;所述响应报文的生成操作通过所述数据存储端进行。
在本公开的一种示例性实施例中,所述全量数据获取模块还包括全量数据存储单元,所述全量数据存储单元被配置为执行:根据接收到的响应报文的数量确定所述第一数据存储端的数量;根据所述第一数据存储端的数量确定对应的数据获取方式,基于与所述第一数据存储端的数量对应的数据获取方式,从发送过所述响应报文的第一数据存储端获取所述全量数据;将所述全量数据存储至本地数据表。
在本公开的一种示例性实施例中,所述全量数据存储单元还包括全量数据获取单元,所述全量数据获取单元被配置为执行:当所述第一数据存储端的数量为一个时,从确定出的所述第一数据存储端集中获取所述全量数据;当所述第一数据存储端的数量为多个时,从确定出的多个所述第一数据存储端中选取一目标全量存储端;从所述目标全量存储端中获取所述全量数据对应的关键字集合;所述关键字集合包含所述全量数据的所有关键字;根据所述关键字集合从多个所述第一数据存储端中获取所述全量数据。
在本公开的一种示例性实施例中,所述全量数据获取单元还包括全量数据获取子单元,所述全量数据获取子单元被配置为执行:将所述关键字集合划分为多个关键字子集,基于所述关键字子集从多个所述第一数据存储端中确定一当前数据存储端;根据所述关键字子集从所述当前数据存储端中获取对应的关键字数值;根据所有所述关键字子集与对应的关键字数值生成所述全量数据。
在本公开的一种示例性实施例中,所述数据分发装置还包括存储端转换模块,所述存储端转换模块被配置为执行:确定获取到的当前数据,确定所述当前数据包含的当前关键字数量;确定所述当前关键字数量是否大于关键字数量阈值;如果所述当前关键字数量大于所述关键字数量阈值,则配置为第一数据存储端。
在本公开的一种示例性实施例中,所述增量数据获取模块包括增量数据获取单元,所述增量数据获取单元被配置为执行:获取所述预设服务实例对应的数据消费树;基于所述数据消费树并通过所述增量数据获取线程,从所述第二数据存储端获取所述增量数据;将所述增量数据存储至本地数据表。
在本公开的一种示例性实施例中,所述增量数据获取单元包括增量数据存储子单元,所述增量数据存储子单元被配置为执行:对所述增量数据进行格式转换处理,以生成预设格式数据;所述预设格式数据包括键值对格式数据;将所述键值对数据存储至所述本地数据表。
根据本公开实施例的第三方面,提供一种数据分发***,包括:数据分发服务端,用于存储和分发任务运行过程中产生的全量数据与增量数据;数据消费端,用于启动全量数据获取线程,基于所述全量数据获取线程从第一数据存储端获取全量数据;启动增量数据获取线程,基于所述增量数据获取线程从所述数据分发服务端获取增量数据;将所述全量数据与所述增量数据分发至数据获取请求对应的用户端;第一数据存储端,用于采用预设格式存储全量数据,接收所述数据存储端的全量数据获取请求,并基于所述全量数据获取请求向数据存储端发送响应报文。
根据本公开的第四方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现上述任意一项所述的数据分发方法。
根据本公开的第五方面,提供一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任意一项所述的数据分发方法。
根据本公开实施例的第六方面,提供一种计算机程序产品,包括计算机程序/指令,其特征在于,计算机程序/指令被处理器执行时实现上述任意一项所述的数据分发方法。
本公开的实施例提供的技术方案至少带来以下有益效果:一方面,在启动预估服务实例时,启动不同的线程以获取全量数据和增量数据,使得消费用户端无需自行启动消费线程,避免消费用户管理线程模型所产生的代价。另一方面,从确定出的第一数据存储端获取全量数据,可以避免直接从第二数据存储端(即数据分发服务端)获取全量数据,可以有效减轻数据分发服务端的数据读取压力,节省大量的机器成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是目前在机器学习场景下通过BTQ传输模型数据的一个应用场景图。
图2是根据一示例性实施例示出的一种数据分发方法的流程图。
图3是根据一示例性实施例示出的一种数据分发处理的实现框图。
图4是根据一示例性实施例示出的从第一数据存储端获取全量数据的流程图。
图5是根据一示例性实施例示出的一种数据分发装置的框图。
图6是根据一示例性实施例示出的一种数据分发***的框图。
图7示意性示出了根据本公开一示例性实施例的电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1的机器学习场景下的数据分发场景中,用户110可以将通过应用程序接口120将数据获取需求发送至预估服务130中。由于训练服务140在执行过程中,可以产生对应的全量数据和增量数据,训练服务可以实时向二进制树消息分发服务端150(即BTQ服务端)发送增量数据,并以小时级别的发送速度向BTQ服务端发送全量数据,训练服务将训练模型的键值(key-value,kv)数据组织成消息格式,发送给BTQ服务端。使用BTQ服务端的用户需要在预估服务中启动一个消费线程,不停的从BTQ中消费消息,并写入到内存的kv存储中。另外,由于预估服务启动的时候,需要读一份历史的全量模型数据,这时候将直接向BTQ中回溯一份全量模型数据。
采用图1中的实现方案,具有以下特点:(1)用户需要自己实现一套kv存储,代价较高;(2)用户需要自己去开启线程,消费BTQ里面的数据,并且要管理线程模型,操作比较繁琐;(3)在回溯全量模型数据的时候,由于回溯的实例与读取最新数据的实例消费进度不一致,每个消费者的缓存有限,因此,回溯的实例与读取最新数据的实例的消费进度不统一,无法构建到一颗消费者树中,从而导致消费者树***成很多子树,每颗子树都需要去回源BTQ服务端,从而对服务端造成比较大的压力。
基于此,根据本公开的实施方式,提出了一种数据分发方法、数据分发装置、数据分发***、电子设备、计算机可读存储介质以及计算机程序产品。
图2是根据一示例性实施例示出的一种数据分发方法的流程图,如图2所示,数据分发方法用于计算机设备中,其中,本公开中描述的计算机设备可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)等移动终端设备,以及诸如台式计算机等固定终端设备。本示例性实施例以该方法应用于计算机设备进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括计算机设备和服务器的***,并通过计算机设备和服务器的交互实现。具体包括以下步骤。
在步骤S210中,响应于预设服务实例的启动指令,启动全量数据获取线程;
在步骤S220中,通过全量数据获取线程确定至少一第一数据存储端,从确定出的至少一第一数据存储端获取并存储全量数据;第一数据存储端存储有全量数据;
在步骤S230中,基于预设服务实例启动增量数据获取线程,通过增量数据获取线程从第二数据存储端获取并存储增量数据;第二数据存储端包括数据分发服务端;
在步骤S240中,响应于数据获取请求,将全量数据与增量数据分发至数据获取请求对应的用户端。
根据本示例实施例中的数据分发方法,一方面,在启动预估服务实例时,启动不同的线程以获取全量数据和增量数据,使得消费用户端无需自行启动消费线程,避免消费用户管理线程模型所产生的代价。另一方面,从确定出的第一数据存储端获取全量数据,可以避免直接从第二数据服务端即(数据分发服务端)获取全量数据,可以有效减轻数据分发服务端的数据读取压力,节省大量的机器成本。
下面,将对本示例实施例中的数据分发方法进行进一步的说明。
在步骤S210中,响应于预设服务实例的启动指令,启动全量数据获取线程。
在本公开的一些示例性实施例中,预设服务实例可以是运行预设服务的服务端设备所创建出的实例。预设服务可以是读取全量数据和增量数据后以提供指定功能的服务。启动指令可以是创建并启动一个新的预设服务实例的指令。全量数据获取线程可以是为了获取全量数据所采用的线程。
本实施例中的数据分发方法同样是基于BTQ***进行数据分发所提出的解决方案。对于预设服务而言,可以在多个使用BTQ***的服务端中创建预设服务实例。例如,在视频推荐场景中,在视频推荐任务中,可以对推荐模型不断进行模型训练和更新,得到对应的模型数据。预设服务可以是视频推荐服务,因此,预设服务在获取到这些模型数据后,可以提供视频服务。由于视频推荐的分布式架构,多台服务器上均可以运行预设服务,因此,可以在每个服务器上创建一个预设服务实例。
当接收到预设服务实例的启动指令时,响应于该启动指令,启动全量数据获取线程,以基于全量数据获取线程获取全量数据。参考图3,图3是根据一示例性实施例示出的一种数据分发处理的实现框图。图3中,消费用户端可以在预设服务实例中启动全量数据获取线程,并就近拉取全量数据。
在步骤S220中,通过全量数据获取线程确定至少一第一数据存储端,从确定出的至少一所述第一数据存储端获取并存储全量数据。
在本公开的一些示例性实施例中,第一数据存储端可以是存储有全量数据的消费用户端,第一数据存储端上存储有全量数据。消费用户端,又称数据消费端,可以是使用BTQ***的用户所对应的服务端。全量数据可以是数据表中所有的数据,例如,全量数据在整个任务过程中产生的所有数据。
继续参考图3,由于全量数据获取线程可以就近拉取全量数据,因此,全量数据获取线程可以选择从其他预设服务实例所处的消费用户端获取全量数据,而无需直接从BTQ服务端拉取全量数据。当全量数据获取线程从其他消费用户端获取全量数据时,可以先确定一个或多个第一数据存储端,进而基于所确定出的第一数据存储端的数量,采用不同的数据获取方式获取全量数据。在获取到全量数据后,可以将全量数据采用kv格式进行存储处理,保存在内存中,以便后续为发送数据查询请求的终端用户进行数据分发。
在本公开的一种示例性实施例中,确定所有已启动的数据存储端,向各数据存储端发送全量数据获取请求;接收至少一数据存储端基于全量数据获取请求返回的响应报文,将返回响应报文的每一数据存储端确定为第一数据存储端。
其中,数据存储端可以是存储数据的服务端,数据存储端中可以存储有全量数据或增量数据。全量数据获取请求可以是新创建的预设服务实例获取全量数据时所生成的请求。响应报文可以是第一数据存储端向新创建的预设服务实例所处的服务端发送的响应消息。
在确定第一数据存储端时,可以先确定已启动的所有数据存储端,这些数据存储端上均具有已启动的预设服务实例,且均可存储数据。消费用户端可以向已启动的数据存储端发送全量数据获取请求,即询问各个数据存储端上是否存储有全量数据。各个数据存储端在接收到全量数据获取请求后,可以根据各自的数据存储情况,确定是否向消费用户端返回响应报文。消费用户端可以接收数据存储端返回的响应报文,并将接收到的响应报文对应的数据存储端确定为第一数据存储端。当数据存储端向消费用户端返回响应报文时,则认为该数据存储端上存储有全量数据,因此,可以将该数据存储端确定为第一数据存储端,以便后续消费用户端可以从第一数据存储端中获取全量数据。
在本公开的一种示例性实施例中,获取全量数据对应的关键字数量阈值,确定各数据存储端所包含的关键字数量;接收关键字数量大于关键字数量阈值的数据存储端发送的响应报文;响应报文的生成操作通过数据存储端进行。
其中,关键字数量阈值可以是预先配置的用于与关键字数量进行对比的阈值。关键字数量可以是数据存储端中所存储的数据所包含的关键字的个数。
在数据存储端判断是否存储有全量数据时,可以通过下述步骤进行:全量数据可以采用键值对格式(即kv格式)进行存储,对于全量数据而言,具有与其对应的关键字数量阈值。对于每个数据存储端而言,可以确定其自身所存储的数据所包含的关键字的数量,每个数据存储端均可以对所包含的关键字数量与关键字数量阈值进行大小对比。如果关键字数量大于关键字数量阈值,则认为该数据存储端存储有全量数据,并且该数据存储端可以生成响应报文,将生成的响应报文发送至请求获取全量数据的消费用户端。否则,认为该数据存储端中并未存储有全量数据,则该数据存储端不进行任何后续处理。
在本公开的一种示例性实施例中,根据接收到的响应报文的数量确定第一数据存储端的数量;根据第一数据存储端的数量确定对应的数据获取方式,基于与第一数据存储端的数量对应的数据获取方式,从发送过响应报文的第一数据存储端获取全量数据;将全量数据存储至本地数据表。
其中,第一数据存储端的数量可以是存在的所有第一数据存储端的数量。数据获取方式可以是数据消费端从第一数据存储端获取全量数据的具体方式。本地数据表可以是新创建的预设服务实例所处的服务端对应的数据表。
消费用户端在接收到响应报文后,可以确定接收到的响应报文的数量,并将该数量确定为全量存储端数量,即第一数据存储端的个数。在确定出第一数据存储端的数量后,可以基于第一数据存储端的数量确定不同的数据获取方式,并采用对应的数据获取方式从第一数据存储端中获取全量数据。在获取到全量数据后,将全量数据存储至本地内存的数据表中,以便后续进行数据分发。
在本公开的一种示例性实施例中,当第一数据存储端的数量为一个时,从确定出的第一数据存储端集中获取全量数据;当第一数据存储端的数量为多个时,从确定出的多个第一数据存储端中选取一目标全量存储端;从目标全量存储端中获取全量数据对应的关键字集合;关键字集合包含全量数据的所有关键字;根据关键字集合从多个第一数据存储端中获取全量数据。
其中,目标全量存储端可以是用于获取关键字集合所采用的第一数据存储端。关键字集合可以是全量数据中所有关键字组成的集合。
参考图4,图4是根据一示例性实施例示出的从第一数据存储端获取全量数据的流程图。在步骤S410中,当第一数据存储端的数量为一个时,认为存储全量数据的存储端仅有一个,全量数据的获取操作仅能基于该第一数据存储端进行,此时,可以采用集中获取的方式,从该第一数据存储端中获取全量数据。
在步骤S420中,当第一数据存储端的数量为多个时,为了减轻全量数据获取时的数据读取压力,可以采用分散获取方式从多个第一数据存储端中获取全量数据。先从多个第一数据存储端中选取一目标全量存储端。目标全量存储端的选取方式可以采用随机选取的方式确定;例如,采用轮询调度算法(Round-Robin Scheduling)确定目标全量存储端。目标全量存储端的选取方式还可以采用就近选取的方式确定,例如,可以将距离消费用户端最近的第一数据存储端作为目标全量存储端。
在步骤S430中,从目标全量存储端中获取全量数据对应的关键字集合;关键字集合包含全量数据的所有关键字。在确定出目标全量存储端后,可以从目标全量存储端中获取全量数据对应的关键字集合,即获取全量数据中包含的所有关键字(key)。
在步骤S440中,根据关键字集合从多个第一数据存储端中获取全量数据。根据确定出的全量数据中的所有key,从多个第一数据存储端中获取每个key对应的关键字数值,即value值。将获取到的所有key和value值组合在一起,得到全量数据。继续参考图3,全量数据获取线程可以通过消息格式从其他第一数据存储端获取全量数据,在获取到全量数据后,可以解析获取到的消息并更新内存,将获取到的全量数据以kv格式存储在内存中。采用上述数据获取方式,可以无需直接从数据分发服务端获取全量数据,可以更快地获取到全量数据,并避免对数据分发服务端造成压力,可以节省大量机器成本。
在本公开的一种示例性实施例中,将关键字集合划分为多个关键字子集,基于关键字子集从多个第一数据存储端中确定一当前数据存储端;根据关键字子集从当前数据存储端中获取对应的关键字数值;根据所有关键字子集与对应的关键字数值生成全量数据。
其中,关键字子集可以是关键字集合所对应的一个子集,关键字集合可以划分为一个或多个不同的关键字子集。当前数据存储端可以是在获取全量数据的过程中,基于当前的关键字子集获取对应的关键字数值的第一数据存储端。关键字数值可以是关键字子集中每个关键字对应的具体数值。
由于确定出多个第一数据存储端,为了减轻获取全量数据时的数据读取压力,可以将全量数据对应的关键字集合划分为多个关键字子集,即将全量数据中的所有关键字进行划分处理。基于划分得到的多个关键字子集,分别从多个第一数据存储端中获取关键字对应的关键字数值。举例而言,确定出的第一数据存储端的数量为10个,则可以将关键字集合划分为10个关键字子集,基于这些关键字进行数据循环获取操作,每次基于一个关键字子集并采用轮询调度算法选择出一个第一数据存储端作为当前数据存储端,根据这一关键字子集从当前数据存储端中获取该关键字子集对应的关键字数值,即关键字子集中这一部分key对应的value值。
通过上述数据获取方法,可以从多个第一数据存储端中获取到所有的关键字对应的关键字数值,在获取到所有关键字数值后,可以将所有的关键字以及与其对应的关键字数值进行组合处理,得到全量数据。由于当第一数据存储端的数量为多个时,全量数据的获取方式为分散获取的方式,即同时从多个第一数据存储端中获取数据,因此,可以减轻数据获取时机器的读写压力,并且能够以更快的速度读取完全量数据。另外,由于消费用户端可以无需直接从BTQ服务端中获取全量数据,则可以避免对BTQ服务端造成任何压力,可以节省大量的机器成本。
本领域技术人员容易理解的是,对于关键字子集的划分处理,还可以采用其他划分方式进行,对关键字集合进行划分处理,仅是为了可以从多个第一数据存储端中读取关键字数值。
在本公开的一种示例性实施例中,确定获取到的当前数据,确定当前数据包含的当前关键字数量;确定当前关键字数量是否大于关键字数量阈值;如果当前关键字数量大于关键字数量阈值,则配置为第一数据存储端。
其中,当前数据可以是新创建的预设服务实例所处的服务端当前获取到的数据。当前关键字数量可以是当前数据中所包含的关键字的个数。
消费用户端在获取数据的过程中,可以确定当前已经获取到的数据,即当前数据。确定当前数据中包含的当前关键字数量,即消费用户端已获取到的数据中包含的关键字的数量。将当前关键字数量与关键字数量阈值进行对比,当消费用户端中存有的当前关键字数量大于关键字数量阀值,则可以将消费用户端配置为第一数据存储端。此时,可以认为消费用户端中已经存储有全量数据,此时可以将该消费用户端作为第一数据存储端,因此,它可以为其他新的预设服务实例提供数据下载服务。例如,当该消费用户端在接收到其他消费用户端的预估服务实例发送的全量数据获取请求时,可以针对该全量数据获取请求返回响应报文,以提供数据下载服务。
需要说明的是,在本公开的其他示例性实施例中,还可以存在未确定出第一数据存储端的情况,此情形可以认为是数据产生的初始阶段,还未产生全量数据,此时,可以采用增量数据获取的方式从BTQ服务端中获取数据。
在步骤S230中,基于预设服务实例启动增量数据获取线程,通过增量数据获取线程获取并存储增量数据。
在本公开的一些示例性实施例中,增量数据获取线程可以是为了获取增量数据所采用的线程。增量数据可以是上次导出之后的新数据,增量数据可以是上次任务执行过程中所产生的数据。
由于在任务执行过程中,可能不断产生新的数据,即增量数据。当消费用户端启动全量数据获取线程后,可以启动增量数据获取线程。通过增量数据获取线程获取增量数据,并存储获取到的增量数据。
在本公开的一种示例性实施例中,获取预设服务实例对应的数据消费树;基于数据消费树并通过增量数据获取线程,从第二数据存储端获取增量数据;将增量数据存储至本地数据表。
其中,数据消费树可以是预设服务实例从数据分发服务端中获取数据时所构建的消费树。第二数据存储端,又称为数据分发服务端,可以是用于进行数据分发处理的服务端。
增量数据获取线程可以从数据分发服务端(即BTQ服务端)获取增量数据,在通过增量数据获取线程获取增量数据时,可以先获取预设服务实例对应的数据消费树,数据消费树通常采用二叉树的树形结构构建。然后,根据构建出的数据消费树,通过增量数据获取线程从BTQ服务端中获取增量数据。
由于数据消费树呈现二叉树的树形结构,因此,数据消费树可以包含根节点、中间节点和叶子节点等。在增量数据获取过程中,叶子节点和中间节点均可以从对应的父节点中获取增量数据,并且,该消费用户端的数据消费进度一致,在增量数据获取过程中,数据消费树将不会产生***的情况。在获取到增量数据后,可以将增量数据存储至本地内存的数据表中,以便后续对增量数据进行数据分发处理。
在本公开的一种示例性实施例中,对增量数据进行格式转换处理,以生成预设格式数据;预设格式数据包括键值对格式数据;将键值对数据存储至本地数据表。
其中,预设格式数据可以是采用预先定义的数据格式表示的数据。键值对格式数据可以是采用键值对集合格式表示的数据。
在将增量数据存储至本地数据表的过程中,可以对获取到的增量数据进行格式转换处理,例如可以将获取到的增量数据转换为对应的键值对数据格式,即kv数据。将转换得到的kv数据写到本地内存的数据表中进行存储,以便后续根据用户请求进行数据分发处理。
通过上述增量数据的分发方式,在任何写流量的情况下都可以达到比较好的读写比,基本可以达到1:1,对于大流量的(如大于50MB)数据,读写比可以达到5:1,甚至更高,因此,可以节省大量的机器成本。
在步骤S240中,响应于数据获取请求,将全量数据与增量数据分发至对应用户。
在本公开的一些示例性实施例中,数据获取请求可以用户端获取数据所对应的请求。
消费用户服务端可以为程序用户端提供数据传输接口,消费用户服务端可以接收使用应用程序的用户的数据获取请求,响应于程序用户的数据获取请求,确定与数据获取请求对应的数据,并通过数据传输接口将与数据获取请求对应的全量数据或增量数据分发至对应的应用程序使用用户。
综上所述,响应于预设服务实例的启动指令,启动全量数据获取线程;通过全量数据获取线程确定至少一第一数据存储端,从确定出的至少一第一数据存储端获取并存储全量数据;第一数据存储端存储有全量数据;基于预设服务实例启动增量数据获取线程,通过增量数据获取线程从第二数据存储端获取并存储增量数据;第二数据存储端包括数据分发服务端;响应于数据获取请求,将全量数据与增量数据分发至数据获取请求对应的用户端。一方面,在启动预估服务实例时,启动不同的线程以获取全量数据和增量数据,使得消费用户端无需自行启动消费线程,避免消费用户管理线程模型所产生的代价。另一方面,从确定出的第一数据存储端获取全量数据,可以避免直接从第二数据存储端(即数据分发服务端)获取全量数据,可以有效减轻服务端的数据读取压力,节省大量的机器成本。再一方面,在增量数据分发过程中,在任何写流量的情况下均可以达到较好的读写比。
图5是根据一示例性实施例示出的一种数据分发装置框图。参照图5,该数据分发装置500包括:全量线程启动模块510、全量数据获取模块520、增量数据获取模块530以及数据分发模块540。
具体的,全量线程启动模块510,用于响应于预设服务实例的启动指令,启动全量数据获取线程;全量数据获取模块520,用于通过全量数据获取线程确定至少一第一数据存储端,从确定出的至少一第一数据存储端中获取并存储全量数据;第一数据存储端存储有全量数据;增量数据获取模块530,用于基于预设服务实例启动增量数据获取线程,通过增量数据获取线程从第二数据存储端获取并存储增量数据;第二数据存储端包括数据分发服务端;数据分发模块540,用于响应于数据获取请求,将全量数据与增量数据分发至数据获取请求对应的用户端。
在本公开的一种示例性实施例中,全量数据获取模块包括全量终端确定单元,全量终端确定单元被配置为执行:确定所有已启动的数据存储端,向各数据存储端发送全量数据获取请求;接收至少一数据存储端基于全量数据获取请求返回的响应报文,将返回响应报文的每一数据存储端确定为第一数据存储端。
在本公开的一种示例性实施例中,全量终端确定单元包括响应报文发送单元,响应报文发送单元被配置为执行:获取全量数据对应的关键字数量阈值,确定各数据存储端所包含的关键字数量;接收关键字数量大于关键字数量阈值的数据存储端发送的响应报文;响应报文的生成操作通过数据存储端进行。
在本公开的一种示例性实施例中,全量数据获取模块还包括全量数据存储单元,全量数据存储单元被配置为执行:根据接收到的响应报文的数量确定第一数据存储端的数量;根据第一数据存储端的数量确定对应的数据获取方式,基于与第一数据存储端的数量对应的数据获取方式,从发送过响应报文的第一数据存储端获取全量数据;将全量数据存储至本地数据表。
在本公开的一种示例性实施例中,全量数据存储单元还包括全量数据获取单元,全量数据获取单元被配置为执行:当第一数据存储端的数量为一个时,从确定出的第一数据存储端集中获取全量数据;当第一数据存储端的数量为多个时,从确定出的多个第一数据存储端中选取一目标全量存储端;从目标全量存储端中获取全量数据对应的关键字集合;关键字集合包含全量数据的所有关键字;根据关键字集合从多个第一数据存储端中获取全量数据。
在本公开的一种示例性实施例中,全量数据获取单元还包括全量数据获取子单元,全量数据获取子单元被配置为执行:将关键字集合划分为多个关键字子集,基于关键字子集从多个第一数据存储端中确定一当前数据存储端;根据关键字子集从当前数据存储端中获取对应的关键字数值;根据所有关键字子集与对应的关键字数值生成全量数据。
在本公开的一种示例性实施例中,数据分发装置还包括存储端转换模块,存储端转换模块被配置为执行:确定获取到的当前数据,确定当前数据包含的当前关键字数量;确定当前关键字数量是否大于关键字数量阈值;如果当前关键字数量大于关键字数量阈值,则配置为第一数据存储端。
在本公开的一种示例性实施例中,增量数据获取模块包括增量数据获取单元,增量数据获取单元被配置为执行:获取预设服务实例对应的数据消费树;基于数据消费树并通过增量数据获取线程,从第二数据存储端获取增量数据;将增量数据存储至本地数据表。
在本公开的一种示例性实施例中,增量数据获取单元包括增量数据存储子单元,增量数据存储子单元被配置为执行:对增量数据进行格式转换处理,以生成预设格式数据;预设格式数据包括键值对格式数据;将键值对数据存储至本地数据表。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
进一步地,本公开提供了一种数据分发***,图6是根据一示例性实施例示出的一种数据分发***框图。参照图6,该数据分发***600包括:数据分发服务端610、数据消费端620以及第一数据存储端630。
具体的,数据分发服务端610,用于存储和分发任务运行过程中产生的全量数据与增量数据;数据消费端620,用于启动全量数据获取线程,基于全量数据获取线程从第一数据存储端获取全量数据;启动增量数据获取线程,基于增量数据获取线程从数据分发服务端获取增量数据;将全量数据与增量数据分发至数据获取请求对应的用户端;第一数据存储端630,用于采用预设格式存储全量数据,接收数据存储端的全量数据获取请求,并基于全量数据获取请求向数据存储端发送响应报文。
下面参考图7来描述根据本公开的这种实施例的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:上述至少一个处理单元710、上述至少一个存储单元720、连接不同***组件(包括存储单元720和处理单元710)的总线730、显示单元740。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。
存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)721和/或高速缓存存储单元722,还可以进一步包括只读存储单元(ROM)723。
存储单元720可以包括具有一组(至少一个)程序模块725的程序/实用工具724,这样的程序模块725包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备700也可以与一个或多个外部设备770(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述数据分发方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,包括计算机程序/指令,其特征在于,计算机程序/指令被处理器执行时实现上述任意一项所述的数据分发方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (22)
1.一种数据分发方法,其特征在于,包括:
响应于预设服务实例的启动指令,启动全量数据获取线程;
通过所述全量数据获取线程确定至少一第一数据存储端,从确定出的至少一所述第一数据存储端获取并存储全量数据;所述第一数据存储端存储有全量数据,所述全量数据是在所述预设服务实例的整个任务执行过程中产生的所有数据,所述全量数据的数据获取方式基于所述第一数据存储端的数量确定;
基于所述预设服务实例启动增量数据获取线程,通过所述增量数据获取线程从第二数据存储端获取并存储增量数据;所述第二数据存储端包括数据分发服务端;
响应于数据获取请求,将所述全量数据与所述增量数据分发至所述数据获取请求对应的用户端。
2.根据权利要求1所述的方法,其特征在于,所述通过所述全量数据获取线程确定至少一第一数据存储端,包括:
确定所有已启动的数据存储端,向各所述数据存储端发送全量数据获取请求;
接收至少一所述数据存储端基于所述全量数据获取请求返回的响应报文,将返回所述响应报文的每一所述数据存储端确定为所述第一数据存储端。
3.根据权利要求2所述的方法,其特征在于,在所述接收至少一所述数据存储端基于所述全量数据获取请求返回的响应报文之前,所述方法还包括:
获取所述全量数据对应的关键字数量阈值,确定各所述数据存储端所包含的关键字数量;
接收所述关键字数量大于所述关键字数量阈值的数据存储端发送的所述响应报文;所述响应报文的生成操作通过所述数据存储端进行。
4.根据权利要求1所述的方法,其特征在于,所述从确定出的至少一所述第一数据存储端获取并存储全量数据,包括:
根据接收到的响应报文的数量确定所述第一数据存储端的数量;
根据所述第一数据存储端的数量确定对应的数据获取方式,基于与所述第一数据存储端的数量对应的数据获取方式,从发送过所述响应报文的第一数据存储端获取所述全量数据;
将所述全量数据存储至本地数据表。
5.根据权利要求4所述的方法,其特征在于,所述基于与所述第一数据存储端的数量对应的数据获取方式,从发送过所述响应报文的第一数据存储端获取所述全量数据,包括:
当所述第一数据存储端的数量为一个时,从确定出的所述第一数据存储端集中获取所述全量数据;
当所述第一数据存储端的数量为多个时,从确定出的多个所述第一数据存储端中选取一目标全量存储端;
从所述目标全量存储端中获取所述全量数据对应的关键字集合;所述关键字集合包含所述全量数据的所有关键字;
根据所述关键字集合从多个所述第一数据存储端中获取所述全量数据。
6.根据权利要求5所述的方法,其特征在于,所述根据所述关键字集合从多个所述第一数据存储端中获取所述全量数据,包括:
将所述关键字集合划分为多个关键字子集,基于所述关键字子集从多个所述第一数据存储端中确定一当前数据存储端;
根据所述关键字子集从所述当前数据存储端中获取对应的关键字数值;
根据所有所述关键字子集与对应的关键字数值生成所述全量数据。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
确定获取到的当前数据,确定所述当前数据包含的当前关键字数量;
确定所述当前关键字数量是否大于关键字数量阈值;
如果所述当前关键字数量大于所述关键字数量阈值,则配置为第一数据存储端。
8.根据权利要求1所述的方法,其特征在于,所述通过所述增量数据获取线程从第二数据存储端获取并存储增量数据,包括:
获取所述预设服务实例对应的数据消费树;
基于所述数据消费树并通过所述增量数据获取线程,从所述第二数据存储端获取所述增量数据;
将所述增量数据存储至本地数据表。
9.根据权利要求8所述的方法,其特征在于,所述将所述增量数据存储至本地数据表,包括:
对所述增量数据进行格式转换处理,以生成预设格式数据;所述预设格式数据包括键值对格式数据;
将所述键值对数据存储至所述本地数据表。
10.一种数据分发装置,其特征在于,包括:
全量线程启动模块,用于响应于预设服务实例的启动指令,启动全量数据获取线程;
全量数据获取模块,用于通过所述全量数据获取线程确定至少一第一数据存储端,从确定出的至少一所述第一数据存储端获取并存储全量数据;所述第一数据存储端存储有全量数据,所述全量数据是在所述预设服务实例的整个任务执行过程中产生的所有数据,所述全量数据的数据获取方式基于所述第一数据存储端的数量确定;
增量数据获取模块,用于基于所述预设服务实例启动增量数据获取线程,通过所述增量数据获取线程从第二数据存储端获取并存储增量数据;所述第二数据存储端包括数据分发服务端;
数据分发模块,用于响应于数据获取请求,将所述全量数据与所述增量数据分发至所述数据获取请求对应的用户端。
11.根据权利要求10所述的装置,其特征在于,所述全量数据获取模块包括全量终端确定单元,所述全量终端确定单元被配置为执行:
确定所有已启动的数据存储端,向各所述数据存储端发送全量数据获取请求;
接收至少一所述数据存储端基于所述全量数据获取请求返回的响应报文,将返回所述响应报文的每一所述数据存储端确定为所述第一数据存储端。
12.根据权利要求11所述的装置,其特征在于,所述全量终端确定单元包括响应报文发送单元,所述响应报文发送单元被配置为执行:
获取所述全量数据对应的关键字数量阈值,确定各所述数据存储端所包含的关键字数量;
接收所述关键字数量大于所述关键字数量阈值的所述数据存储端发送的所述响应报文;所述响应报文的生成操作通过所述数据存储端进行。
13.根据权利要求10所述的装置,其特征在于,所述全量数据获取模块还包括全量数据存储单元,所述全量数据存储单元被配置为执行:
根据接收到的响应报文的数量确定所述第一数据存储端的数量;
根据所述第一数据存储端的数量确定对应的数据获取方式,基于与所述第一数据存储端的数量对应的数据获取方式,从发送过所述响应报文的第一数据存储端获取所述全量数据;
将所述全量数据存储至本地数据表。
14.根据权利要求13所述的装置,其特征在于,所述全量数据存储单元还包括全量数据获取单元,所述全量数据获取单元被配置为执行:
当所述第一数据存储端的数量为一个时,从确定出的所述第一数据存储端集中获取所述全量数据;
当所述第一数据存储端的数量为多个时,从确定出的多个所述第一数据存储端中选取一目标全量存储端;
从所述目标全量存储端中获取所述全量数据对应的关键字集合;所述关键字集合包含所述全量数据的所有关键字;
根据所述关键字集合从多个所述第一数据存储端中获取所述全量数据。
15.根据权利要求14所述的装置,其特征在于,所述全量数据获取单元还包括全量数据获取子单元,所述全量数据获取子单元被配置为执行:
将所述关键字集合划分为多个关键字子集,基于所述关键字子集从多个所述第一数据存储端中确定一当前数据存储端;
根据所述关键字子集从所述当前数据存储端中获取对应的关键字数值;
根据所有所述关键字子集与对应的关键字数值生成所述全量数据。
16.根据权利要求15所述的装置,其特征在于,所述数据分发装置还包括存储端转换模块,所述存储端转换模块被配置为执行:
确定获取到的当前数据,确定所述当前数据包含的当前关键字数量;
确定所述当前关键字数量是否大于关键字数量阈值;
如果所述当前关键字数量大于所述关键字数量阈值,则配置为第一数据存储端。
17.根据权利要求10所述的装置,其特征在于,所述增量数据获取模块包括增量数据获取单元,所述增量数据获取单元被配置为执行:
获取所述预设服务实例对应的数据消费树;
基于所述数据消费树并通过所述增量数据获取线程,从所述第二数据存储端获取所述增量数据;
将所述增量数据存储至本地数据表。
18.根据权利要求17所述的装置,其特征在于,所述增量数据获取单元包括增量数据存储子单元,所述增量数据存储子单元被配置为执行:
对所述增量数据进行格式转换处理,以生成预设格式数据;所述预设格式数据包括键值对格式数据;
将所述键值对数据存储至所述本地数据表。
19.一种数据分发***,其特征在于,包括:
数据分发服务端,用于存储和分发任务运行过程中产生的全量数据与增量数据;
数据消费端,用于启动全量数据获取线程,基于所述全量数据获取线程从第一数据存储端获取全量数据;启动增量数据获取线程,基于所述增量数据获取线程从所述数据分发服务端获取增量数据;将所述全量数据与所述增量数据分发至数据获取请求对应的用户端;
第一数据存储端,用于采用预设格式存储全量数据,接收所述数据存储端的全量数据获取请求,并基于所述全量数据获取请求向数据存储端发送响应报文。
20.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至9中任一项所述的数据分发方法。
21.一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1至9中任一项所述的数据分发方法。
22.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1-9任一项所述的数据分发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210553667.9A CN114979289B (zh) | 2022-05-19 | 2022-05-19 | 数据分发方法、装置、***、设备、介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210553667.9A CN114979289B (zh) | 2022-05-19 | 2022-05-19 | 数据分发方法、装置、***、设备、介质和程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114979289A CN114979289A (zh) | 2022-08-30 |
CN114979289B true CN114979289B (zh) | 2024-03-19 |
Family
ID=82985208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210553667.9A Active CN114979289B (zh) | 2022-05-19 | 2022-05-19 | 数据分发方法、装置、***、设备、介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114979289B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503166A (zh) * | 2016-10-31 | 2017-03-15 | 百度在线网络技术(北京)有限公司 | 数据存储方法和装置 |
CN111464615A (zh) * | 2020-03-30 | 2020-07-28 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、服务器及存储介质 |
CN113010131A (zh) * | 2021-03-15 | 2021-06-22 | 京东数字科技控股股份有限公司 | 显示内容更新方法、装置、终端、服务器和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7926033B2 (en) * | 2005-05-27 | 2011-04-12 | Cisco Technology, Inc. | Method for supporting new network element software versions in an element management system without upgrading |
US20070078809A1 (en) * | 2005-09-30 | 2007-04-05 | Rockwell Automation Technologies, Inc. | Robust data availability system having decentralized storage and multiple access paths |
US8977600B2 (en) * | 2013-05-24 | 2015-03-10 | Software AG USA Inc. | System and method for continuous analytics run against a combination of static and real-time data |
-
2022
- 2022-05-19 CN CN202210553667.9A patent/CN114979289B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503166A (zh) * | 2016-10-31 | 2017-03-15 | 百度在线网络技术(北京)有限公司 | 数据存储方法和装置 |
CN111464615A (zh) * | 2020-03-30 | 2020-07-28 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、服务器及存储介质 |
CN113010131A (zh) * | 2021-03-15 | 2021-06-22 | 京东数字科技控股股份有限公司 | 显示内容更新方法、装置、终端、服务器和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114979289A (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101196912B (zh) | 用于应用程序状态同步的方法和设备 | |
CN111897638B (zh) | 分布式任务调度方法及*** | |
CN107741976B (zh) | 智能应答方法、装置、介质和电子设备 | |
CN108989397B (zh) | 数据推荐方法、装置及存储介质 | |
WO2021218144A1 (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
JP7397094B2 (ja) | リソース構成方法、リソース構成装置、コンピューター機器、及びコンピュータープログラム | |
CN110489440B (zh) | 数据查询方法和装置 | |
CN113032419B (zh) | 一种多源数据聚合搜索方法、装置、设备及存储介质 | |
CN101313292A (zh) | 对等数据传送指挥协调 | |
CN113806305A (zh) | 数据导出方法及装置、计算机可读存储介质及电子设备 | |
US11308063B2 (en) | Data structure to array conversion | |
CN113204425B (zh) | 供进程管理内部线程的方法、装置、电子设备及存储介质 | |
CN114979289B (zh) | 数据分发方法、装置、***、设备、介质和程序产品 | |
CN113986391B (zh) | 请求处理方法、装置、介质和计算设备 | |
CN112764837B (zh) | 数据上报方法、装置、存储介质及终端 | |
CN111949428B (zh) | 提高小程序服务可用性的方法、装置、设备和存储介质 | |
CN114691703A (zh) | 数据更新方法、装置、电子设备及存储介质 | |
CN112559568A (zh) | 一种虚拟物品确定方法、装置及计算机可读存储介质 | |
CN113904940A (zh) | 资源调整方法、装置、电子设备和计算机可读存储介质 | |
US20080144653A1 (en) | Self learning performance optimized data transfer via one or several communication channels between systems | |
CN107332679B (zh) | 一种无中心信息同步方法及装置 | |
KR100597829B1 (ko) | 온톨로지를 이용한 비즈니스 규칙시스템 및 그 서비스 방법 | |
CN116112497B (zh) | 一种云主机集群的节点调度方法、装置、设备及介质 | |
CN111582398B (zh) | 数据聚类方法、装置、***、服务器以及存储介质 | |
CN114328604B (zh) | 一种提高集群数据采集能力的方法、装置及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |