CN106997557A - 订单信息采集方法及装置 - Google Patents
订单信息采集方法及装置 Download PDFInfo
- Publication number
- CN106997557A CN106997557A CN201710177489.3A CN201710177489A CN106997557A CN 106997557 A CN106997557 A CN 106997557A CN 201710177489 A CN201710177489 A CN 201710177489A CN 106997557 A CN106997557 A CN 106997557A
- Authority
- CN
- China
- Prior art keywords
- order
- sequence information
- transaction
- record
- order transaction
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明揭示了一种订单信息采集方法,通过为接收的订单信息分配订单号,将订单信息存入到对应订单号数据库和订单表中。在将成功接收的订单信息以分库分表的方式存储到分布式存储系统的同时,在该订单信息对应的订单事务表中添加一条订单事务记录,并根据该订单事务记录,将对应的订单信息采集到订单统计表中。通过在订单事务表中添加的订单事务记录,对接收、存储、采集订单信息的过程进行记录和追踪,保证每条成功接收的订单信息都被成功采集到订单统计表中。
Description
技术领域
本公开涉及互联网应用技术领域,特别涉及一种订单信息采集方法和装置。
背景技术
随着互联网应用的普及,对海量数据的存储和访问需求日益迫切。在一个为游戏玩家提供在线支付功能的应用场景,采用分布式存储系统将订单信息分散存储在不同的数据库和订单表中,减轻每个数据库处理订单信息的压力,能实时处理多个用户集中于同一时间段下发的订单信息,且能够根据系统的承载能力和当前负载情况来随时扩容数据库。如需查询分布式存储系统存储的订单信息,需要将分布式存储系统存储的订单信息导出,然后将导出的订单信息导入到一张订单统计表中,通过对该订单统计表的访问实现对订单信息的查询。
在现有技术中,如需采集分布式存储系统存储的订单信息,需要将分布式存储系统存储的订单信息导出,然后将导出的订单信息导入到一张订单统计表中。当分布式存储系统存储的订单信息数据量变得非常大,由于难以对大数据量的订单信息进行频繁的导入、导出操作,将导致不能对订单信息进行实时采集。
发明内容
为了解决相关技术中存在的由于难以对大数据量的订单信息进行频繁的导入、导出操作,导致不能对订单信息进行实时采集的问题。本公开提供了一种订单信息采集方法和装置。
一种订单信息采集方法,所述方法包括:
为接收的订单信息分配订单号,将所述订单信息存入到对应所述订单号数据库和订单表中;
在订单事务表中添加对应所述订单信息的订单事务记录;
根据所述订单事务记录,将对应所述订单信息复制到订单统计表中。
在其中一个示例性实施例中,所述在订单事务表中添加对应所述订单信息
的订单事务记录,还包括步骤:
通过所述订单信息的订单号,获取所述订单事务记录的事务号。
在其中一个示例性实施例中,所述根据所述订单事务记录,将对应所述订
单信息复制到订单统计表中,包括步骤:
将所述订单信息添加到消息队列中;
根据所述订单事务记录,读取所述消息队列中的所述订单信息;
将读取的所述订单信息复制到订单统计库中。
在其中一个示例性实施例中,所述根据所述订单事务记录,读取所述消息
队列中的所述订单信息,包括步骤:
读取对应所述订单信息的所述订单事务记录;
根据读取到的所述订单事务记录为未处理记录,读取所述消息队列中的所述订单信息。
在其中一个示例性实施例中,所述将读取的所述订单信息复制到订单统计
库中,包括步骤:
获取订单信息和查询维度索引信息各自对应的订单事务处理记录;
根据所述订单事务处理记录,分别将订单信息和查询维度索引信息复制到
订单统计库中;
更新所述订单事务处理记录。
一种订单信息采集装置,包括:
存储模块,用于为接收的订单信息分配订单号,将所述订单信息存入到对应所述订单号数据库和订单表中;
同步处理模块,用于在订单事务表中添加对应所述订单信息的订单事务记录;
异步处理模块,用于根据所述订单事务记录,将对应所述订单信息复制到订单统计表中。
在其中一个示例性实施例中,所述同步处理模块,还包括:
事务号获取单元,用于通过所述订单信息的订单号,获取所述订单事务记
录的事务号。
在其中一个示例性实施例中,所述异步处理模块,包括:
消息添加单元,用于将所述订单信息添加到消息队列中;
消息读取单元,用于根据所述订单事务记录,读取所述消息队列中的所述订单信息;
消息处理单元,用于将读取的所述订单信息复制到订单统计库中。
在其中一个示例性实施例中,所述消息读取单元,包括:
订单事务记录读取子单元,用于读取对应所述订单信息的所述订单事务记录;
订单信息读取子单元,用于根据读取到的所述订单事务记录为未处理记录,读取所述消息队列中的所述订单信息。
在其中一个示例性实施例中,所述消息处理单元,包括:
获取子单元,用于获取订单信息和查询维度索引信息各自对应的订单事务
处理记录;
处理子单元,用于根据所述订单事务处理记录,分别将订单信息和查询维
度索引信息复制到订单统计库中;
更新子单元,用于更新所述订单事务处理记录。
本公开的实施例提供的技术方案可以包括以下有益效果:为接收的订单信息分配订单号,将订单信息存入到对应订单号数据库和订单表中。在订单事务表中添加对应订单信息的订单事务记录,根据订单事务记录,将对应订单信息复制到订单统计表中。通过对每一个成功接收的订单信息,都根据对应订单信息的订单事务记录处理该订单信息,即时将订单信息复制到订单统计表中,使得通过订单统计表采集得到的订单信息具有较好实时性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。
图1是一示例性实施例示出的一种订单信息采集方法的流程图。
图2是图1对应实施例示出的方法中步骤150的一种具体实现流程图。
图3是图2对应实施例示出的方法中步骤153的一种具体实现流程图。
图4是图2对应实施例示出的方法中步骤155的一种具体实现流程图。
图5是另一示例性实施例示出的一种订单信息采集方法的流程图。
图6是另一示例性实施例示出的一种订单信息采集方法的流程图。
图7是另一示例性实施例示出的一种订单信息采集方法的流程图。
图8是一个示例性实施例示出的订单信息采集装置的框图。
图9是根据图7对应实施例的异步处理模块650在一个实施例的框图。
图10是根据图9对应实施例的消息读取单元653在一个实施例的框图。
图11是根据图9对应实施例的消息处理单元655在一个实施例的框图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的订单信息采集方法的流程图。如图1所示,该方法包括以下步骤:
在步骤110中,为接收的订单信息分配订单号,按照订单号将订单信息存入对应订单号数据库的订单表中。
通过对接收到的订单信息分配不同的订单号,订单信息通过订单号和分布式存储系统中的数据库和订单表建立一一对应的映射关系。按照订单号将订单信息存入到对应订单号数据库的订单表中。通过订单信息的订单号,即可查询订单信息存储于分布式存储系统的具体位置。
分布式存储系统,是指一种订单信息的接收存储系统,该系统将订单信息分散存储在不同的数据库和订单表中,以减轻每个数据库处理订单信息的压力。
在一个具体的实施例中,对接收到的每个订单信息随机分配一个5位随机数,该随机数位于10000和99999之间。通过对该随机数进行一系列的求余运算,得到一组分库分表信息,然后将随机数和分库分表信息组合而成订单号。通过该订单号,建立订单信息和对应数据库的订单表的映射关系。
具体的,由该随机数的前三位组成的数字对64求余运算,得到分库信息,通过对随机数对10求余运算,得到分表信息。
更进一步,分布式存储系统共分为8个数据库,其中每个数据库中又包含10个订单表。8个数据库分别为:DB1、DB2、…、DB8,每个数据库中的10个表分别为:Order_01、Order_02、Order_03、…、Order_10。通过对该随机数进行一系列求余运算后,得到的一组分库分表信息为0108。将得到的分库分表信息0108和随机数组合而成订单号。根据该订单号,将订单信息存入到数据库DB1中的表Order_08中。
在一个具体的实施例中,分布式存储系统由MySQL数据库管理系统实现。
由于计算分库信息采用了对64求余运算的方式,分布式存储规则能够兼容当系统扩容为16个数据库、32个数据库或者64个数据库的应用。
通过分库分表的方式存储不同的订单信息,能够减轻每个数据库处理订单信息的压力,并能根据系统的承载能力和当前负载情况来随时扩容数据库。同时,由于单独的一台服务器的硬件资源有限,采取分布式存储可以将不同的数据库置于不同的服务器上,提高了系统整体业务承载能力。
在步骤130中,在订单事务表中添加对应订单信息的订单事务记录。
在订单事务表中添加对应订单信息的订单事务记录,根据添加成功的订单事务记录,向用户返回下单成功信息。此时,即该订单信息已经被成功接收。
订单事务记录,是指对接收和采集订单信息的过程进行记录和追踪的记录信息。每一条被成功接收的订单信息都有一条对应的订单事务记录,通过订单事务记录对订单信息接收和采集的过程进行记录和追踪,保证了每个被成功接收的订单信息都会被准确的采集到订单统计表中,而不会被重复采集或者遗漏采集。
订单事务表,是指存储订单事务记录的一张数据表。对应订单信息的订单事务表和订单信息存储于同一个数据库。对应每一条被成功接收的订单信息都将在订单事务表中添加一条订单事务记录。
事务,是指数据库管理系统运行过程中由一系列操作构成的一个逻辑工作单元。作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。通过将一组相关操作组合为一个要么全部成功,要么全部失败的单元,可以控制和维护事务中每个操作的一致性和完整性。如果事务中的某个操作失败,则对数据库的所有更新都可以回滚到事务开始之前的状态。
为了保证每次存储一条订单信息的同时,都会在订单事务表中添加一条对应订单信息的订单事务记录。需要将接收订单信息的操作和添加订单事务记录的操作,作为一个数据库的事务进行处理。保证每存储一条订单信息到数据库的订单表中,必然会添加一条对应订单信息的订单事务记录到订单事务表中。
在一个具体的实施例中,通过MySQL数据库管理系统来实现接收订单信息的分布式存储系统。MySQL关系型数据库管理系统将一系列操作作为一个完整的事务统一提交或回滚,即对包含在事务中的多个操作要么全执行,要么全部不执行。当将接收的订单信息存储到数据库的订单表中,必然会添加一条订单事务记录到该数据库中的订单事务表中。
接收用户下发的订单信息并向用户返回下单成功信息的过程中,可能会因计算机断电、网络中断等故障因素导致存储订单信息的操作成功,但添加对应订单信息的订单事务记录到订单事务表的操作失败。
在订单事务表中添加对应订单信息的订单事务记录,只有接收订单信息的操作和添加订单事务记录的操作都成功,系统才会向用户返回下单成功信息。即保证了每存储一条订单信息,都会在订单事务表中添加一条订单事务记录。
在步骤150中,根据订单事务记录,将订单信息复制到订单统计表中。
根据订单事务记录,将对应订单信息复制到订单统计表中。为保证每条成功接收的订单信息,都能复制到订单统计表中,需要根据订单事务记录追踪和记录订单信息被采集处理的过程。通过读取订单事务记录,如果读取的对应订单信息的订单事务记录为未处理记录,即将订单信息复制到订单统计表中。
订单统计库,是指存储于服务器上的一张数据表,通过将被成功接收的订单信息复制到该数据表中,实现对订单信息的采集。通过访问订单统计库即可查询订单信息。
在一个具体的为游戏用户提供在线支付功能的应用场景,系统需要实时处理大量用户集中于同一时间段下发订单信息。为了查询接收并存储的订单信息,需要将订单信息写入到订单统计库中。由于用户查询订单信息可以容忍比较大的时间延迟,因此可以将已经接收的用户下单的订单信息作为消息放入消息队列中。当系统处于能够处理订单信息的空闲状态再去处理这些位于消息队列中的订单信息,并将订单信息复制到订单统计库中。
由于每条被成功接收的订单信息都被立即采集,使得采集的订单信息具有很高的实时性。同时,通过订单事务记录对每条被成功接收的订单信息的后续采集处理过程进行追踪和记录,保证每条订单信息都被复制到订单统计表中。使得被成功接收订单信息和通过订单统计表采集得到的订单信息具有很高的数据一致性,且不需要对大数据量订单信息进行频繁的导入、导出操作。
一示例性实施例示出的一种订单信息采集方法,在步骤130中还包括步骤131。
在步骤131中,通过订单信息的订单号,获取订单事务记录的事务号。
事务号,是指用来标记订单事务记录一个代码信息,通过该事务号将订单事务记录和对应订单信息建立一一对应关系。
将接收的订单信息存储到数据库中的订单表,必然会添加一条订单事务记
录到订单事务表中。根据订单信息的订单号,获取对应订单号的订单事务记录的事务号。
具体的,通过直接复制订单信息的订单号得到订单事务记录的事务号,并采用该事务号来标识订单事务记录对应的订单信息。
图2是对应图1中一示例性实施例示出的对步骤150的细节进行描述。
在步骤151中,将订单信息添加到消息队列中。
消息队列,是指在消息的传输过程中保存消息的容器,消息队列中可以放入多个消息。消息队列的主要目的是为消息的传递提供路由功能并保证消息的传递。如果难以立即对消息进行处理,消息队列提供的异步处理机制允许把一个消息放入队列,但并不立即处理。例如,如果发送消息时接收者处于不可接收状态,消息队列会保留该消息,直到可以成功地传递它。
将订单信息添加到消息队列中进行数据持久化保存,系统可以选择在非繁忙时段处理消息队列中的订单信息,避免了对大数据量订单信息进行频繁的导入、导出处操作。
在步骤153中,根据订单事务记录,读取消息队列中的订单信息。
将被成功接收的订单信息存储到分布式存储系统的数据库和订单表中,并添加一条订单事务记录到该数据库中的订单事务表中。为保证所有成功接收的订单信息都会被处理,需要根据订单事务记录,读取消息队列中的订单信息。
只有当订单信息对应的订单事务记录为未处理记录,才需要从消息队列中读取的该订单信息。
如果订单信息对应的订单事务记录为已处理记录,则说明该订单信息已经被处理过,此时,不需要读取位于消息队列中的该订单信息。
如果订单信息对应的订单事务记录为空记录,则说明该订单信息没有被成功接收,或者,该订单信息是垃圾信息。此时,系统直接跳过该条订单信息,读取位于消息队列中该订单信息的下一条订单信息。
在步骤155中,将读取的订单信息复制到订单统计库中。
将订单信息添加到消息队列中,根据订单事务记录,读取消息队列中的当前的订单信息,如果读取的订单事务记录是未处理记录,将读取的订单信息复制到订单统计库中。使得未采集处理的订单信息都将会被复制到订单统计库,而已经处理的订单信息不会被重复处理。
在一个具体的实施例中,通过消息队列将订单信息进行数据持久化,在把一个订单信息从消息队列中删除之前,需要明确的指出该消息是否已经被处理。为确保订单信息被安全的保存在消息队里中直到使用完毕,只有当前订单信息已经被完全处理才会启动下一条订单信息。
图3是图2对应实施例示出的方法中步骤153的细节进行描述。
在步骤531中,读取对应订单信息的订单事务记录。
当将接收的订单信息存储到数据库的订单表中,必然会添加一条订单事务记录到该数据库中的订单事务表中。
如果读取到的订单事务记录为空记录,则该订单信息没有对应的订单事务记录,为保证通过订单统计表查询到订单信息和成功接收的订单信息具有很好的一致性,将读取到的对应的订单事务记录为空记录的订单信息作为垃圾信息从消息队列中丢弃。
如果读取到的订单事务记录为已处理记录,则说明对应订单事务记录的订单信息已经被处理。或者,已经复制到订单统计库。为避免重复处理订单信息,需要忽略消息队列中的当前订单信息,转而启动处理消息队列中位于订单信息之后的下一条订单信息。
在一个具体的实施例中,通过读取订单事务记录的处理标记位,根据读该处理标记位,判断对应订单事务记录的订单信息是否已经被处理。如果订单事务记录的处理标记位为1,则订单事务记录为已处理记录。如果订单事务记录的处理标记位为0,则订单事务记录为未处理记录。
在步骤533中,根据读取到的订单事务记录为未处理记录,读取消息队列中的订单信息。
为保证通过订单统计表查询到订单信息和分布式存储系统存储的订单信息具有很好的一致性,需根据订单事务记录处理消息队列中的订单信息。通过读取订单事务记录的处理标记位,根据读取处理标记位,判断对应订单事务记录的订单信息是否已经被处理。
如果读取到的订单事务记录为未处理记录,则说明对应订单事务记录的订单信息没有被处理,此时启动读取消息队列中的当前的订单信息。
根据订单事务记录读取消息队列中的订单信息,能够将未处理的订单信
息从消息队列中读取出来,而忽略消息队列中的垃圾信息或者已经被处理过的订单信息。
图4是图2对应实施例示出的方法中步骤155的细节进行描述。
在步骤551中,获取订单信息和查询维度索引信息各自对应的订单事务处
理记录。
订单事务处理记录,是指对查询维度索引信息和订单信息的采集过程进行
追踪和记录的记录信息。该记录信息被存储于订单事务处理记录表中。每一条被成功接收的订单信息都对应一条订单事务记录,而每一条订单事务记录对应多条订单事务处理记录。如果订单事务处理记录表中包括对应订单信息的全部订单事务处理记录,则该订单信息采集过程已经全部完成。此时,将对应订单信息的订单事务记录设置为已处理记录。
订单事务处理记录表,是指存储订单事务处理记录的数据表,订单事务处理记录表和订单事务表存储于同一个数据库中。
通过订单事务处理记录来追踪和记录对每一条查询维度索引信息和订单信息的采集。先通过获取订单信息和查询维度索引信息各自对应的订单事务处理记录,再根据订单事务处理记录,分别将查询维度索引信息和订单信息复制到订单统计库中。
在一个具体的实施例中,通过获取得到了查询维度索引信息对应的订单事务处理记录。此时,订单事务处理记录表中不存在对应订单信息的订单事务处理记录。通过将订单信息复制到订单统计库中,并根据被复制的订单信息,在订单事务处理记录表中添加对应订单信息的订单事务处理记录。
如果订单信息中仅包含了订单号,仅能通过订单号查询订单信息。为实现通过不同的查询维度查询订单信息,需要在将每个订单信息复制到订单统计表的同时,向订单统计表中写入多个查询维度索引信息。
查询维度索引信息,是指同时包含有订单号和对应查询维度的查询号的索引信息。订单信息的订单号和一个或者多个查询号具有一一对应的映射关系。通过查询维度索引信息中的查询号即可获得订单信息的订单号,从而实现对订单信息的查询。
查询维度,是指在订单信息产生和存储的过程中,和订单信息唯一相关的一组查询号。例如,下单用户的用户ID号、商户接收订单信息而生产的外部订单号或者商户ID号。通过将某个查询维度和订单号之间建立索引信息,即得到该查询维度索引信息。
在一个具体的实施例中,在某条查询维度索引信息中,不但包含有订单信息的订单号,还包含有外部订单号、用户ID号,还包括有游戏提供商的商户ID等。查询维度索引信息通过建立用户ID号、外部订单号和商户ID等多个查询维度与订单号之间的一一映射关系,为查询订单信息提供多个查询维度的查询方式。
在一个为游戏提供商提供在线支付功能的支付平台应用场景中,用户在游戏中选定道具并提交购买道具的虚拟订单给游戏服务器。游戏服务器生成对应游戏自身的外部订单和外部订单号,并将包含外部订单号的外部订单返回给游戏客户端。游戏客户端根据外部订单请求支付平台生成订单信息,用户根据生成的订单信息完成支付流程,支付平台调用分布式存储系统存储该订单信息。
用户需要通过用户ID号查询订单信息,游戏提供商需要通过外部订单号查询订单信息。如果支付平台为多个游戏提供商提供支付功能,还可能需要通过各个游戏提供商的商户ID号查询订单信息。
在步骤553中,根据订单事务处理记录,分别将订单信息和查询维度索引
信息复制到订单统计库中。
根据查询维度索引信息和订单信息各自对应的订单事务处理记录,分别将
查询维度索引信息和订单信息复制到订单统计库中,然后更新订单事务处理记录。
具体的,每复制一条查询维度索引信息或者订单信息到订单统计表,都在订单事务处理记录表中添加一条对应的订单事务处理记录。根据全部的订单事务处理记录来设置订单事务记录。当订单事务记录被设置为已处理记录时,所有的查询维度索引信息或者订单信息都已经被准确的复制到了订单统计表中。
在一个具体的实施例中,对一个被成功接收的订单信息,需要完成三个不同的采集处理操作。该三个采集处理操作分别为:复制第一查询维度索引信到订单统计库;复制订单信息到订单统计库;复制第二查询维度索引信到订单统计库。每处理完一个采集操作后,即在订单事务处理记录表中添加一条对应的订单事务处理记录。
在一个具体的实施例中,通过守护进程异步处理消息队列中的订单信息,
根据写入的多个查询维度索引信息和订单信息,分别将对应各个查询维度索引信息和订单信息的订单事务处理记录添加到订单事务处理表中。守护进程处理一个订单信息,需要完成添加多个查询维度索引信息到订单统计库,以及添加订单信息到订单统计库等多个操作。每处理完一个操作后在订单事务表对应的订单事务处理记录表中添加一条订单事务处理记录。根据订单事务处理记录,将所有被成功接收的订单信息都复制到订单统计表。
守护进程,是指运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程能脱离于终端并且在后台运行,它从被执行的时候开始运转,直到整个系统关闭才退出。
如果订单事务处理记录表中包括了对应全部采集处理操作的订单事务处理记录,则已经将订单信息和查询维度索引信息都复制到了订单统计表。使得被成功接收的订单信息和通过订单统计表采集得到的订单信息高度的数据一致性,并且采集得到的订单信息可以通过多个查询维度进行查询。
在步骤555中,更新订单事务处理记录。
读取查询维度索引信息和订单信息各自对应的订单事务处理记录,分别将
查询维度索引信息和订单信息复制到订单统计库中,然后更新订单事务处理记录。
具体的,基于不同查询维度的查询维度索引信息可能具有多条,为保证全部查询维度索引信息和订单信息都被准确复制到订单统计表中,需要每完成一次对查询维度索引信息或者订单信息的采集处理操作,都在订单事务处理记录表中添加一条对应的订单事务处理记录,最后根据更新后的订单事务处理记录来设置订单事务记录。
如果全部的订单事务处理记录都被添加到了订单事务处理记录表,则将订单事务记录被设置为已处理记录。此时,所有的查询维度索引信息或者订单信息都已经被准确的复制到了订单统计表中。保证了被成功接收的订单信息和通过订单统计表采集得到的订单信息的具有较高的数据一致性。同时,使得通过订单统计表采集得到的订单信息,可以通过多个查询维度进行查询。
在一个具体的应用场景中,分布式存储系统为接收的订单信息分配订单号的流程图如图5所示。分布式存储系统接收订单信息并为接收的该订单信息分配随机数95277。通过对该随机数进行一系列求余运算后,得到的一组分库分表信息为5708。该分库分表信息和随机数组合而成该订单信息的订单号。对应该分库分表信,将该订单信息存入到数据库DB1中的订单表Order_08中。
在一个具体的应用场景中,分布式存储系统接收订单信息并通过添加订单事务记录而返回下单成功信息的流程图如图6所示。
通过对数据库中的订单事务表添加对应订单信息的订单事务记录,并根据添加成功的订单事务记录而返回下单成功信息。接收用户下发订单信息,校验用户的用户名和密码并判断用户名和密码是否正确。如果用户名和密码正确,则开启MySQL事务。将订单信息存入分布式存储系统,并判断存入订单信息是否成功。如果存入订单信息成功,将订单事务记录添加到订单事务表中并判断添加订单事务记录是否成功。如果添加订单事务记录是否成功,则提交MySQL事务并将订单信息添加到消息队列中。如果失败,MySQL事务回滚,创建订单失败,返回错误信息给用户。对于从开启MySQL事务到提交MySQL事务的过程中,将订单信息存入分布式存储系统的操作和添加订单事务记录操作为一个MySQL事务处理,保证了订单信息存入分布式存储系统必然会在订单事务表中添加一条订单事务记录。
在一个具体的应用场景中,通过守护进程处理消息队列中的订单信息的流程图如图7所示。
守护进程调取消息队列中的订单信息进行处理,判断是否存在对应的订单事务记录。如果不存在,将订单信息作为垃圾信息丢弃。判断订单事务处理记录表中是否存在订单事务处理记录1,如果不存在,即将订单信息写入到订单统计库,并将对应第一维度索引信息的订单事务处理记录1添加到订单事务处理表中。查询订单事务处理记录表中是否存在订单事务处理记录2,如果不存在,即将订单信息写入到订单统计库,并将订单事务处理记录3添加到订单事务处理表中。查询订单事务处理记录表中是否存在订单事务处理记录3,如果不存在,即将第二查询维度索引信息写入到订单统计库,并将订单事务处理记录3添加到订单事务处理表中。通过判断订单事务处理记录数是否为3,设置订单事务记录成功标识为1,开启处理消队列中的下一条订单信息。
图8是一示例性实施例示出的一种订单信息采集装置的框图。如图5所示,该装置包括但不限于:存储模块610,同步处理模块630,异步处理模块650。
存储模块610,用于为接收的订单信息分配订单号,将所述订单信息存入到对应所述订单号数据库和订单表中;
同步处理模块630,用于在订单事务表中添加对应订单信息的订单事务记录;
异步处理模块650,用于根据订单事务记录,将订单信息复制到订单统计表中。
根据图8对应实施例的订单处理装置,所述同步处理模块,还包括事务号
获取单元。
事务号获取单元用于通过订单信息的订单号,获取订单事务记录的事务号。
图9是根据图8对应实施例的同步处理模块在一个实施例的框图。如图8所示,该装置包括但不限于:消息添加单元651,消息读取单元653,消息处理单元655。
消息添加单元651,用于将订单信息添加到消息队列中;
消息读取单元653,用于根据订单事务记录,读取消息队列中的订单信息;
消息处理单元655,用于将读取的订单信息复制到订单统计库中。
图10是根据图9对应实施例的消息读取单元653在一个实施例的框图。如图10所示,该装置包括但不限于:订单事务记录读取子单元731,订单信息读取子单元733。
订单事务记录读取子单元731,用于读取对应订单信息的订单事务记录;
订单信息读取子单元733,用于根据读取到的订单事务记录为未处理记录,读取消息队列中的订单信息。
图11是是根据图9对应实施例的消息处理单元655在一个实施例的框图。如图11所示,该消息处理单元655包括但不限于:获取子单元951,处理子单元953,更新子单元955。
获取子单元951,用于获取订单信息和查询维度索引信息各自对应的订单事
务处理记录;
处理子单元953,用于根据所述订单事务处理记录,分别将订单信息和查询
维度索引信息复制到订单统计库中;
更新子单元955,用于更新所述订单事务处理记录。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种订单信息采集方法,所述方法包括:
为接收的订单信息分配订单号,将所述订单信息存入到对应所述订单号数据库和订单表中;
在订单事务表中添加对应所述订单信息的订单事务记录;
根据所述订单事务记录,将对应所述订单信息复制到订单统计表中。
2.根据权利要求1所述的方法,其特征在于,所述在订单事务表中添加对
应所述订单信息的订单事务记录,包括步骤:
通过所述订单信息的订单号,获取所述订单事务记录的事务号。
3.根据权利要求1所述的方法,其特征在于,所述根据所述订单事务记录,
将对应所述订单信息复制到订单统计表中,包括步骤:
将所述订单信息添加到消息队列中;
根据所述订单事务记录,读取所述消息队列中的所述订单信息;
将读取的所述订单信息复制到订单统计库中。
4.根据权利要求3所述的方法,其特征在于,所述根据所述订单事务记录,
读取所述消息队列中的所述订单信息,包括步骤:
读取对应所述订单信息的所述订单事务记录;
根据读取到的所述订单事务记录为未处理记录,读取所述消息队列中的所述订单信息。
5.根据权利要求3所述的方法,其特征在于,所述将读取的所述订单信息
复制到订单统计库中,包括步骤:
获取订单信息和查询维度索引信息各自对应的订单事务处理记录;
根据所述订单事务处理记录,分别将订单信息和查询维度索引信息复制到
订单统计库中;
更新所述订单事务处理记录。
6.一种订单信息采集装置,包括:
存储模块,用于为接收的订单信息分配订单号,将所述订单信息存入到对应所述订单号数据库和订单表中;
同步处理模块,用于在订单事务表中添加对应所述订单信息的订单事务记录;
异步处理模块,用于根据所述订单事务记录,将对应所述订单信息复制到订单统计表中。
7.根据权利要求6所述的装置,其特征在于,所述同步处理模块,还包括:
事务号获取单元,用于通过所述订单信息的订单号,获取所述订单事务记
录的事务号。
8.根据权利要求6所述的装置,其特征在于,所述异步处理模块,还包括:
消息添加单元,用于将所述订单信息添加到消息队列中;
消息读取单元,用于根据所述订单事务记录,读取所述消息队列中的所述订单信息;
消息处理单元,用于将读取的所述订单信息复制到订单统计库中。
9.根据权利要求8所述的装置,其特征在于,所述消息读取单元,包括:
订单事务记录读取子单元,用于读取对应所述订单信息的所述订单事务记录;
订单信息读取子单元,用于根据读取到的所述订单事务记录为未处理记录,读取所述消息队列中的所述订单信息。
10.根据权利要求8所述的装置,其特征在于,所述消息处理单元,包括:
获取子单元,用于获取订单信息和查询维度索引信息各自对应的订单事务
处理记录;
处理子单元,用于根据所述订单事务处理记录,分别将订单信息和查询维
度索引信息复制到订单统计库中;
更新子单元,用于更新所述订单事务处理记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710177489.3A CN106997557B (zh) | 2017-03-23 | 2017-03-23 | 订单信息采集方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710177489.3A CN106997557B (zh) | 2017-03-23 | 2017-03-23 | 订单信息采集方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106997557A true CN106997557A (zh) | 2017-08-01 |
CN106997557B CN106997557B (zh) | 2021-06-29 |
Family
ID=59431632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710177489.3A Active CN106997557B (zh) | 2017-03-23 | 2017-03-23 | 订单信息采集方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106997557B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840817A (zh) * | 2017-11-27 | 2019-06-04 | 北京京东尚科信息技术有限公司 | 一种查询订单信息的方法和装置 |
CN110019258A (zh) * | 2017-09-12 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 处理订单数据的方法和装置 |
CN110390527A (zh) * | 2018-04-23 | 2019-10-29 | 苏州火麦派网络科技有限公司 | 一种移动游戏支付装置 |
CN111131076A (zh) * | 2019-12-09 | 2020-05-08 | 深圳震有科技股份有限公司 | 基于消息队列的多用途数据接收方法及系统、计算机设备 |
CN111222944A (zh) * | 2019-12-31 | 2020-06-02 | 深圳市创梦天地科技有限公司 | 一种订单处理方法、系统及装置 |
CN111340463A (zh) * | 2020-03-23 | 2020-06-26 | 中国邮政储蓄银行股份有限公司 | 数据处理系统及其数据处理方法 |
CN113254442A (zh) * | 2021-05-21 | 2021-08-13 | 首约科技(北京)有限公司 | 一种用于出行行业的分库分表方法 |
CN113760870A (zh) * | 2020-06-10 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 业务数据的处理方法、装置及设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050240601A1 (en) * | 2004-04-21 | 2005-10-27 | Mairead Lyons | System and method for transactional data collection and processing |
CN102043838A (zh) * | 2009-10-09 | 2011-05-04 | 软件股份公司 | 主数据库系统、复制其数据的方法以及复制数据库系统 |
CN102693324A (zh) * | 2012-01-09 | 2012-09-26 | 西安电子科技大学 | 一种分布式数据库同步系统、同步方法和节点管理方法 |
CN102708166A (zh) * | 2012-04-26 | 2012-10-03 | 北京星网锐捷网络技术有限公司 | 数据复制方法、数据恢复方法及装置 |
CN102891849A (zh) * | 2012-09-25 | 2013-01-23 | 北京星网锐捷网络技术有限公司 | 业务数据同步方法、恢复方法及装置和网络设备 |
CN102902812A (zh) * | 2012-10-22 | 2013-01-30 | 飞天诚信科技股份有限公司 | 一种数据库远程同步的实现方法 |
CN104699712A (zh) * | 2013-12-09 | 2015-06-10 | 阿里巴巴集团控股有限公司 | 对数据库中的库存记录信息进行更新的方法及装置 |
CN106296364A (zh) * | 2016-08-19 | 2017-01-04 | 李玺 | 一种跨电商渠道订单配送方法及系统 |
CN106294792A (zh) * | 2016-08-15 | 2017-01-04 | 上海携程商务有限公司 | 关联查询系统的建立方法及建立系统 |
CN106372994A (zh) * | 2016-08-31 | 2017-02-01 | 北京炎黄新星网络科技有限公司 | 一种处理订单的方法和系统 |
CN106372985A (zh) * | 2016-08-30 | 2017-02-01 | 五八同城信息技术有限公司 | 订单数据处理方法及装置 |
-
2017
- 2017-03-23 CN CN201710177489.3A patent/CN106997557B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050240601A1 (en) * | 2004-04-21 | 2005-10-27 | Mairead Lyons | System and method for transactional data collection and processing |
CN102043838A (zh) * | 2009-10-09 | 2011-05-04 | 软件股份公司 | 主数据库系统、复制其数据的方法以及复制数据库系统 |
CN102693324A (zh) * | 2012-01-09 | 2012-09-26 | 西安电子科技大学 | 一种分布式数据库同步系统、同步方法和节点管理方法 |
CN102708166A (zh) * | 2012-04-26 | 2012-10-03 | 北京星网锐捷网络技术有限公司 | 数据复制方法、数据恢复方法及装置 |
CN102891849A (zh) * | 2012-09-25 | 2013-01-23 | 北京星网锐捷网络技术有限公司 | 业务数据同步方法、恢复方法及装置和网络设备 |
CN102902812A (zh) * | 2012-10-22 | 2013-01-30 | 飞天诚信科技股份有限公司 | 一种数据库远程同步的实现方法 |
CN104699712A (zh) * | 2013-12-09 | 2015-06-10 | 阿里巴巴集团控股有限公司 | 对数据库中的库存记录信息进行更新的方法及装置 |
CN106294792A (zh) * | 2016-08-15 | 2017-01-04 | 上海携程商务有限公司 | 关联查询系统的建立方法及建立系统 |
CN106296364A (zh) * | 2016-08-19 | 2017-01-04 | 李玺 | 一种跨电商渠道订单配送方法及系统 |
CN106372985A (zh) * | 2016-08-30 | 2017-02-01 | 五八同城信息技术有限公司 | 订单数据处理方法及装置 |
CN106372994A (zh) * | 2016-08-31 | 2017-02-01 | 北京炎黄新星网络科技有限公司 | 一种处理订单的方法和系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019258A (zh) * | 2017-09-12 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 处理订单数据的方法和装置 |
CN109840817A (zh) * | 2017-11-27 | 2019-06-04 | 北京京东尚科信息技术有限公司 | 一种查询订单信息的方法和装置 |
CN110390527A (zh) * | 2018-04-23 | 2019-10-29 | 苏州火麦派网络科技有限公司 | 一种移动游戏支付装置 |
CN111131076A (zh) * | 2019-12-09 | 2020-05-08 | 深圳震有科技股份有限公司 | 基于消息队列的多用途数据接收方法及系统、计算机设备 |
CN111222944A (zh) * | 2019-12-31 | 2020-06-02 | 深圳市创梦天地科技有限公司 | 一种订单处理方法、系统及装置 |
CN111222944B (zh) * | 2019-12-31 | 2024-04-12 | 深圳市创梦天地科技有限公司 | 一种订单处理方法、系统及装置 |
CN111340463A (zh) * | 2020-03-23 | 2020-06-26 | 中国邮政储蓄银行股份有限公司 | 数据处理系统及其数据处理方法 |
CN113760870A (zh) * | 2020-06-10 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 业务数据的处理方法、装置及设备 |
CN113254442A (zh) * | 2021-05-21 | 2021-08-13 | 首约科技(北京)有限公司 | 一种用于出行行业的分库分表方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106997557B (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106997557A (zh) | 订单信息采集方法及装置 | |
US20200167370A1 (en) | Maintaining a relationship between two different items of data | |
US20200081879A1 (en) | Persistent data storage techniques | |
CN104160381B (zh) | 多租户环境中租户特定数据集的管理方法及其系统 | |
US8612249B2 (en) | Systems and methods for managing regulatory information | |
JP5292489B2 (ja) | 持続的データ記憶技術 | |
US20110004622A1 (en) | Method and apparatus for gathering and organizing information pertaining to an entity | |
US20130110873A1 (en) | Method and system for data storage and management | |
US20040083426A1 (en) | System and method for generating pre-populated forms | |
EP1125222A1 (en) | Apparatus and system for an adaptive data management architecture | |
JPH04505977A (ja) | オブジェクト指向分散処理システム | |
CN107145574A (zh) | 数据库数据处理方法、装置及存储介质和电子设备 | |
JP5984355B2 (ja) | 分散型データベースシステムおよび分散型データ処理システム | |
WO2019030409A1 (en) | SYSTEMS AND METHODS FOR ASSEMBLING DATA SETS | |
CN107276914A (zh) | 基于cmdb的自助资源分配调度的方法 | |
CN115481026A (zh) | 测试案例的生成方法、装置、计算机设备、存储介质 | |
US8572041B2 (en) | Representing records | |
CN108363773A (zh) | 一种基于二进制操作的签到方法及装置 | |
WO2003052636A2 (en) | System and method for processing a request using multiple database units | |
CN102193986A (zh) | 图形数据库中联机事务的实现方法 | |
CN112214460A (zh) | 基于分布式大容量分片高性能的存储控制方法 | |
CN117851411B (zh) | 患者主索引生成方法及系统 | |
CN117851411A (zh) | 患者主索引生成方法及系统 | |
CN117216056A (zh) | 一种业务数据存储方法、装置、设备及存储介质 | |
JP2017010569A (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 |