CN110825533A - 一种数据发射方法及装置 - Google Patents
一种数据发射方法及装置 Download PDFInfo
- Publication number
- CN110825533A CN110825533A CN201810913710.1A CN201810913710A CN110825533A CN 110825533 A CN110825533 A CN 110825533A CN 201810913710 A CN201810913710 A CN 201810913710A CN 110825533 A CN110825533 A CN 110825533A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- grouped
- read
- packet
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据发射方法及装置,其中,所述方法包括:获取数据发射指令,所述数据发射指令指向与至少一个发射数据关联的多个分组数据;从所述多个分组数据中确定已在本地数据池中存储的目标分组数据,其中,每个所述目标分组数据中包括至少一个数据堆;在当前批次中读取至少一个所述目标分组数据,其中,若读取至少两组目标分组数据,所述至少两组目标分组数据中各个数据堆的堆数总和小于或者等于指定堆数阈值;将当前批次读取的所述目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。本申请提供的技术方案,能够提高数据处理的效率。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种数据发射方法及装置。
背景技术
随着互联网中数据量的不断增长,目前通常基于分布式系统来处理庞大的网络数据量。其中,Storm作为一个分布式实时大数据处理系统,其具有巨大的处理数据的能力,且具备较高的可扩展性,在负载增加的情况下可以通过线性增加资源来保持性能。
另外,Kafka是一个分布式的消息系统,它可用于将日志持久化到磁盘中。Kafka在保存数据时,通常可以根据数据的主题(topic)进行归类,同时每个数据主题中可以包含多个分组数据(partition),这些分组数据可以对一类数据主题中的数据进行分区存储。
目前,在构建一个实时大数据处理平台时候,可以采用Storm集成Kafka的系统架构。业务数据或者业务日志可以实时地写入Kafka中,Storm则可以从Kafka中读取数据进行计算。在实际应用中,业务场景是复杂多变的,一个业务的分析可能需要读取多种类型的业务日志,因此一个Storm系统通常需要读取多个Kafka中的数据主题。
业务通常都有高峰期,高峰期产生的日志量相对平时都会比较大,有时候甚至会是平时的好几倍。在这种情况下,Storm系统在读取多个数据主题中的分组数据时,可能会因数据的暴涨或者每个批次读取的数据量太大,而导致处理程序的内存溢出或者该批次数据处理的速度变慢,从而导致数据处理的效率变低。
发明内容
本申请的目的在于提供一种数据发射方法及装置,能够提高数据处理的效率。
为实现上述目的,本申请一方面提供一种数据发射方法,所述方法包括:获取数据发射指令,所述数据发射指令指向与至少一个发射数据关联的多个分组数据;从所述多个分组数据中确定已在本地数据池中存储的目标分组数据,其中,每个所述目标分组数据中包括至少一个数据堆;在当前批次中读取至少一个所述目标分组数据,其中,若读取至少两组目标分组数据,所述至少两组目标分组数据中各个数据堆的堆数总和小于或者等于指定堆数阈值;将当前批次读取的所述目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。
为实现上述目的,本申请另一方面还提供一种数据发射装置,所述装置包括:指令获取单元,用于获取数据发射指令,所述数据发射指令指向与至少一个发射数据关联的多个分组数据;目标分组数据确定单元,用于从所述多个分组数据中确定已在本地数据池中存储的目标分组数据,其中,每个所述目标分组数据中包括至少一个数据堆;数据读取单元,用于在当前批次中读取至少一个所述目标分组数据,其中,若读取至少两组目标分组数据,所述至少两组目标分组数据中各个数据堆的堆数总和小于或者等于指定堆数阈值;数据发射单元,用于将当前批次读取的所述目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。
为实现上述目的,本申请另一方面还提供一种数据发射装置,所述装置包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的方法。
由上可见,本申请提供的技术方案,可以预先指定各个发射数据关联的分组数据,当接收到数据发射指令后,可以确定出当前待发射的多个分组数据。然后,首先可以在本地数据池中查询已经存储的目标分组数据。针对这些已经在本地数据池中存储的目标分组数据,可以分批次进行读取并发射。为了避免由于读取的数据量过多,而导致内存溢出或者数据处理堵塞的问题,在一个批次中读取分组数据时,可以限定分组数据中数据堆的堆数上限值,该堆数上限值可以作为指定堆数阈值。这样,当前批次在读取至少两组目标分组数据时,可以保证读取的多个目标分组数据中各个数据堆的堆数总和小于或者等于该指定堆数阈值,从而保证读取的数据量不会过多。此外,如果一个目标分组数据中数据堆的堆数总和大于或者等于所述指定堆数阈值,那么可以将该目标分组数据作为单独的一个批次进行读取和发送。这样,一方面可以避免读取的数据量过多,另一方面还可以保证同一个数据分组中的数据堆能够在同一批次中被全部读取并发射,避免了数据分割而导致的数据出错的问题。由上可见,本申请提供的技术方案,通过限定每个批次中读取的数据量,从而可以避免由于读取的数据量过多,而导致内存溢出或者数据处理堵塞的问题,进而提高了数据处理的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施方式中系统架构的示意图;
图2是本发明实施例中数据发射方法的步骤图;
图3是本发明实施例中分组数据的遍历示意图;
图4是本发明实施例中数据发射装置的功能模块示意图;
图5是本发明实施例中数据发射装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本申请提供一种数据发射方法,该方法可以应用于如图1所示的系统架构中。该系统架构中可以包括预设分组数据库、数据发射装置以及多个数据处理节点。其中,数据发射装置可以从预设分组数据库中读取分组数据,并将分组数据存储于本地数据池中,然后,数据发射装置可以根据接收到的数据发射指令,将对应的数据从本地数据池中读取出来并通过数据处理节点进行处理后发射至数据发射指令的发起方。在实际应用中,该预设分组数据库可以是kafka数据库,该数据发射装置可以是kafkaspout,各个数据处理节点可以是bolt。
具体地,请参阅图2,本申请提供的数据发射方法可以包括以下步骤。
S1:获取数据发射指令,所述数据发射指令指向与至少一个发射数据关联的多个分组数据。
在本实施方式中,Storm系统中可以由各个发射数据来负责数据的读取和发射。kafkaspout在初始化时,可以预先给各个发射数据分配对应的分组数据(Partition),后续,各个发射数据便可以按照分配到的分组数据,执行数据读取和发射的过程。具体地,分组数据都是按照数据主题(topic)进行划分的,kafkaspout在初始化时,可以读取各个数据主题的分组信息,其中,所述数据主题中可以包括多个分组数据,所述分组信息可以包括所述数据主题的标识以及所述数据主题中各个分组数据的标识。例如,当前具备2个数据主题,这两个数据主题的标识分别为0和1,而每个数据主题中各具备10个分组数据,那么第一个数据主题中的10个分组数据的标识可以是从0至9的数值,而第二个数据主题中的10个分组数据的标识可以是从10至19的数值。这样,第一个数据主题的分组信息可以是0:0、0:1、0:5这样的数值组合,其中,第一个数值表示数据主题的标识,第二个数值表示分组数据的标识。
在本实施方式中,在读取了各个数据主题的分组信息后,可以将各个所述数据主题中的分组数据按照数据主题的标识以及分组数据的标识进行排序。排序的结果中,优先按照数据主题的标识进行排列,在同一个数据主题中,可以按照分组数据的标识的大小进行排列。当前的各个发射数据也可以具备各自的索引标识,该索引标识可以是从0开始的递增的数值。例如,第一个发射数据的索引标识为0,第二个发射数据的索引标识为1。然后,可以根据所述索引标识,从排序后的分组数据中选取指定分组数据,并将所述指定分组数据分配给所述当前发射数据。例如,当前共有两个标识为0和1的数据主题,这两个数据主题各包含10组分组数据,第一个数据主题的分组数据的标识是从0至9,第二个数据主题的分组数据的标识是从10至19。假设目前有10个发射数据,那么每个发射数据应当被分配2个分组数据,那么针对索引标识为0的第一个发射数据而言,可以将标识为0和10的分组数据分配给第一个发射数据;相应地,可以将标识为1和11的分组数据分配给索引标识为1的第二个发射数据,以此类推,从而完成分组数据的分配过程。这样,便可以将不同的发射数据与不同的分组数据进行关联。
在本实施方式中,发射数据在执行时,kafkaspout会接收到数据发射指令,在该数据发射指令中,可以携带待发射的各个分组数据的标识以及各个分组数据所属的数据主题的标识。这样,kafkaspout通过分析该数据发射指令,便可以获知其指向的各个分组数据。
S3:从所述多个分组数据中确定已在本地数据池中存储的目标分组数据,其中,每个所述目标分组数据中包括至少一个数据堆。
在本实施方式中,kafkaspout中可以具备本地数据池,该本地数据池中可以存储从kafka数据库中读取的数据。针对待发射的多个分组数据,首先可以在本地数据池中查询是否具备全部或者其中的部分分组数据,从而可以从所述多个分组数据中确定已在本地数据池中存储的目标分组数据。在所述目标分组数据中,数据可以按照数据堆(batch)的方式进行划分,并且同一个分组数据不能划分到不同的数据堆中。因此,在每个所述目标分组数据中,可以包括至少一个数据堆。
S5:在当前批次中读取至少一个所述目标分组数据,其中,若读取至少两组目标分组数据,所述至少两组目标分组数据中各个数据堆的堆数总和小于或者等于指定堆数阈值。
在本实施方式中,可以按批次从本地数据池中读取目标分组数据。为了保证一个批次读取的数据量不会过大,可以预先对一个批次能够读取的数据堆的数量进行限定。具体地,可以预先设置一个指定堆数阈值,该指定堆数阈值可以作为在同一批次中读取的数据堆的堆数上限。请参阅图3,以当前批次为例,可以依次尝试读取各个目标分组数据。针对当前批次的第一个目标分组数据而言,kafkaspout可以识别该第一个目标分组数据中包含的数据堆的堆数总和,然后可以根据识别出的堆数总和,更新预设堆数统计参数的累计值。其中,所述预设堆数统计参数可以用于统计当前批次中已经完成读取的数据堆的总数,该参数的初始值为0,并且该参数仅针对当前批次而言,如果当前批次结束,那么该参数也会重置为0。针对第一个目标分组数据,可以直接将其对应的堆数总和写入该参数中。然后可以判断更新后的累计值与指定堆数阈值的大小关系,若更新后的累计值小于所述指定堆数阈值,表示当前批次读取的数据堆的数量还没有达到上限值,因此,当前批次还可以继续尝试读取更多的数据堆。此时,可以读取所述第一个目标分组数据中的各个数据堆,并开始遍历所述本地数据池中的其它目标分组数据。然而,如果更新后的累计值大于或者等于所述指定堆数阈值,则表示当前批次已经无法读取更多的数据堆,此时,可以将所述第一个目标分组数据作为所述当前批次唯一读取的目标分组数据,并结束当前批次的数据读取过程。
如图3所示,在更新后的累计值小于该指定堆数阈值的情况下,可以遍历下一个目标分组数据,该下一个目标分组数据可以作为当前目标分组数据。针对该当前目标分组数据,可以计算其中包含的数据堆的堆数总和与所述预设堆数统计参数的累计值之和,此时,预设堆数统计参数中记录的是第一个目标分组数据中数据堆的堆数总和,这样,计算的结果就是第一个目标分组数据和当前分组数据中各个数据堆的堆数总和。需要说明的是,目前只是计算两个值的和,并不是将当前目标分组数据中包含的数据堆的堆数总和更新至预设堆数统计参数中。此时,若计算出的结果大于所述指定堆数阈值,则表示如果读取当前目标分组数据中的全部数据堆,则会导致数据量读取过多,而为了保证同一个目标分组数据中的数据堆能够在同一批次中全部读取,此时可以跳过当前目标分组数据,继续遍历下一个目标分组数据。同样地,如果下一个目标分组数据中包含的数据堆的堆数总和与第一个目标分组数据的堆数总和之和仍旧大于该指定堆数阈值,则继续跳过该目标分组数据,直至计算的结果小于或者等于该指定堆数阈值为止。
在本实施方式中,针对当前目标分组数据而言,若计算出的结果小于所述指定堆数阈值,则表示就算读取了当前目标分组数据中的全部数据堆,也不会超过限定的数据量。此时,在读取了第一个目标分组数据之后,可以继续读取所述当前目标分组数据中的各个数据堆,并根据所述当前目标分组数据中包含的数据堆的堆数总和,更新所述预设堆数统计参数的累计值。然后,可以按照上述的过程,继续遍历下一个目标分组数据,直至遍历完成。
S7:将当前批次读取的所述目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。
在本实施方式中,当所述本地数据池中的目标分组数据遍历完成之后,可以将当前批次读取的各个数据堆封装为数据元组(tuple),并向所述数据发射指令的发起方发送所述数据元组。在完成当前批次的数据读取和发射过程后,可以按照相同的方案,进行下一个批次的数据读取和发射过程。
在一个实施方式中,在向所述数据发射指令的发起方发送所述数据元组之后,还可以在内存中记录当前批次发送的各个目标分组数据对应的分组信息以及与所述分组信息相关联的数据偏移量(offset)。其中,目标分组数据对应的分组信息可以包括所述目标分组数据所属的数据主题的标识以及所述目标分组数据的标识。此外,上述的数据偏移量可以指向已经完成读取的数据的结束位置,这样,当下一批次在所述本地资源池中读取分组数据时,可以直接从所述数据偏移量表征的位置开始读取数据,从而不会遗漏数据,也不会重复读取数据。在实际应用中,storm系统中可以包括一个中心管理系统ZooKeeper,上述的各个目标分组数据对应的分组信息以及与所述分组信息相关联的数据偏移量便可以写入ZooKeeper中,ZooKeeper中的数据可以被下一个批次的数据读取过程访问,从而获知对应的数据偏移量。需要说明的是,在实际应用中,并不会在发送每个目标分组数据之后就会将对应的信息写入ZooKeeper中,而是只有在确定当前批次的发射数据已经全部处理成功之后,才会将各个目标分组数据对应的分组信息以及与所述分组信息相关联的数据偏移量便可以写入ZooKeeper中。
在一个实施方式中,待发射的部分分组数据可能在kafkaspout的本地数据池中并没有预先存储,此时,kafkaspout则需要从预设分组数据库-kafka数据库中先将对应的分组数据读取至本地数据池,然后再从本地数据池发送出去。具体地,针对所述本地资源池中未存储的分组数据,kafkaspout首先可以获取所述未存储的分组数据的数据偏移量以及数据尺寸。其中,所述数据偏移量可以表明数据的起始位置,数据尺寸则可以表示从该起始位置开始需要读取的数据量。在实际应用中,如果kafkaspout是第一次从所述预设分组数据库中读取数据,那么分组数据的数据偏移量会维护在预设分组数据库中,此时,可以按照预设配置参数,从所述预设分组数据库中读取所述未存储的分组数据对应的数据偏移量。其中,该预设配置参数可以表征kafka数据库中记录数据偏移量的路径。
此外,若kafkaspout不是第一次从所述预设分组数据库中读取数据,则表示之前已经将部分的分组数据从kafka数据库中读取至本地数据池中,并且将本地数据池中的目标分组数据提供给了数据获取请求的发起方。此时,在内存(ZooKeeper)中,已经记录了上一次数据处理之后的数据偏移量。因此,在这种情况下,kafkaspout可以直接从内存的指定路径中读取所述未存储的分组数据对应的数据偏移量。在读取到数据偏移量以及获取了数据尺寸之后,kafkaspout便可以在预设分组数据库中从所述数据偏移量表征的位置开始,读取所述数据尺寸的数据。读取后的数据可以按照一定的数据粒度,被划分为多个数据堆,最终,划分得到的数据堆可以按照所属的分组数据被存放于kafkaspout的本地资源池中。在将划分得到的数据堆按照所属的分组数据存放于所述本地资源池中之后,kafkaspout还可以将所述划分得到的数据堆的数据偏移量按照所属的分组数据进行记录,以使得后续可以基于记录的所述数据偏移量,从所述本地资源池中读取分组数据中的各个数据堆。
在本实施方式中,为了保证本地数据池中的分组数据不出现冗余,可以在将本次从所述预设分组数据库中读取的数据全部发送出去之前,不再从所述预设分组数据库中读取数据。
实施例二
请参阅图4,本申请还提供一种数据发射装置,所述装置包括:
指令获取单元,用于获取数据发射指令,所述数据发射指令指向与至少一个发射数据关联的多个分组数据;
目标分组数据确定单元,用于从所述多个分组数据中确定已在本地数据池中存储的目标分组数据,其中,每个所述目标分组数据中包括至少一个数据堆;
数据读取单元,用于在当前批次中读取至少一个所述目标分组数据,其中,若读取至少两组目标分组数据,所述至少两组目标分组数据中各个数据堆的堆数总和小于或者等于指定堆数阈值;
数据发射单元,用于将当前批次读取的所述目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。
在一个实施方式中,所述目标分组数据确定单元包括:
首次读取模块,用于针对当前批次的第一个目标分组数据,根据所述第一个目标分组数据中包含的数据堆的堆数总和,更新预设堆数统计参数的累计值;
判定读取模块,用于若更新后的累计值小于所述指定堆数阈值,读取所述第一个目标分组数据中的各个数据堆,并遍历所述本地数据池中的其它目标分组数据;
遍历模块,针对遍历过程中的当前目标分组数据,计算所述当前目标分组数据中包含的数据堆的堆数总和与所述预设堆数统计参数的累计值之和,若计算出的结果大于所述指定堆数阈值,继续遍历下一个目标分组数据;若计算出的结果小于或者等于所述指定堆数阈值,读取所述当前目标分组数据中的各个数据堆,并根据所述当前目标分组数据中包含的数据堆的堆数总和,更新所述预设堆数统计参数的累计值,并继续遍历下一个目标分组数据;
相应地,所述数据发射单元,用于当所述本地数据池中的目标分组数据遍历完成之后,将当前批次读取的各个目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。
在一个实施方式中,所述目标分组数据确定单元还包括:
单独读取模块,用于若更新后的累计值大于或者等于所述指定堆数阈值,将所述第一个目标分组数据作为所述当前批次唯一读取的目标分组数据,并结束当前批次的数据读取过程。
在一个实施方式中,所述装置还包括:
未存储数据信息获取单元,用于针对所述本地资源池中未存储的分组数据,获取所述未存储的分组数据的数据偏移量以及数据尺寸;
分组数据读取单元,用于在预设分组数据库中从所述数据偏移量表征的位置开始,读取所述数据尺寸的数据,并将读取的所述数据划分为多个数据堆之后,将划分得到的数据堆按照所属的分组数据存放于所述本地资源池中。
请参阅图5,本申请还提供一种数据发射装置,所述装置包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,可以实现上述的数据发射方法。
由上可见,本申请提供的技术方案,可以预先指定各个发射数据关联的分组数据,当接收到数据发射指令后,可以确定出当前待发射的多个分组数据。然后,首先可以在本地数据池中查询已经存储的目标分组数据。针对这些已经在本地数据池中存储的目标分组数据,可以分批次进行读取并发射。为了避免由于读取的数据量过多,而导致内存溢出或者数据处理堵塞的问题,在一个批次中读取分组数据时,可以限定分组数据中数据堆的堆数上限值,该堆数上限值可以作为指定堆数阈值。这样,当前批次在读取至少两组目标分组数据时,可以保证读取的多个目标分组数据中各个数据堆的堆数总和小于或者等于该指定堆数阈值,从而保证读取的数据量不会过多。此外,如果一个目标分组数据中数据堆的堆数总和大于或者等于所述指定堆数阈值,那么可以将该目标分组数据作为单独的一个批次进行读取和发送。这样,一方面可以避免读取的数据量过多,另一方面还可以保证同一个数据分组中的数据堆能够在同一批次中被全部读取并发射,避免了数据分割而导致的数据出错的问题。由上可见,本申请提供的技术方案,通过限定每个批次中读取的数据量,从而可以避免由于读取的数据量过多,而导致内存溢出或者数据处理堵塞的问题,进而提高了整个系统在处理数据的过程中的稳定性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据发射方法,其特征在于,所述方法包括:
获取数据发射指令,所述数据发射指令指向与至少一个发射数据关联的多个分组数据;
从所述多个分组数据中确定已在本地数据池中存储的目标分组数据,其中,每个所述目标分组数据中包括至少一个数据堆;
在当前批次中读取至少一个所述目标分组数据,其中,若读取至少两组目标分组数据,所述至少两组目标分组数据中各个数据堆的堆数总和小于或者等于指定堆数阈值;
将当前批次读取的所述目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。
2.根据权利要求1所述的方法,其特征在于,所述分组数据与发射数据按照以下方式建立关联关系:
在初始化时,读取各个数据主题的分组信息,其中,所述数据主题中包括多个分组数据,所述分组信息包括所述数据主题的标识以及所述数据主题中各个分组数据的标识;
将各个所述数据主题中的分组数据按照数据主题的标识以及分组数据的标识进行排序;
获取当前发射数据的索引标识,并根据所述索引标识,从排序后的分组数据中选取指定分组数据,并将所述指定分组数据分配给所述当前发射数据。
3.根据权利要求1所述的方法,其特征在于,在当前批次中读取至少一个所述目标分组数据包括:
针对当前批次的第一个目标分组数据,根据所述第一个目标分组数据中包含的数据堆的堆数总和,更新预设堆数统计参数的累计值;
若更新后的累计值小于所述指定堆数阈值,读取所述第一个目标分组数据中的各个数据堆,并遍历所述本地数据池中的其它目标分组数据;
针对遍历过程中的当前目标分组数据,计算所述当前目标分组数据中包含的数据堆的堆数总和与所述预设堆数统计参数的累计值之和,若计算出的结果大于所述指定堆数阈值,继续遍历下一个目标分组数据;若计算出的结果小于或者等于所述指定堆数阈值,读取所述当前目标分组数据中的各个数据堆,并根据所述当前目标分组数据中包含的数据堆的堆数总和,更新所述预设堆数统计参数的累计值,并继续遍历下一个目标分组数据;
相应地,当所述本地数据池中的目标分组数据遍历完成之后,将当前批次读取的各个目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若更新后的累计值大于或者等于所述指定堆数阈值,将所述第一个目标分组数据作为所述当前批次唯一读取的目标分组数据,并结束当前批次的数据读取过程。
5.根据权利要求1所述的方法,其特征在于,在向所述数据发射指令的发起方发送所述数据元组之后,所述方法还包括:
在内存中记录当前批次发送的各个目标分组数据对应的分组信息以及与所述分组信息相关联的数据偏移量;其中,目标分组数据对应的分组信息包括所述目标分组数据所属的数据主题的标识以及所述目标分组数据的标识,并且下一批次在所述本地资源池中读取分组数据时,从所述数据偏移量表征的位置开始读取数据。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对所述本地资源池中未存储的分组数据,获取所述未存储的分组数据的数据偏移量以及数据尺寸;
在预设分组数据库中从所述数据偏移量表征的位置开始,读取所述数据尺寸的数据,并将读取的所述数据划分为多个数据堆之后,将划分得到的数据堆按照所属的分组数据存放于所述本地资源池中。
7.根据权利要求6所述的方法,其特征在于,获取所述未存储的分组数据的数据偏移量包括:
若是第一次从所述预设分组数据库中读取数据,按照预设配置参数,从所述预设分组数据库中读取所述未存储的分组数据对应的数据偏移量;
若不是第一次从所述预设分组数据库中读取数据,从内存的指定路径中读取所述未存储的分组数据对应的数据偏移量。
8.根据权利要求6所述的方法,其特征在于,在将划分得到的数据堆按照所属的分组数据存放于所述本地资源池中之后,所述方法还包括:
将所述划分得到的数据堆的数据偏移量按照所属的分组数据进行记录,以使得基于记录的所述数据偏移量,从所述本地资源池中读取分组数据中的各个数据堆。
9.根据权利要求6所述的方法,其特征在于,在将划分得到的数据堆按照所属的分组数据存放于所述本地资源池中之后,所述方法还包括:
在将本次从所述预设分组数据库中读取的数据全部发送出去之前,不再从所述预设分组数据库中读取数据。
10.一种数据发射装置,其特征在于,所述装置包括:
指令获取单元,用于获取数据发射指令,所述数据发射指令指向与至少一个发射数据关联的多个分组数据;
目标分组数据确定单元,用于从所述多个分组数据中确定已在本地数据池中存储的目标分组数据,其中,每个所述目标分组数据中包括至少一个数据堆;
数据读取单元,用于在当前批次中读取至少一个所述目标分组数据,其中,若读取至少两组目标分组数据,所述至少两组目标分组数据中各个数据堆的堆数总和小于或者等于指定堆数阈值;
数据发射单元,用于将当前批次读取的所述目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。
11.根据权利要求10所述的装置,其特征在于,所述目标分组数据确定单元包括:
首次读取模块,用于针对当前批次的第一个目标分组数据,根据所述第一个目标分组数据中包含的数据堆的堆数总和,更新预设堆数统计参数的累计值;
判定读取模块,用于若更新后的累计值小于所述指定堆数阈值,读取所述第一个目标分组数据中的各个数据堆,并遍历所述本地数据池中的其它目标分组数据;
遍历模块,针对遍历过程中的当前目标分组数据,计算所述当前目标分组数据中包含的数据堆的堆数总和与所述预设堆数统计参数的累计值之和,若计算出的结果大于所述指定堆数阈值,继续遍历下一个目标分组数据;若计算出的结果小于或者等于所述指定堆数阈值,读取所述当前目标分组数据中的各个数据堆,并根据所述当前目标分组数据中包含的数据堆的堆数总和,更新所述预设堆数统计参数的累计值,并继续遍历下一个目标分组数据;
相应地,所述数据发射单元,用于当所述本地数据池中的目标分组数据遍历完成之后,将当前批次读取的各个目标分组数据封装为数据元组,并向所述数据发射指令的发起方发送所述数据元组。
12.根据权利要求11所述的装置,其特征在于,所述目标分组数据确定单元还包括:
单独读取模块,用于若更新后的累计值大于或者等于所述指定堆数阈值,将所述第一个目标分组数据作为所述当前批次唯一读取的目标分组数据,并结束当前批次的数据读取过程。
13.根据权利要求10所述的装置,其特征在于,所述装置还包括:
未存储数据信息获取单元,用于针对所述本地资源池中未存储的分组数据,获取所述未存储的分组数据的数据偏移量以及数据尺寸;
分组数据读取单元,用于在预设分组数据库中从所述数据偏移量表征的位置开始,读取所述数据尺寸的数据,并将读取的所述数据划分为多个数据堆之后,将划分得到的数据堆按照所属的分组数据存放于所述本地资源池中。
14.一种数据发射装置,其特征在于,所述装置包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1至9中任一权利要求所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810913710.1A CN110825533B (zh) | 2018-08-10 | 2018-08-10 | 一种数据发射方法及装置 |
PCT/CN2018/108238 WO2020029405A1 (zh) | 2018-08-10 | 2018-09-28 | 一种数据发射方法及装置 |
US16/755,852 US20200293543A1 (en) | 2018-08-10 | 2018-09-28 | Method and apparatus for transmitting data |
EP18929307.9A EP3835975A4 (en) | 2018-08-10 | 2018-09-28 | DATA TRANSMISSION PROCESS AND DEVICE |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810913710.1A CN110825533B (zh) | 2018-08-10 | 2018-08-10 | 一种数据发射方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825533A true CN110825533A (zh) | 2020-02-21 |
CN110825533B CN110825533B (zh) | 2022-12-20 |
Family
ID=69415371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810913710.1A Active CN110825533B (zh) | 2018-08-10 | 2018-08-10 | 一种数据发射方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200293543A1 (zh) |
EP (1) | EP3835975A4 (zh) |
CN (1) | CN110825533B (zh) |
WO (1) | WO2020029405A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220198028A1 (en) * | 2020-12-17 | 2022-06-23 | The Toronto-Dominion Bank | Secure resolution of email-based queries involving confidential third-party data |
CN113452667A (zh) * | 2021-03-05 | 2021-09-28 | 浙江华云信息科技有限公司 | 一种适用于多种协议类型的边缘物联终端接入方法 |
CN113314229A (zh) * | 2021-05-26 | 2021-08-27 | 北京京东拓先科技有限公司 | 一种数据处理方法、装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106210032A (zh) * | 2016-07-06 | 2016-12-07 | 乐视控股(北京)有限公司 | 基于终端数据批量上报的方法及装置 |
CN106302385A (zh) * | 2016-07-26 | 2017-01-04 | 努比亚技术有限公司 | 一种消息分发装置及方法 |
CN106648904A (zh) * | 2017-01-09 | 2017-05-10 | 大连理工大学 | 一种流式数据处理自适应速率控制方法 |
CN107509119A (zh) * | 2017-07-11 | 2017-12-22 | 北京潘达互娱科技有限公司 | 一种监控报警方法与装置 |
CN107943802A (zh) * | 2016-10-12 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 一种日志分析方法和系统 |
CN108255628A (zh) * | 2016-12-29 | 2018-07-06 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932941B (zh) * | 2012-11-05 | 2019-05-31 | 北京奇虎科技有限公司 | 一种分布式消息处理系统及其中的设备和方法 |
CN103927305B (zh) * | 2013-01-11 | 2018-02-23 | 中国移动通信集团山东有限公司 | 一种对内存溢出进行控制的方法和设备 |
US11726842B2 (en) * | 2016-08-02 | 2023-08-15 | Salesforce, Inc. | Techniques and architectures for non-blocking parallel batching |
CN108365971A (zh) * | 2018-01-10 | 2018-08-03 | 深圳市金立通信设备有限公司 | 日志解析方法、设备及计算机可读介质 |
-
2018
- 2018-08-10 CN CN201810913710.1A patent/CN110825533B/zh active Active
- 2018-09-28 EP EP18929307.9A patent/EP3835975A4/en not_active Withdrawn
- 2018-09-28 US US16/755,852 patent/US20200293543A1/en not_active Abandoned
- 2018-09-28 WO PCT/CN2018/108238 patent/WO2020029405A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106210032A (zh) * | 2016-07-06 | 2016-12-07 | 乐视控股(北京)有限公司 | 基于终端数据批量上报的方法及装置 |
CN106302385A (zh) * | 2016-07-26 | 2017-01-04 | 努比亚技术有限公司 | 一种消息分发装置及方法 |
CN107943802A (zh) * | 2016-10-12 | 2018-04-20 | 北京京东尚科信息技术有限公司 | 一种日志分析方法和系统 |
CN108255628A (zh) * | 2016-12-29 | 2018-07-06 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN106648904A (zh) * | 2017-01-09 | 2017-05-10 | 大连理工大学 | 一种流式数据处理自适应速率控制方法 |
CN107509119A (zh) * | 2017-07-11 | 2017-12-22 | 北京潘达互娱科技有限公司 | 一种监控报警方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110825533B (zh) | 2022-12-20 |
EP3835975A4 (en) | 2021-09-22 |
EP3835975A1 (en) | 2021-06-16 |
WO2020029405A1 (zh) | 2020-02-13 |
US20200293543A1 (en) | 2020-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825533B (zh) | 一种数据发射方法及装置 | |
CN109117275B (zh) | 基于数据分片的对账方法、装置、计算机设备及存储介质 | |
US8572621B2 (en) | Selection of server for relocation of application program based on largest number of algorithms with identical output using selected server resource criteria | |
CN110413650B (zh) | 一种业务数据的处理方法、装置、设备和存储介质 | |
CN111491002B (zh) | 设备巡检方法、装置、被巡检设备、巡检服务器及系统 | |
CN109951494B (zh) | 仿真数据处理方法、装置、仿真设备及存储介质 | |
CN110059068B (zh) | 一种分布式存储系统中的数据校验方法及数据校验系统 | |
CN112363900B (zh) | 一种基于插桩的主机内容器网络性能分析方法及系统 | |
CN109213774B (zh) | 数据的存储方法及装置、存储介质、终端 | |
CN112037061A (zh) | 区块链中交易的处理方法、装置、电子设备及存储介质 | |
CN113946294A (zh) | 一种分布式储存系统及其数据处理方法 | |
CN113923002B (zh) | 计算机网络入侵防御方法、装置、存储介质及处理器 | |
CN114064312A (zh) | 一种数据处理系统及模型训练方法 | |
CN108377268B (zh) | 一种调整任务优先级的方法与系统 | |
CN110333984B (zh) | 接口异常检测方法、装置、服务器及系统 | |
CN114185763A (zh) | 动态分配方法、装置、存储介质及电子设备 | |
CN108829735B (zh) | 并行执行计划的同步方法、装置、服务器及存储介质 | |
CN113448747B (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
CN111885159B (zh) | 数据采集方法、装置、电子设备及存储介质 | |
CN113079063A (zh) | 充电设备的离线判断方法、系统、设备及计算机存储介质 | |
CN112395296A (zh) | 一种大数据归档方法、装置、设备及存储介质 | |
CN113438274A (zh) | 数据传输方法、装置、计算机设备及可读存储介质 | |
CN112035498A (zh) | 数据块调度方法、装置、调度层节点及存储层节点 | |
CN112596893B (zh) | 用于多节点边缘计算设备的监控方法和系统 | |
CN111159438A (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 |