CN112131286B - 一种基于时间序列的数据处理方法、装置及存储介质 - Google Patents
一种基于时间序列的数据处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112131286B CN112131286B CN202011346772.2A CN202011346772A CN112131286B CN 112131286 B CN112131286 B CN 112131286B CN 202011346772 A CN202011346772 A CN 202011346772A CN 112131286 B CN112131286 B CN 112131286B
- Authority
- CN
- China
- Prior art keywords
- data
- time
- order
- fragments
- slice
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于时间序列的数据处理方法、装置及存储介质,该方法包括:分片步骤,基于时间序列对获取的一时间段内的同一店铺订单数据进行分片处理得到多个数据分片;同步步骤,基于消息队列MQ的方式根据任务类型将所述多个数据分片中的部分或全部同步至分布式缓存中;持久化步骤,使用异步多线程的方式将所述分布式缓存中的多个数据分片中的部分或全部持久化到数据库中。本发明中,对同一店铺的实时变化的订单数据采用分片的机制进行处理,解决了订单同步效率低、及时性差的技术问题,且避免了订单数据在抓取过程中的遗漏,采用了标识元数据及异步多线程的机制,解决了同一店铺大量订单数据无法并发,也无法横向拓展的问题,提高了用户体验。
Description
技术领域
本发明涉及数据安全技术领域,特别是一种基于时间序列的数据处理方法、装置及存储介质。
背景技术
现有技术中,针对具体电商店铺数据,采用扩大查询时间区间、单线程处理机制,导致在处理电商平台同步订单的过程中,由于电商平台的订单量很大,容易发生丢单、漏单的情况。
在突发情况下,比如erp服务器宕机、高并发压力下服务器处理效率下降,导致订单同步数据处理不及时,服务器停机时间过长,重启后订单查询时间区间出现断档,出现断档的部分就是漏单的原因;服务器处理效率慢,数据库保存数据时事务没有提交成功,最终导致丢单,以至于导致数据统计或处理错误。
在正常情况下,一个电商店铺,只能是一个抓单任务(单例模式),此种设计非常影响电商平台的订单同步效率和及时性,最终影响用户的体验。
发明内容
本发明针对上述现有技术中的缺陷,提出了如下技术方案。
一种基于时间序列的数据处理方法,该方法包括:
分片步骤,基于时间序列对获取的一时间段内的同一店铺订单数据进行分片处理得到多个数据分片;
同步步骤,基于消息队列MQ的方式根据任务类型将所述多个数据分片中的部分或全部同步至分布式缓存中;
持久化步骤,使用异步多线程的方式将所述分布式缓存中的多个数据分片中的部分或全部持久化到数据库中,其中,每一个线程处理一个数据分片。
更进一步地,所述分片步骤的具体操作为:获取需要同步订单数据的店铺ID,根据所述店铺ID对所述店铺中的一时间段内的订单数据进行遍历获取该时间段内的所有订单数据;设置分片操作的时间间隔 a 、时间位移 b、每个分片的开始时间 begintime、每个分片的结束时间 endtime,初始化时,所述开始时间 begintime为该时间段的起始时间,计算第一个分片数据的结束时间endtime = begintime + a – b,抓取该时间内的订单数据为第一个数据分片,抓取第二个数据分片时,令,第二个数据分片的开始时间begintime = 第一个分片数据的结束时间endtime,第二个分片数据的结束时间endtime = begintime + a– b,依次继续操作,直到所有的订单数据抓取完毕形成多个数据分片,每个数据分片包括多个订单数据,所述每个数据分片中的多个订单数据基于订单的生成时间进行降序排列,每一个数据分片具有标识元数据,所述标识元数据包括:店铺ID、数据分片编号、抓取开始时间、抓取结束时间、同步状态和任务类型,将所有的数据分片基于抓取开始时间进行降序排列。
更进一步地,所述同步步骤的操作为:将每一个所述数据分片封装到一个消息中,所有数据分片封装完成后形成一消息队列,消息队列中的消息基于数据分片的抓取开始时间进行降序排列;根据所述任务类型确定需要获取的订单总数量,其中,所述任务类型中包括需要获取订单总数量的时间区域,基于所述时间区域与所述数据分片的抓取开始时间获取对应的消息队列的消息的个数M,从降序排列的消息队列中的消息中获取M消息,从所述M个消息中获取M个数据分片,将获取的M个数据分片存储在分布式缓存中,所述M个数据分片中每一个在分布式缓存中具有一个存储标识SID。
更进一步地,所述将获取的M个数据分片存储在分布式缓存中的方式为:每个数据分片以key-value的形式进行存储,其中,key = 任务类型+店铺ID+同步状态+抓取开始时间+抓取结束时间+数据分片编号,value = 数据分片中的订单数据。
更进一步地,所述持久化步骤的操作为:基于所述存储标识SID从所述分布式缓存中获取所述M个数据分片,针对每一个数据分片使用一个线程对该数据分片中的订单数据进行分析,确定该订单数据是需要在数据库中更新或插入操作,基于所述更新或插入操作将所述数据分片中的订单数据更新或插入到数据库中,完成操作后,从分布式缓存中删除该数据分片。
本发明还提出了一种基于时间序列的数据处理装置,该装置包括:
分片单元,基于时间序列对获取的一时间段内的同一店铺订单数据进行分片处理得到多个数据分片;
同步单元,基于消息队列MQ的方式根据任务类型将所述多个数据分片中的部分或全部同步至分布式缓存中;
持久化单元,使用异步多线程的方式将所述分布式缓存中的多个数据分片中的部分或全部持久化到数据库中,其中,每一个线程处理一个数据分片。
更进一步地,所述分片单元执行的具体操作为:获取需要同步订单数据的店铺ID,根据所述店铺ID对所述店铺中的一时间段内的订单数据进行遍历获取该时间段内的所有订单数据;设置分片操作的时间间隔 a 、时间位移 b、每个分片的开始时间 begintime、每个分片的结束时间 endtime,初始化时,所述开始时间 begintime为该时间段的起始时间,计算第一个分片数据的结束时间endtime = begintime + a – b,抓取该时间内的订单数据为第一个数据分片,抓取第二个数据分片时,令,第二个数据分片的开始时间begintime= 第一个分片数据的结束时间endtime,第二个分片数据的结束时间endtime = begintime+ a – b,依次继续操作,直到所有的订单数据抓取完毕形成多个数据分片,每个数据分片包括多个订单数据,所述每个数据分片中的多个订单数据基于订单的生成时间进行降序排列,每一个数据分片具有标识元数据,所述标识元数据包括:店铺ID、数据分片编号、抓取开始时间、抓取结束时间、同步状态和任务类型,将所有的数据分片基于抓取开始时间进行降序排列。
更进一步地,所述同步单元执行的操作为:将每一个所述数据分片封装到一个消息中,所有数据分片封装完成后形成一消息队列,消息队列中的消息基于数据分片的抓取开始时间进行降序排列;根据所述任务类型确定需要获取的订单总数量,其中,所述任务类型中包括需要获取订单总数量的时间区域,基于所述时间区域与所述数据分片的抓取开始时间获取对应的消息队列的消息的个数M,从降序排列的消息队列中的消息中获取M消息,从所述M个消息中获取M个数据分片,将获取的M个数据分片存储在分布式缓存中,所述M个数据分片中每一个在分布式缓存中具有一个存储标识SID;其中,所述将获取的M个数据分片存储在分布式缓存中的方式为:每个数据分片以key-value的形式进行存储,其中,key =任务类型+店铺ID+同步状态+抓取开始时间+抓取结束时间+数据分片编号,value = 数据分片中的订单数据。
更进一步地,所述持久化单元执行的操作为:基于所述存储标识SID从所述分布式缓存中获取所述M个数据分片,针对每一个数据分片使用一个线程对该数据分片中的订单数据进行分析,确定该订单数据是需要在数据库中更新或插入操作,基于所述更新或插入操作将所述数据分片中的订单数据更新或插入到数据库中,完成操作后,从分布式缓存中删除该数据分片。
本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的方法。
本发明的一种基于时间序列的数据处理方法、装置及存储介质,该方法包括:分片步骤,基于时间序列对获取的一时间段内的同一店铺订单数据进行分片处理得到多个数据分片;同步步骤,基于消息队列MQ的方式根据任务类型将所述多个数据分片中的部分或全部同步至分布式缓存中;持久化步骤,使用异步多线程的方式将所述分布式缓存中的多个数据分片中的部分或全部持久化到数据库中,其中,每一个线程处理一个数据分片。本发明中,对同一店铺的实时变化的订单数据采用分片的机制进行处理,解决了现有技术中对于一个电商店铺,只能采用一个抓单任务(单例模式),订单同步效率低、及时性差的技术问题,本发明中,提出了时间位移的概念,用于防止订单数据的溢出问题,防止订单数据抓取过程中出现错误,且由于是基于连续的时间完成订单数据的抓取,避免了订单数据在抓取过程中的遗漏,本发明中,在处理数据分片,由于每一个数据分片的标识元数据中具有同步状态的参数,在同步过程中,根据该同步状态的参数,可以实时确定该数据分片是否被正确的同步至分布式缓存中,确保了订单数据不遗漏,保证了数据的完整性,本发明中,每个数据分片的标识元数据中具有该数据分片的抓取开始时间和抓取结束时间,且每个数据分片中的订单数据也是基于时间进行降序排序的,这样在同步至分布式缓存时,如果突然出现了意外情况,这样可以基于每个数据分片的抓取开始时间和抓取结束时间,确定哪一个数据分片丢失,也就是没有同步过来,通过同步消息机制,重新发送获取该失败的数据分片的请求,以重新获取该数据分片,确保了订单数据不遗漏,保证了数据的完整性,由于采用了标识元数据,解决了现有技术中抓单的开始时间和结束时间是基于当前时间作计算的,这种情况在系统中间出现业务一次无法准确知道上次抓的截至时间,如果抓单的时间段丢了则会造成漏单情况,由于采用了本发明的异步多线程的机制,以及在数据分片中设立了标识元数据,解决了电商领域每天大量的订单交易的场景下,无暇顾及每一条抓到日志,这样便无法排查每一个漏单的原因,可以方便的确定哪一个订单数据异常,从而直接找到该订单数据所对应的数据分片,以重新获取该数据分片,解决了同一店铺大量订单数据无法并发,也无法做到横向拓展的问题,提高了用户体验。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。
图1是根据本发明的实施例的一种基于时间序列的数据处理方法的流程图。
图2是根据本发明的实施例的一种基于时间序列的数据处理装置的示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了本发明的一种基于时间序列的数据处理方法,本发明所述的方法主要用于解决电商平台中订单数据丢失、同步不及时、订单量大时导致服务器宕机的技术问题。该方法包括:
一种基于时间序列的数据处理方法,该方法包括:
分片步骤S101,基于时间序列对获取的一时间段内的同一店铺订单数据进行分片处理得到多个数据分片;数据分片的获取可以是根据任务类型发起的,比如查询任务、更新任务等等,所述任务中携带有需要获取同一店铺订单数据的时间。
同步步骤S102,基于消息队列MQ的方式根据任务类型将所述多个数据分片中的部分或全部同步至分布式缓存中;本发明中,使用分布式缓存,将获取的数据分片以消息队列的形式同步至分分布式缓存中,由于采用消息队列的形式,对大量的订单数据进行了缓冲,降低了服务器的峰值压力,防止服务器宕机。
持久化步骤S103,使用异步多线程的方式将所述分布式缓存中的多个数据分片中的部分或全部持久化到数据库中,其中,每一个线程处理一个数据分片。
本发明中,对同一店铺的实时变化的订单数据采用分片的机制进行处理,解决了现有技术中对于一个电商店铺,只能采用一个抓单任务(单例模式),订单同步效率低、及时性差的技术问题,这是本发明的一个重要发明点。
在一个实施例中,所述分片步骤的具体操作为:获取需要同步订单数据的店铺ID,根据所述店铺ID对所述店铺中的一时间段内的订单数据进行遍历获取该时间段内的所有订单数据;设置分片操作的时间间隔 a 、时间位移 b、每个分片的开始时间 begintime、每个分片的结束时间 endtime,通常a>b,初始化时,所述开始时间 begintime为该时间段的起始时间,计算第一个分片数据的结束时间endtime = begintime + a – b,抓取该时间内的订单数据为第一个数据分片,抓取第二个数据分片时,令,第二个数据分片的开始时间begintime = 第一个分片数据的结束时间endtime,第二个分片数据的结束时间endtime =begintime + a – b,依次继续操作,直到所有的订单数据抓取完毕形成多个数据分片,每个数据分片包括多个订单数据,所述每个数据分片中的多个订单数据基于订单的生成时间进行降序排列,每一个数据分片具有标识元数据,所述标识元数据包括:店铺ID、数据分片编号、抓取开始时间、抓取结束时间、同步状态和任务类型,将所有的数据分片基于抓取开始时间进行降序排列。
本发明中,数据分片的获取可以是根据任务类型发起的,比如查询任务、更新任务等等,所述任务中携带有需要获取同一店铺订单数据的时间,比如,需要获取某一个店铺一个时间段内的订单数据时,获取该店铺ID后,根据该店铺ID获取该时间段内的该店铺的订单总数量,如果总数量超过一个阈值,则对该些订单数据进行分片处理,即根据分片操作的时间间隔 a 和时间位移 b将该时间段的订单数据进行分片得到多个数据分片。本发明中,提出了时间位移的概念,用于防止订单数据的溢出问题,防止订单数据抓取过程中出现错误,且由于是基于连续的时间完成订单数据的抓取,避免了订单数据在抓取过程中的遗漏,这是本发明的另一个重要发明点。
在一个实施例中,所述同步步骤的操作为:将每一个所述数据分片封装到一个消息中,所有数据分片封装完成后形成一消息队列,消息队列中的消息基于数据分片的抓取开始时间进行降序排列;根据所述任务类型确定需要获取的订单总数量,其中,所述任务类型中包括需要获取订单总数量的时间区域,基于所述时间区域与所述数据分片的抓取开始时间获取对应的消息队列的消息的个数M,从降序排列的消息队列中的消息中获取M消息,从所述M个消息中获取M个数据分片,将获取的M个数据分片存储在分布式缓存中,所述M个数据分片中每一个在分布式缓存中具有一个存储标识SID。
本发明中,在处理数据分片,由于每一个数据分片的标识元数据中具有同步状态的参数,在同步过程中,根据该同步状态的参数,可以实时确定该数据分片是否被正确的同步至分布式缓存中,比如,每个数据分片的标识元数据中的同步状态初始化为0,同步至分布式缓存成功后,该同步状态初始修改为1,如果失败,将同步状态初始修改为-1,此时,通过同步消息机制,重新发送获取该失败的数据分片的请求,以重新获取该数据分片,确保了订单数据不遗漏,保证了数据的完整性,这是本发明的另一重要发明点。
此外,本发明中,每个数据分片的标识元数据中具有该数据分片的抓取开始时间和抓取结束时间,且每个数据分片中的订单数据也是基于时间进行降序排序的,这样在同步至分布式缓存时,如果突然出现了意外情况,比如,服务器突然故障等,这样可以基于每个数据分片的抓取开始时间和抓取结束时间,确定哪一个数据分片丢失,也就是没有同步过来,通过同步消息机制,重新发送获取该失败的数据分片的请求,以重新获取该数据分片,确保了订单数据不遗漏,保证了数据的完整性,由于采用了标识元数据,解决了现有技术中抓单的开始时间和结束时间是基于当前时间作计算的,这种情况在系统中间出现业务一次无法准确知道上次抓的截至时间,如果抓单的时间段丢了则会造成漏单情况,这是本发明的另一个重要发明点。
在一个实施例中,所述将获取的M个数据分片存储在分布式缓存中的方式为:每个数据分片以key-value的形式进行存储,其中,key = 任务类型+店铺ID+同步状态+抓取开始时间+抓取结束时间+数据分片编号,value = 数据分片中的订单数据,这样在订单数据查询或者持久化时,可以根据抓取开始时间、抓取结束时间或数据分片编号直接定位到需要查询的数据分片,由于每个数据分片中的订单数据也是基于时间倒序排列的,基于时间倒序排列的主要是考虑最近的订单数据查询、同步、更新操作相对校对,这样就大大提高了订单数据查询的查询效率,这是本发明的另一个重要发明点。
在另一个实施例中,所述持久化步骤的操作为:基于所述存储标识SID从所述分布式缓存中获取所述M个数据分片,针对每一个数据分片使用一个线程对该数据分片中的订单数据进行分析,确定该订单数据是需要在数据库中更新或插入操作,基于所述更新或插入操作将所述数据分片中的订单数据更新或插入到数据库中,完成操作后,从分布式缓存中删除该数据分片。
由于采用了本发明的异步多线程的机制,以及在数据分片中设立了标识元数据,解决了电商领域每天大量的订单交易的场景下,无暇顾及每一条抓到日志,这样便无法排查每一个漏单的原因,可以方便的确定哪一个订单数据异常,从而直接找到该订单数据所对应的数据分片,以重新获取该数据分片,解决了同一店铺大量订单数据无法并发,也无法做到横向拓展,这是本发明的另一个重要发明点。
图2示出了本发明的一种基于时间序列的数据处理装置,该装置包括:
分片单元201,基于时间序列对获取的一时间段内的同一店铺订单数据进行分片处理得到多个数据分片;数据分片的获取可以是根据任务类型发起的,比如查询任务、更新任务等等,所述任务中携带有需要获取同一店铺订单数据的时间。
同步单元202,基于消息队列MQ的方式根据任务类型将所述多个数据分片中的部分或全部同步至分布式缓存中;本发明中,使用分布式缓存,将获取的数据分片以消息队列的形式同步至分分布式缓存中,由于采用消息队列的形式,对大量的订单数据进行了缓冲,降低了服务器的峰值压力,防止服务器宕机。
持久化单元203,使用异步多线程的方式将所述分布式缓存中的多个数据分片中的部分或全部持久化到数据库中,其中,每一个线程处理一个数据分片。
本发明中,对同一店铺的实时变化的订单数据采用分片的机制进行处理,解决了现有技术中对于一个电商店铺,只能采用一个抓单任务(单例模式),订单同步效率低、及时性差的技术问题,这是本发明的一个重要发明点。
在一个实施例中,所述分片步骤的具体操作为:获取需要同步订单数据的店铺ID,根据所述店铺ID对所述店铺中的一时间段内的订单数据进行遍历获取该时间段内的所有订单数据;设置分片操作的时间间隔 a 、时间位移 b、每个分片的开始时间 begintime、每个分片的结束时间 endtime,初始化时,所述开始时间 begintime为该时间段的起始时间,计算第一个分片数据的结束时间endtime = begintime + a – b,抓取该时间内的订单数据为第一个数据分片,抓取第二个数据分片时,令,第二个数据分片的开始时间begintime= 第一个分片数据的结束时间endtime,第二个分片数据的结束时间endtime = begintime+ a – b,依次继续操作,直到所有的订单数据抓取完毕形成多个数据分片,每个数据分片包括多个订单数据,所述每个数据分片中的多个订单数据基于订单的生成时间进行降序排列,每一个数据分片具有标识元数据,所述标识元数据包括:店铺ID、数据分片编号、抓取开始时间、抓取结束时间、同步状态和任务类型,将所有的数据分片基于抓取开始时间进行降序排列。
本发明中,数据分片的获取可以是根据任务类型发起的,比如查询任务、更新任务等等,所述任务中携带有需要获取同一店铺订单数据的时间,比如,需要获取某一个店铺一个时间段内的订单数据时,获取该店铺ID后,根据该店铺ID获取该时间段内的该店铺的订单总数量,如果总数量超过一个阈值,则对该些订单数据进行分片处理,即根据分片操作的时间间隔 a 和时间位移 b将该时间段的订单数据进行分片得到多个数据分片。本发明中,提出了时间位移的概念,用于防止订单数据的溢出问题,防止订单数据抓取过程中出现错误,且由于是基于连续的时间完成订单数据的抓取,避免了订单数据在抓取过程中的遗漏,这是本发明的另一个重要发明点。
在一个实施例中,所述同步步骤的操作为:将每一个所述数据分片封装到一个消息中,所有数据分片封装完成后形成一消息队列,消息队列中的消息基于数据分片的抓取开始时间进行降序排列;根据所述任务类型确定需要获取的订单总数量,其中,所述任务类型中包括需要获取订单总数量的时间区域,基于所述时间区域与所述数据分片的抓取开始时间获取对应的消息队列的消息的个数M,从降序排列的消息队列中的消息中获取M消息,从所述M个消息中获取M个数据分片,将获取的M个数据分片存储在分布式缓存中,所述M个数据分片中每一个在分布式缓存中具有一个存储标识SID。
本发明中,在处理数据分片,由于每一个数据分片的标识元数据中具有同步状态的参数,在同步过程中,根据该同步状态的参数,可以实时确定该数据分片是否被正确的同步至分布式缓存中,比如,每个数据分片的标识元数据中的同步状态初始化为0,同步至分布式缓存成功后,该同步状态初始修改为1,如果失败,将同步状态初始修改为-1,此时,通过同步消息机制,重新发送获取该失败的数据分片的请求,以重新获取该数据分片,确保了订单数据不遗漏,保证了数据的完整性,这是本发明的另一重要发明点。
此外,本发明中,每个数据分片的标识元数据中具有该数据分片的抓取开始时间和抓取结束时间,且每个数据分片中的订单数据也是基于时间进行降序排序的,这样在同步至分布式缓存时,如果突然出现了意外情况,比如,服务器突然故障等,这样可以基于每个数据分片的抓取开始时间和抓取结束时间,确定哪一个数据分片丢失,也就是没有同步过来,通过同步消息机制,重新发送获取该失败的数据分片的请求,以重新获取该数据分片,确保了订单数据不遗漏,保证了数据的完整性,由于采用了标识元数据,解决了现有技术中抓单的开始时间和结束时间是基于当前时间作计算的,这种情况在系统中间出现业务一次无法准确知道上次抓的截至时间,如果抓单的时间段丢了则会造成漏单情况,这是本发明的另一个重要发明点。
在一个实施例中,所述将获取的M个数据分片存储在分布式缓存中的方式为:每个数据分片以key-value的形式进行存储,其中,key = 任务类型+店铺ID+同步状态+抓取开始时间+抓取结束时间+数据分片编号,value = 数据分片中的订单数据,这样在订单数据查询或者持久化时,可以根据抓取开始时间、抓取结束时间或数据分片编号直接定位到需要查询的数据分片,由于每个数据分片中的订单数据也是基于时间倒序排列的,基于时间倒序排列的主要是考虑最近的订单数据查询、同步、更新操作相对校对,这样就大大提高了订单数据查询的查询效率,这是本发明的另一个重要发明点。
在另一个实施例中,所述持久化步骤的操作为:基于所述存储标识SID从所述分布式缓存中获取所述M个数据分片,针对每一个数据分片使用一个线程对该数据分片中的订单数据进行分析,确定该订单数据是需要在数据库中更新或插入操作,基于所述更新或插入操作将所述数据分片中的订单数据更新或插入到数据库中,完成操作后,从分布式缓存中删除该数据分片。
由于采用了本发明的异步多线程的机制,以及在数据分片中设立了标识元数据,解决了电商领域每天大量的订单交易的场景下,无暇顾及每一条抓到日志,这样便无法排查每一个漏单的原因,可以方便的确定哪一个订单数据异常,从而直接找到该订单数据所对应的数据分片,以重新获取该数据分片,解决了同一店铺大量订单数据无法并发,也无法做到横向拓展,这是本发明的另一个重要发明点。
本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的方法。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然, 在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质 中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
Claims (3)
1.一种基于时间序列的数据处理方法,其特征在于,该方法包括:
分片步骤,基于时间序列对获取的一时间段内的同一店铺订单数据进行分片处理得到多个数据分片;
同步步骤,基于消息队列MQ的方式根据任务类型将所述多个数据分片中的部分或全部同步至分布式缓存中;
持久化步骤,使用异步多线程的方式将所述分布式缓存中的多个数据分片中的部分或全部持久化到数据库中,其中,每一个线程处理一个数据分片;
所述分片步骤的具体操作为:获取需要同步订单数据的店铺ID,根据所述店铺ID对所述店铺中的一时间段内的订单数据进行遍历获取该时间段内的所有订单数据;设置分片操作的时间间隔 a 、时间位移 b、每个数据分片的开始时间 begintime、每个数据分片的结束时间endtime,其中,a>b,初始化时,所述开始时间 begintime为该时间段的起始时间,计算第一个数据分片的结束时间endtime = begintime + a – b,抓取该时间内的订单数据为第一个数据分片,抓取第二个数据分片时,令第二个数据分片的开始时间begintime =第一个数据分片的结束时间endtime,第二个数据分片的结束时间endtime = 第二个数据分片的开始时间begintime + a – b,依次继续操作,直到所有的订单数据抓取完毕形成多个数据分片,每个数据分片包括多个订单数据,所述每个数据分片中的多个订单数据基于订单的生成时间进行降序排列,每一个数据分片具有标识元数据,所述标识元数据包括:店铺ID、数据分片编号、抓取开始时间、抓取结束时间、同步状态和任务类型,将所有的数据分片基于抓取开始时间进行降序排列;其中,所述时间位移用于防止订单数据的溢出问题,防止订单数据抓取过程中出现错误,且由于是基于连续的时间完成订单数据的抓取,避免了订单数据在抓取过程中的遗漏;
所述同步步骤的操作为:将每一个所述数据分片封装到一个消息中,所有数据分片封装完成后形成一消息队列,消息队列中的消息基于数据分片的抓取开始时间进行降序排列;根据所述任务类型确定需要获取的订单总数量,其中,所述任务类型中包括需要获取订单总数量的时间区域,基于所述时间区域与所述数据分片的抓取开始时间获取对应的消息队列的消息的个数M,从降序排列的消息队列中的消息中获取M个消息,从所述M个消息中获取M个数据分片,将获取的M个数据分片存储在分布式缓存中,所述M个数据分片中每一个在分布式缓存中具有一个存储标识SID,在处理数据分片时,每个数据分片的标识元数据中的同步状态初始化为0,同步至分布式缓存成功后,该同步状态初始修改为1,如果失败,将同步状态初始修改为-1,此时,通过同步消息机制,重新发送获取该失败的数据分片的请求,以重新获取该数据分片;其中,所述将获取的M个数据分片存储在分布式缓存中的方式为:每个数据分片以key-value的形式进行存储,其中,key = 任务类型+店铺ID+同步状态+抓取开始时间+抓取结束时间+数据分片编号,value = 数据分片中的订单数据;
所述持久化步骤的操作为:基于所述存储标识SID从所述分布式缓存中获取所述M个数据分片,针对每一个数据分片使用一个线程对该数据分片中的订单数据进行分析,确定该订单数据是需要在数据库中更新或插入操作,基于所述更新或插入操作将所述数据分片中的订单数据更新或插入到数据库中,完成操作后,从分布式缓存中删除该数据分片。
2.一种基于时间序列的数据处理装置,其特征在于,该装置包括:
分片单元,基于时间序列对获取的一时间段内的同一店铺订单数据进行分片处理得到多个数据分片;
同步单元,基于消息队列MQ的方式根据任务类型将所述多个数据分片中的部分或全部同步至分布式缓存中;
持久化单元,使用异步多线程的方式将所述分布式缓存中的多个数据分片中的部分或全部持久化到数据库中,其中,每一个线程处理一个数据分片;
所述分片单元执行的具体操作为:获取需要同步订单数据的店铺ID,根据所述店铺ID对所述店铺中的一时间段内的订单数据进行遍历获取该时间段内的所有订单数据;设置分片操作的时间间隔 a 、时间位移 b、每个数据分片的开始时间 begintime、每个数据分片的结束时间endtime,其中,a>b,初始化时,所述开始时间 begintime为该时间段的起始时间,计算第一个数据分片的结束时间endtime = begintime + a – b,抓取该时间内的订单数据为第一个数据分片,抓取第二个数据分片时,令第二个数据分片的开始时间begintime= 第一个数据分片的结束时间endtime,第二个数据分片的结束时间endtime = 第二个数据分片的开始时间begintime + a – b,依次继续操作,直到所有的订单数据抓取完毕形成多个数据分片,每个数据分片包括多个订单数据,所述每个数据分片中的多个订单数据基于订单的生成时间进行降序排列,每一个数据分片具有标识元数据,所述标识元数据包括:店铺ID、数据分片编号、抓取开始时间、抓取结束时间、同步状态和任务类型,将所有的数据分片基于抓取开始时间进行降序排列;其中,所述时间位移用于防止订单数据的溢出问题,防止订单数据抓取过程中出现错误,且由于是基于连续的时间完成订单数据的抓取,避免了订单数据在抓取过程中的遗漏;
所述同步单元执行的操作为:将每一个所述数据分片封装到一个消息中,所有数据分片封装完成后形成一消息队列,消息队列中的消息基于数据分片的抓取开始时间进行降序排列;根据所述任务类型确定需要获取的订单总数量,其中,所述任务类型中包括需要获取订单总数量的时间区域,基于所述时间区域与所述数据分片的抓取开始时间获取对应的消息队列的消息的个数M,从降序排列的消息队列中的消息中获取M个消息,从所述M个消息中获取M个数据分片,将获取的M个数据分片存储在分布式缓存中,所述M个数据分片中每一个在分布式缓存中具有一个存储标识SID;在处理数据分片时,每个数据分片的标识元数据中的同步状态初始化为0,同步至分布式缓存成功后,该同步状态初始修改为1,如果失败,将同步状态初始修改为-1,此时,通过同步消息机制,重新发送获取该失败的数据分片的请求,以重新获取该数据分片;其中,所述将获取的M个数据分片存储在分布式缓存中的方式为:每个数据分片以key-value的形式进行存储,其中,key = 任务类型+店铺ID+同步状态+抓取开始时间+抓取结束时间+数据分片编号,value = 数据分片中的订单数据;
所述持久化单元执行的操作为:基于所述存储标识SID从所述分布式缓存中获取所述M个数据分片,针对每一个数据分片使用一个线程对该数据分片中的订单数据进行分析,确定该订单数据是需要在数据库中更新或插入操作,基于所述更新或插入操作将所述数据分片中的订单数据更新或插入到数据库中,完成操作后,从分布式缓存中删除该数据分片。
3.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行权利要求1的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011346772.2A CN112131286B (zh) | 2020-11-26 | 2020-11-26 | 一种基于时间序列的数据处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011346772.2A CN112131286B (zh) | 2020-11-26 | 2020-11-26 | 一种基于时间序列的数据处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112131286A CN112131286A (zh) | 2020-12-25 |
CN112131286B true CN112131286B (zh) | 2021-03-02 |
Family
ID=73852289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011346772.2A Active CN112131286B (zh) | 2020-11-26 | 2020-11-26 | 一种基于时间序列的数据处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112131286B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032379B (zh) * | 2021-03-16 | 2022-07-22 | 广东电网有限责任公司广州供电局 | 面向配网运检多源数据采集的方法 |
CN113516529B (zh) * | 2021-04-26 | 2024-03-26 | 新东方教育科技集团有限公司 | 异常订单确定方法、装置、存储介质及电子设备 |
CN114584576A (zh) * | 2022-03-04 | 2022-06-03 | 拉扎斯网络科技(上海)有限公司 | 数据存储方法、装置、设备、存储介质及计算机程序产品 |
CN114363361A (zh) * | 2022-03-17 | 2022-04-15 | 武汉中科通达高新技术股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598563A (zh) * | 2015-01-08 | 2015-05-06 | 北京京东尚科信息技术有限公司 | 高并发数据存储方法及装置 |
CN106354434A (zh) * | 2016-08-31 | 2017-01-25 | 中国人民大学 | 日志数据的存储方法及系统 |
CN110688362A (zh) * | 2019-08-27 | 2020-01-14 | 浙江浙大中控信息技术有限公司 | 基于时间戳的数据分段式存储方法 |
CN111339103A (zh) * | 2020-03-13 | 2020-06-26 | 河南安冉云网络科技有限公司 | 一种基于全量分片和增量日志解析的数据交换方法及系统 |
CN111427931A (zh) * | 2020-03-30 | 2020-07-17 | 深圳市康拓普信息技术有限公司 | 分布式查询引擎及其查询关系型数据库的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967619B (zh) * | 2015-06-17 | 2018-09-04 | 深圳市腾讯计算机系统有限公司 | 文件推送方法、装置和系统 |
CN108132949B (zh) * | 2016-12-01 | 2021-02-12 | 腾讯科技(深圳)有限公司 | 数据库集群中数据迁移的方法及装置 |
-
2020
- 2020-11-26 CN CN202011346772.2A patent/CN112131286B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598563A (zh) * | 2015-01-08 | 2015-05-06 | 北京京东尚科信息技术有限公司 | 高并发数据存储方法及装置 |
CN106354434A (zh) * | 2016-08-31 | 2017-01-25 | 中国人民大学 | 日志数据的存储方法及系统 |
CN110688362A (zh) * | 2019-08-27 | 2020-01-14 | 浙江浙大中控信息技术有限公司 | 基于时间戳的数据分段式存储方法 |
CN111339103A (zh) * | 2020-03-13 | 2020-06-26 | 河南安冉云网络科技有限公司 | 一种基于全量分片和增量日志解析的数据交换方法及系统 |
CN111427931A (zh) * | 2020-03-30 | 2020-07-17 | 深圳市康拓普信息技术有限公司 | 分布式查询引擎及其查询关系型数据库的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112131286A (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112131286B (zh) | 一种基于时间序列的数据处理方法、装置及存储介质 | |
CN107729366B (zh) | 一种普适多源异构大规模数据同步系统 | |
CN104809202B (zh) | 一种数据库同步的方法和装置 | |
CN104809201B (zh) | 一种数据库同步的方法和装置 | |
CN104809200B (zh) | 一种数据库同步的方法和装置 | |
JP5467625B2 (ja) | トランザクションを処理する本番システムと該本番システムのバックアップ・システムである代行システムとを含む本番−代行システム | |
US20100145914A1 (en) | Database management server apparatus, database management system, database management method and database management program | |
US20120324283A1 (en) | Delivery with Reconciliation on Client Side | |
EP3226153B1 (en) | Impact analysis-based task redoing method, impact analysis calculation apparatus and one-click reset apparatus | |
CN110895483A (zh) | 任务恢复方法及装置 | |
CN113742107A (zh) | 一种避免消息队列中消息丢失的处理方法及相关设备 | |
CN112486701A (zh) | 一种消息异步处理方法及其设备 | |
CN109542917B (zh) | 数据读取方法及计算机可读介质 | |
CN114138833A (zh) | 用于关系型数据库与缓存数据库数据同步的方法及系统 | |
CN111680106B (zh) | 一种多应用系统数据同步的方法及装置 | |
CN110888739B (zh) | 延迟任务的分布式处理方法与装置 | |
CN105373549A (zh) | 数据迁移方法、设备及数据节点服务器 | |
CN110688211A (zh) | 一种分布式作业调度方法 | |
CN112181926A (zh) | 一种配置更新同步方法及装置 | |
CN112783972A (zh) | 图像特征值数据的同步方法及系统 | |
CN110719326B (zh) | 适应低质量通信链路的高可用软件系统内数据同步方法 | |
CN114389759A (zh) | 一种消息传输方法及系统 | |
JP5397076B2 (ja) | ジョブ実行装置、ジョブ実行方法およびジョブ実行プログラム | |
CN117763052B (zh) | 面向计费多中心内存数据库的数据同步方法及系统 | |
JP2001306380A (ja) | 二相コミット回避方式およびそのプログラム記録媒体 |
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 |