CN107678856B - 一种处理业务实体中增量信息的方法及装置 - Google Patents
一种处理业务实体中增量信息的方法及装置 Download PDFInfo
- Publication number
- CN107678856B CN107678856B CN201710854922.2A CN201710854922A CN107678856B CN 107678856 B CN107678856 B CN 107678856B CN 201710854922 A CN201710854922 A CN 201710854922A CN 107678856 B CN107678856 B CN 107678856B
- Authority
- CN
- China
- Prior art keywords
- queue
- business entity
- business
- information
- entity
- 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 27
- 238000007781 pre-processing Methods 0.000 claims description 3
- 230000010365 information processing Effects 0.000 abstract 1
- 230000000694 effects Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000002904 solvent Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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/5038—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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种处理业务实体中增量信息的方法及装置,涉及互联网技术领域,能够减少运营商的经济损失。本发明包括:读取业务实体的主键,并根据所读取的主键标记对应所述业务实体的队列;当检测到所述业务实体产生增量信息时,将所产生的增量信息导入对应所述业务实体的队列;向所述对应所述业务实体的队列分配线程资源,并依次处理所述对应所述业务实体的队列中的增量信息,其中,所述对应所述业务实体的队列与分配线程为一一对应关系。本发明适用于业务系统的信息处理。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种处理业务实体中增量信息的方法及装置。
背景技术
随着互联网技术的不断进步,网购平台、在线金融平台等各类在线业务系统也得到了快速发展。
这类在线业务系统往往存在高并发量、数据刷新快的特点。比如:在通常情况下,业务系统在产生业务实体增量信息后,直接调用存储系统接口进行信息保存或更新。但由于高并发系统中线程调用的不确定性,在保存或更新目标存储系统的时候,很多时候会发生最新的实体状态被旧的实体状态覆盖掉的情况。比如:一份照片数据在业务系统中被处理,经过多个业务环节,由于线程调用的不确定性,在逻辑顺序上靠后的环节反而先分配到了线程资源并执行完毕并输出存储图片数据,而在逻辑顺序上靠后的环节则等待一段时间后才分配到线程资源执行完毕,而在逻辑顺序上靠后的环节输出的图片数据应为最新的实体状态,但是却被逻辑顺序上靠后的环节所输出的图片数据覆盖存储。
这类问题以往发生在社交平台、照片分享平台等高并发量、数据刷新快的在线业务系统,由于数据的实质内容上变化不大,因此一般不太会影响到用户的使用效果,且为了保证高并发量、数据刷新率,需要优先优化线程调用方案,因此并为被作为一个主要问题被处理。但随着,各类在线交易市场的爆炸式增长,需要将高并发量、数据刷新率的在线业务系统应用到订单处理中,此时若业务实体的最新的状态被旧的状态覆盖,则会造成订单回档、丢失、出错等交易事故,尤其是在各类大型促销活动中,一旦发生这类事故会造成销售额的损失和用户投诉,从而导致巨额的经济损失。
发明内容
本发明的实施例提供一种处理业务实体中增量信息的方法及装置,能够减少运营商的经济损失。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明的实施例提供的方法,包括:
读取业务实体的主键,并根据所读取的主键标记对应所述业务实体的队列;
当检测到所述业务实体产生增量信息时,将所产生的增量信息导入对应所述业务实体的队列;
向所述对应所述业务实体的队列分配线程资源,并依次处理所述对应所述业务实体的队列中的增量信息,其中,所述对应所述业务实体的队列与分配线程为一一对应关系。
结合第一方面,在第一方面的第一种可能的实现方式中,还包括:
当读取业务实体的主键后,从缓存中的队列资源池中获取空闲的队列;
在根据所读取的主键标记对应所述业务实体的队列之后,对所述业务实体的队列加锁,其中,被加锁的队列屏蔽命名的主键以外业务实体所产生的信息。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述将所产生的增量信息导入对应所述业务实体的队列,包括:
确定产生增量信息的业务实体的主键;
根据所确定的主键在缓存中查询所述对应所述业务实体的队列;
将所产生的增量信息,按照时间顺序存入所述对应所述业务实体的队列。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述向所述对应所述业务实体的队列分配线程资源,包括:
从所述队列资源池中,获取已被加锁的队列;
向所获取的且被加锁的队列分配线程资源。
结合第一方面,在第一方面的第四种可能的实现方式中,所述依次处理所述对应所述业务实体的队列中的增量信息,包括:
按照从所述对应所述业务实体的队列的头部至尾部的顺序,依次提取增量信息;
每一项增量信息被提取时,确定被提取的增量信息的目标接口,并调用所述目标接口保存或更新所述被提取的增量信息,其中,所述目标接口指向数据库中的指定存储区域;
当所述对应所述业务实体的队列中的增量信息被处理完毕后,解锁所述对应所述业务实体的队列,并删除标记所述对应所述业务实体的队列的主键。
第二方面,本发明的实施例提供的装置,包括:
预处理模块,用于读取业务实体的主键,并根据所读取的主键标记对应所述业务实体的队列;
分析模块,用于当检测到所述业务实体产生增量信息时,将所产生的增量信息导入对应所述业务实体的队列;
分配模块,用于向所述对应所述业务实体的队列分配线程资源;
处理模块,用于依次处理所述对应所述业务实体的队列中的增量信息,其中,所述对应所述业务实体的队列与分配线程为一一对应关系。
结合第二方面,在第二方面的第一种可能的实现方式中,还包括:
锁定模块,用于当读取业务实体的主键后,从缓存中的队列资源池中获取空闲的队列;在根据所读取的主键标记对应所述业务实体的队列之后,对所述业务实体的队列加锁,其中,被加锁的队列屏蔽命名的主键以外业务实体所产生的信息。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述分析模块,具体用于确定产生增量信息的业务实体的主键;并根据所确定的主键在缓存中查询所述对应所述业务实体的队列;再将所产生的增量信息,按照时间顺序存入所述对应所述业务实体的队列。
结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述分配模块,具体用于从所述队列资源池中,获取已被加锁的队列;并向所获取的且被加锁的队列分配线程资源。
结合第二方面,在第二方面的第四种可能的实现方式中,所述处理模块,具体用于按照从所述对应所述业务实体的队列的头部至尾部的顺序,依次提取增量信息;在每一项增量信息被提取时,确定被提取的增量信息的目标接口,并调用所述目标接口保存或更新所述被提取的增量信息,其中,所述目标接口指向数据库中的指定存储区域;当所述对应所述业务实体的队列中的增量信息被处理完毕后,解锁所述对应所述业务实体的队列,并删除标记所述对应所述业务实体的队列的主键。
本发明实施例提供的处理业务实体中增量信息的方法及装置,通过业务实体的主键标记队列,队列加锁后分配线程资源,再依次处理队列中的增量信息。相对于现有技术中业务实体的最新的状态被旧的状态覆盖的问题,本实施例实现了将业务实体增量信息按照先产生先写入的顺序存储至目标数据库,保证了业务实体的最新的状态是不被旧的状态覆盖的。尤其是在各类大型促销活动中,有效避免了订单回档、丢失、出错等问题,减少了运营商的经济损失。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的系统架构示意图;
图2为本发明实施例提供的方法流程示意图;
图3、图4为本发明实施例提供的具体实例的示意图;
图5为本发明实施例提供的装置结构的示意图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
本实施例中的方法流程,具体可以在一种如图1所示的系统上执行,该系统包括:业务系统、数据库。其中:
本实施例中所揭示的业务系统,具体可以是在线购物平台,物流订单系统,库存系统等各类电子商务领域相关的在线系统。一般来说,
业务系统主要用于与海量的客户端设备进行数据交互,比如:消费者或者商户通过操作智能手机向网站业务系统发送的访问消息,并在较高负载情况下对接收到的访问消息进行处理。而在业务系统运行的过程中,随着时间的推移,针对某一用户或者一项业务会实时产生各种增量信息,而在实际应用中业务系统往往需要承担高并发量、高负载的运行场景,因此需要快速准确地与数据库进行交互,以便于根据增量信息同步刷新数据库中相应的数据。本实施例中所揭示的业务系统,在硬件层面上具体可以是工作站、超级计算机等设备,或者是由多台服务器组成的一种用于数据处理的服务器集群。
本实施例中所揭示的数据库,具体可以用于存储业务系统在运行时所产生的日志数据、表格数据、历史记录等业务系统在运行时所产生的海量的后台数据。
本发明实施例提供一种处理业务实体中增量信息的方法,如图2所示,包括:
S1、读取业务实体的主键,并根据所读取的主键标记对应所述业务实体的队列。
本实施例中所述的业务实体,可以理解为业务系统所维护的数据实体,一个业务实体在数据层面即指的是能够唯一确定的一条数据。比如:订单系统维护的是订单,一个订单作为一个业务实体,每个订单有唯一的id,那么这个id就是业务实体的主键,可以唯一确定一个订单。
其中,各业务实体通过各自的主键进行标记,主键具体可以是具有唯一性的字符串,在实际应用中,主键可以按照业务实体的时间戳、名称、所属业务系统的标签和所属服务器的设备号等信息生成。通常的,可以将业务实体的名称作为其主键。
具体的,在业务系统读取到一个业务实体的主键后,从队列池中提取一项空白的队列,并通过所读取的业务实体的主键命名该空白的队列,从而建立该空白的队列与业务实体的对应关系。
S2、当检测到所述业务实体产生增量信息时,将所产生的增量信息导入对应所述业务实体的队列。
由于业务实体可能在业务的运行过程中,在不同阶段或时期产生变化,这种局部变化的信息,可以称为增量信息。例如:订单在流转过程中,状态、物流等都会发生变化,即产生了增量信息。如订单的支付状态由未支付变成部分支付、已支付,再变成退款完成;订单的总状态由一开始的未处理状态逐步演变成已处理、已冲红;物流状态由待出库、已出库、已收货、拖机入库等。每变化一次,都会产生一条关于该订单(即一条订单作为一个业务实体)的增量信息,最终需要更新目标系统中该条订单为最新状态。
具体的,所述将所产生的增量信息导入对应所述业务实体的队列,包括:
确定产生增量信息的业务实体的主键。并根据所确定的主键在缓存中查询所述对应所述业务实体的队列。再将所产生的增量信息,按照时间顺序存入所述对应所述业务实体的队列。
其中,所述时间顺序可以理解为增量信息产生时的时间先后顺序,在增量信息产生时通常都会在信息中的指定字段或者属性值中加入时间戳,或者由业务实体主动上报所产生的增量信息的时间点。例如:业务系统产生实体增量信息时,把增量信息按一定的数据格式存入缓存系统队列中,相同实体的增量信息入同一个队列,不同实体的增量信息入不同的队列,这样缓存系统中会产生多个队列。
S3、向所述对应所述业务实体的队列分配线程资源,并依次处理所述对应所述业务实体的队列中的增量信息。
其中,所述对应所述业务实体的队列与分配线程为一一对应关系。对应一个业务实体的队列,与这一个业务实体使用相同的主键进行标识。具体的,可以由业务系统预先生成多个空白的队列,作为队列资源加入队列池,以便于在出现新的业务实体后,读取到业务实体的主键并从队列池调用队列资源。在实际应用中,在业务系统中可以向线程资源池分配多个线程,当业务系统读取到业务实体的主键并从队列池调用队列资源后,再从线程资源池中调用线程资源分配给相应的队列。
本发明实施例提供的处理业务实体中增量信息的方法,通过业务实体的主键标记队列,队列加锁后分配线程资源,再依次处理队列中的增量信息。相对于现有技术中业务实体的最新的状态被旧的状态覆盖的问题,本实施例实现了将业务实体增量信息按照先产生先写入的顺序存储至目标数据库,保证了业务实体的最新的状态是不被旧的状态覆盖的。尤其是在各类大型促销活动中,有效避免了订单回档、丢失、出错等问题,减少了运营商的经济损失。
在本实施例中,可以通过加锁的方式锁定已被分配给业务实体的队列,其中,被加锁的队列屏蔽命名的主键以外业务实体所产生的信息。具体的,业务系统上执行的流程还包括:
当读取业务实体的主键后,从缓存中的队列资源池中获取空闲的队列。在根据所读取的主键标记对应所述业务实体的队列之后,对所述业务实体的队列加锁。
进一步的,在S3中,所述向所述对应所述业务实体的队列分配线程资源,包括:从所述队列资源池中,获取已被加锁的队列。并向所获取的且被加锁的队列分配线程资源。例如:为了保证先产生的增量信息能够先写入目标数据库,同一业务系统的增量信息须入同一队列,队列以实体主键命名,且每个主键上都设置有锁。然后启动多个调度线程,业务系统为每个调度线程从待处理集合中挑选出一个主键,获取到锁后,读取和分发对应队列中的消息。已被加锁的队列,业务系统在识别到队列的锁时,队列在同一时刻由且只能由一个调度线程进行读取和分发。每个业务实体都有唯一的主键标示。
在本实施例中,所述依次处理所述对应所述业务实体的队列中的增量信息的具体方式,包括:按照从所述对应所述业务实体的队列的头部至尾部的顺序,依次提取增量信息。在每一项增量信息被提取时,业务系统确定被提取的增量信息的目标接口,并调用所述目标接口保存或更新所述被提取的增量信息。当所述对应所述业务实体的队列中的增量信息被处理完毕后,解锁所述对应所述业务实体的队列,并删除标记所述对应所述业务实体的队列的主键。其中,所述目标接口指向数据库中的指定存储区域。
举例来说,如图3所示的,业务系统在调用目标存储系统(或称为目标数据库)的接口保存或更新增量信息时,业务系统产生增量信息后,将其写入缓存系统的队列中,并将实体主键写入待处理集合中,完成入队操作。之后开始初始化调度线程,读取和分发队列中的信息,如图4所示的流程顺序,该环节具体又可细分为第1-9步:
第1步、调度线程从待处理集合中取出一个元素(即待处理的业务实体的主键),分配队列后进行加锁,成功后转第2步,否则重复执行第1步;
第2步、将主键写入处理中集合,成功后转第3步,失败后转第9步;
第3步、从队列头部读取一个增量信息,成功后转第4步,否则转第9步;
第4步、判断读取到的增量信息是否为空,不为空转第5步,否则转第9步;
第5步、调用目标数据库的接口保存或更新;
第6步、从队列头部删除一个元素;
第7步、继续从队列头部读取下一个增量信息,如果有则转第3步,否则转第8步;
第8步、从处理集合中删除该实体主键;
第9步、对实体主键进行解锁。
具体在如图3所示的场景中,以订单系统产生订单000735262061的增量信息A1(订单状态)为例,首先推入名为000735262061(字符串000735262061即作为主键)的队列中,并将单号放入待处理集合中,完成订单增量信息A1入队操作。如果订单000735262061陆续有其它增量信息A2(订单状态)、A3(订单支付信息)到达,OMS订单系统以同样方式进行入队操作。
然后调度线程从待处理集合中读取到订单号000735262061,进行加锁,如果加锁成功,将其移入处理中集合,避免其它调度线程读取到该单号,作徒劳的锁判断。此时表示可以处理队列000735262061中的第一个元素A1,调度线程读取A1后,解析A1,根据其携带的增量数据和指令构造ES接口入参,接着调用ES服务完成对A1的更新或保存后,从队列000735262061中删除A1。调度线程可以继续读取A2,完成相同的操作,直到队列000735262061空为止。最后将单号000735262061从处理中集合中删除并解锁。
从而保证了订单000735262061的所有增量信息有序地,正确地写入ELASTICSEARCH系统。其它订单如000735280008的处理流程同订单000735262061类似,不同的订单入不同的队列,并行处理。
本实施例中实现了队列的动态创建与销毁,队列数量、大小无限制,队列伸缩性好,实现了批量处理同一实体增量信息,且锁的控制粒度细,并发高。可以高效地处理大吞吐量的分发任务。本实施例的方案应用在在OMSQ订单查询系统中,将每天产生的所有订单全量信息与数倍增量信息顺序的推送到ELASTICSEARCH系统,保证了订单信息的正确性,同时对业务应用服务器产生的压力非常小,缓存系统Redis服务器各项指标均正常。运行近半年无异常。且本实施例的方案不仅适用于订单系统,也可用于与订单业务实体类似的其它系统,即大量的业务实体信息,且每个实体可能有数个由时间产生的相关增信息,需要按照一定的先后顺序分发到其它目标系统的应用场景。
本发明实施例还提供一种处理业务实体中增量信息的装置,该装置中具体的功能可以通过计算机程序实现,并运行在如图1所示的业务系统上,如图5所示,包括:
预处理模块,用于读取业务实体的主键,并根据所读取的主键标记对应所述业务实体的队列;
分析模块,用于当检测到所述业务实体产生增量信息时,将所产生的增量信息导入对应所述业务实体的队列;
分配模块,用于向所述对应所述业务实体的队列分配线程资源;
处理模块,用于依次处理所述对应所述业务实体的队列中的增量信息,其中,所述对应所述业务实体的队列与分配线程为一一对应关系。
本实施例中,还包括:锁定模块,用于当读取业务实体的主键后,从缓存中的队列资源池中获取空闲的队列;在根据所读取的主键标记对应所述业务实体的队列之后,对所述业务实体的队列加锁,其中,被加锁的队列屏蔽命名的主键以外业务实体所产生的信息。
具体的,所述分析模块,具体用于确定产生增量信息的业务实体的主键;并根据所确定的主键在缓存中查询所述对应所述业务实体的队列;再将所产生的增量信息,按照时间顺序存入所述对应所述业务实体的队列。
所述分配模块,具体用于从所述队列资源池中,获取已被加锁的队列;并向所获取的且被加锁的队列分配线程资源。
所述处理模块,具体用于按照从所述对应所述业务实体的队列的头部至尾部的顺序,依次提取增量信息;在每一项增量信息被提取时,确定被提取的增量信息的目标接口,并调用所述目标接口保存或更新所述被提取的增量信息,其中,所述目标接口指向数据库中的指定存储区域;当所述对应所述业务实体的队列中的增量信息被处理完毕后,解锁所述对应所述业务实体的队列,并删除标记所述对应所述业务实体的队列的主键。
本发明实施例提供的处理业务实体中增量信息的装置,通过业务实体的主键标记队列,队列加锁后分配线程资源,再依次处理队列中的增量信息。相对于现有技术中业务实体的最新的状态被旧的状态覆盖的问题,本实施例实现了将业务实体增量信息按照先产生先写入的顺序存储至目标数据库,保证了业务实体的最新的状态是不被旧的状态覆盖的。尤其是在各类大型促销活动中,有效避免了订单回档、丢失、出错等问题,减少了运营商的经济损失。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (2)
1.一种处理业务实体中增量信息的方法,其特征在于,包括:
读取业务实体的主键,并根据所读取的主键标记对应所述业务实体的队列;
当检测到所述业务实体产生增量信息时,将所产生的增量信息导入对应所述业务实体的队列;
向所述对应所述业务实体的队列分配线程资源,并依次处理所述对应所述业务实体的队列中的增量信息,其中,所述对应所述业务实体的队列与分配线程为一一对应关系;
其中,一个订单作为一个业务实体,每个订单的id作为业务实体的主键;
在业务系统读取到一个业务实体的主键后,从队列池中提取一项空白的队列,并通过所读取的业务实体的主键命名该空白的队列;
在初始化调度线程后,还包括:
第1步、调度线程从待处理集合中取出一个待处理的业务实体的主键,分配队列后进行加锁,成功后转第2步,否则重复执行第1步;
第2步、将主键写入处理中集合,成功后转第3步,失败后转第9步;
第3步、从队列头部读取一个增量信息,成功后转第4步,否则转第9步;
第4步、判断读取到的增量信息是否为空,不为空转第5步,否则转第9步;
第5步、调用目标数据库的接口保存或更新;
第6步、从队列头部删除一个元素;
第7步、继续从队列头部读取下一个增量信息,如果有则转第3步,否则转第8步;
第8步、从处理集合中删除该实体主键;
第9步、对实体主键进行解锁;
还包括:
当读取业务实体的主键后,从缓存中的队列资源池中获取空闲的队列;
在根据所读取的主键标记对应所述业务实体的队列之后,对所述业务实体的队列加锁,其中,被加锁的队列屏蔽命名的主键以外业务实体所产生的信息;
所述将所产生的增量信息导入对应所述业务实体的队列,包括:
确定产生增量信息的业务实体的主键;
根据所确定的主键在缓存中查询所述对应所述业务实体的队列;
将所产生的增量信息,按照时间顺序存入所述对应所述业务实体的队列;
所述向所述对应所述业务实体的队列分配线程资源,包括:
从所述队列资源池中,获取已被加锁的队列;
向所获取的且被加锁的队列分配线程资源;
所述依次处理所述对应所述业务实体的队列中的增量信息,包括:
按照从所述对应所述业务实体的队列的头部至尾部的顺序,依次提取增量信息;
每一项增量信息被提取时,确定被提取的增量信息的目标接口,并调用所述目标接口保存或更新所述被提取的增量信息,其中,所述目标接口指向数据库中的指定存储区域;
当所述对应所述业务实体的队列中的增量信息被处理完毕后,解锁所述对应所述业务实体的队列,并删除标记所述对应所述业务实体的队列的主键。
2.一种处理业务实体中增量信息的装置,其特征在于,包括:
预处理模块,用于读取业务实体的主键,并根据所读取的主键标记对应所述业务实体的队列;
分析模块,用于当检测到所述业务实体产生增量信息时,将所产生的增量信息导入对应所述业务实体的队列;
分配模块,用于向所述对应所述业务实体的队列分配线程资源;
处理模块,用于依次处理所述对应所述业务实体的队列中的增量信息,其中,所述对应所述业务实体的队列与分配线程为一一对应关系;
其中,一个订单作为一个业务实体,每个订单的id作为业务实体的主键;
在业务系统读取到一个业务实体的主键后,从队列池中提取一项空白的队列,并通过所读取的业务实体的主键命名该空白的队列;
在初始化调度线程后,还包括:
第1步、调度线程从待处理集合中取出一个待处理的业务实体的主键,分配队列后进行加锁,成功后转第2步,否则重复执行第1步;
第2步、将主键写入处理中集合,成功后转第3步,失败后转第9步;
第3步、从队列头部读取一个增量信息,成功后转第4步,否则转第9步;
第4步、判断读取到的增量信息是否为空,不为空转第5步,否则转第9步;
第5步、调用目标数据库的接口保存或更新;
第6步、从队列头部删除一个元素;
第7步、继续从队列头部读取下一个增量信息,如果有则转第3步,否则转第8步;
第8步、从处理集合中删除该实体主键;
第9步、对实体主键进行解锁;
还包括:
锁定模块,用于当读取业务实体的主键后,从缓存中的队列资源池中获取空闲的队列;在根据所读取的主键标记对应所述业务实体的队列之后,对所述业务实体的队列加锁,其中,被加锁的队列屏蔽命名的主键以外业务实体所产生的信息;
所述分析模块,具体用于确定产生增量信息的业务实体的主键;并根据所确定的主键在缓存中查询所述对应所述业务实体的队列;再将所产生的增量信息,按照时间顺序存入所述对应所述业务实体的队列;
所述分配模块,具体用于从所述队列资源池中,获取已被加锁的队列;并向所获取的且被加锁的队列分配线程资源;
所述处理模块,具体用于按照从所述对应所述业务实体的队列的头部至尾部的顺序,依次提取增量信息;在每一项增量信息被提取时,确定被提取的增量信息的目标接口,并调用所述目标接口保存或更新所述被提取的增量信息,其中,所述目标接口指向数据库中的指定存储区域;当所述对应所述业务实体的队列中的增量信息被处理完毕后,解锁所述对应所述业务实体的队列,并删除标记所述对应所述业务实体的队列的主键。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710854922.2A CN107678856B (zh) | 2017-09-20 | 2017-09-20 | 一种处理业务实体中增量信息的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710854922.2A CN107678856B (zh) | 2017-09-20 | 2017-09-20 | 一种处理业务实体中增量信息的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107678856A CN107678856A (zh) | 2018-02-09 |
CN107678856B true CN107678856B (zh) | 2022-04-05 |
Family
ID=61136538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710854922.2A Active CN107678856B (zh) | 2017-09-20 | 2017-09-20 | 一种处理业务实体中增量信息的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107678856B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189928B (zh) * | 2018-08-30 | 2022-05-17 | 天津做票君机器人科技有限公司 | 一种汇票交易机器人的授信信息识别方法 |
CN109871394B (zh) * | 2019-01-17 | 2022-11-11 | 苏宁易购集团股份有限公司 | 一种全量分布式高并发计算方法及装置 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6473424B1 (en) * | 1998-12-02 | 2002-10-29 | Cisco Technology, Inc. | Port aggregation load balancing |
US7111001B2 (en) * | 2003-01-27 | 2006-09-19 | Seiko Epson Corporation | Event driven transaction state management with single cache for persistent framework |
US20040205048A1 (en) * | 2003-03-28 | 2004-10-14 | Pizzo Michael J. | Systems and methods for requesting and receiving database change notifications |
CN100433880C (zh) * | 2005-05-17 | 2008-11-12 | 中兴通讯股份有限公司 | 面向对象的对数据区资源进行主备增量备份保护的方法 |
CN100571316C (zh) * | 2007-12-19 | 2009-12-16 | 中国移动通信集团黑龙江有限公司 | 基于内存文件与实时同步技术的快速固定费用计算系统 |
CN101547212B (zh) * | 2008-03-29 | 2012-09-05 | 华为技术有限公司 | 一种分布式对象的调度方法和系统 |
CN101882089B (zh) * | 2009-05-07 | 2013-05-08 | 中兴通讯股份有限公司 | 一种采用多线程处理业务会话应用的方法及装置 |
CN102741843B (zh) * | 2011-03-22 | 2014-03-26 | 青岛海信传媒网络技术有限公司 | 从数据库中读取数据的方法及装置 |
CN102325035B (zh) * | 2011-07-19 | 2017-11-03 | 中兴通讯股份有限公司 | 一种组播业务的实现方法及装置 |
CN103106585B (zh) * | 2011-11-11 | 2016-05-04 | 阿里巴巴集团控股有限公司 | 产品信息的实时去重方法和装置 |
CN103595654B (zh) * | 2013-11-01 | 2016-06-29 | 福建星网锐捷网络有限公司 | 基于多核CPU的HQoS实现方法、装置及网络设备 |
CN104679596A (zh) * | 2013-12-02 | 2015-06-03 | 航天信息股份有限公司 | 一种提高服务器端并发性能的消息处理方法及其系统 |
CN103747339A (zh) * | 2013-12-23 | 2014-04-23 | 乐视致新电子科技(天津)有限公司 | 一种解决安卓设备播放在线视频出现无响应的方法和设备 |
CN103678718A (zh) * | 2013-12-31 | 2014-03-26 | 金蝶软件(中国)有限公司 | 数据库同步方法及系统 |
CN103888454A (zh) * | 2014-03-14 | 2014-06-25 | 浪潮电子信息产业股份有限公司 | 一种基于队列的网络通信模块处理框架 |
CN104376063B (zh) * | 2014-11-11 | 2019-02-19 | 南京邮电大学 | 基于分类管理的多线程网络爬虫方法和信息实时更新系统 |
CN104408132B (zh) * | 2014-11-28 | 2018-03-02 | 北京京东尚科信息技术有限公司 | 数据推送方法和系统 |
CN104462420B (zh) * | 2014-12-12 | 2018-09-18 | 北京国双科技有限公司 | 数据库的查询任务的执行方法和装置 |
CN104572995A (zh) * | 2015-01-06 | 2015-04-29 | 北京卫星环境工程研究所 | 一种分布式实时数据快速处理方法 |
CN105991316B (zh) * | 2015-02-03 | 2019-06-14 | 中国移动通信集团辽宁有限公司 | 一种传输网资源数据的实时管理方法和装置 |
CN106874389B (zh) * | 2017-01-11 | 2023-04-07 | 腾讯科技(深圳)有限公司 | 数据的迁移方法和装置 |
CN106980699B (zh) * | 2017-04-14 | 2020-02-14 | 中国科学院深圳先进技术研究院 | 一种数据处理平台和系统 |
-
2017
- 2017-09-20 CN CN201710854922.2A patent/CN107678856B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107678856A (zh) | 2018-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804112B (zh) | 一种区块链落账处理方法及系统 | |
US7680793B2 (en) | Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers | |
EP2924594B1 (en) | Data encoding and corresponding data structure in a column-store database | |
CN107515878B (zh) | 一种数据索引的管理方法及装置 | |
US8280917B1 (en) | Batching content management operations to facilitate efficient database interactions | |
CN108280150B (zh) | 一种分布式异步业务分发方法及系统 | |
US8407183B2 (en) | Business intelligence data extraction on demand | |
US10719372B2 (en) | Dynamic parallelization of data loading | |
CN111028009B (zh) | 可领取业务实体处理方法和装置 | |
CN107678856B (zh) | 一种处理业务实体中增量信息的方法及装置 | |
CN111026758B (zh) | 电子券发放方法和装置 | |
CN109871394B (zh) | 一种全量分布式高并发计算方法及装置 | |
CN111858637B (zh) | 一种数据处理方法及装置 | |
CN112527839A (zh) | 多源数据处理方法、系统、设备及存储介质 | |
EP2662783A1 (en) | Data archiving approach leveraging database layer functionality | |
CN112035230A (zh) | 一种任务调度文件生成方法、装置及存储介质 | |
CN111666144A (zh) | 批处理任务执行方法、系统以及机房部署系统 | |
US8229946B1 (en) | Business rules application parallel processing system | |
US9652766B1 (en) | Managing data stored in memory locations having size limitations | |
CN115544007A (zh) | 标签预处理方法、装置、计算机设备和存储介质 | |
CN111209311A (zh) | 用于处理数据的方法和装置 | |
CN115454971A (zh) | 数据迁移方法、装置、电子设备及存储介质 | |
CN112988812B (zh) | 库存数据的处理方法、装置、设备及存储介质 | |
US6778978B1 (en) | Determining a workbasket identification for an item in a data store | |
EP2601627B1 (en) | Transaction processing system and method |
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 | ||
CB02 | Change of applicant information |
Address after: 210000, 1-5 story, Jinshan building, 8 Shanxi Road, Nanjing, Jiangsu. Applicant after: SUNING.COM Co.,Ltd. Address before: 210042 Suning Headquarters, No. 1 Suning Avenue, Xuanwu District, Nanjing City, Jiangsu Province Applicant before: SUNING COMMERCE GROUP Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |