CN112988348A - 防重批量处理数据的方法、装置、系统及存储介质 - Google Patents
防重批量处理数据的方法、装置、系统及存储介质 Download PDFInfo
- Publication number
- CN112988348A CN112988348A CN202110205741.3A CN202110205741A CN112988348A CN 112988348 A CN112988348 A CN 112988348A CN 202110205741 A CN202110205741 A CN 202110205741A CN 112988348 A CN112988348 A CN 112988348A
- Authority
- CN
- China
- Prior art keywords
- processing
- scheduling
- service data
- data
- batch
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000012545 processing Methods 0.000 claims abstract description 299
- 238000004590 computer program Methods 0.000 claims description 10
- 238000013461 design Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000002265 prevention Effects 0.000 description 7
- 238000004148 unit process Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function 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
- 230000003068 static effect Effects 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/23—Updating
-
- 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/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种防重批量处理数据的方法、装置、系统及存储介质,在防重批量处理数据的方法中,调度中心系统中的调度节点通过根据获取到的调度计划,获取分布式锁,调度计划包括处理任务和处理时间,分布式锁用于锁定处理任务只在调度节点执行。之后根据处理任务向批处理受理单元发送第一调用指令,第一调用指令中包括调度计划。本方法中,调度中心系统中的调度节点通过获取分布式锁,锁定处理任务只在该调度节点执行,与现有技术相比,能够确保业务数据只被处理一次,有效提高了业务数据处理的准确性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种防重批量处理数据的方法、装置、系统及存储介质。
背景技术
在互联网支付以及电子商务等领域中,为了提高数据处理的速度和效率,通常会对批量数据进行处理。举例来说,如批量代发工资,批量发放电子优惠券,批量生成交易明细账单等。
在现有技术中,对批量数据进行处理主要通过人工对处理受理单元配置批量业务受理能力,将具有批量业务受理能力的处理受理单元称为批处理受理单元,之后在批处理受理单元对批量数据进行统一处理。
然而,如果存在多个批处理受理单元,在对批量数据进行处理过程中可能会使得多个批处理受理单元同时工作,导致数据被重复处理,准确度较低。
发明内容
本申请提供一种防重批量处理数据的方法、装置、系统及存储介质,以解决如果存在多个批处理受理单元,在对批量数据进行处理过程中可能会使得多个批处理受理单元同时工作,导致数据被重复处理,准确度较低的问题。
第一方面,本申请实施例提供一种防重批量处理数据的方法,应用于调度中心系统中的调度节点中,所述方法包括:
根据获取到的调度计划,获取分布式锁,所述调度计划包括处理任务和处理时间,所述分布式锁用于锁定所述处理任务只在所述调度节点执行;
根据所述处理任务向批处理受理单元发送第一调用指令,所述第一调用指令中包括所述调度计划。
在第一方面的一种可能设计中,所述方法还包括:
接收所述批处理受理单元返回的执行结果;
或者,
在发送完所述第一调用指令后预设时长未接收到执行结果,则再次向所述批处理受理单元重新发送所述第一调用指令。
在第一方面的另一种可能设计中,所述根据获取到的调度计划,获取分布式锁,包括:
根据所述调度计划,从中间件或数据库服务器获取所述分布式锁;其中所述中间件包括Redis中间件或ZooKeeper中间件。
第一方面,本申请实施例提供一种防重批量处理数据的方法,应用于批处理受理单元,所述方法包括:
接收调度中心系统中的调度节点发送的第一调用指令,所述第一调用指令包括调度计划,所述调度计划包括处理任务和处理时间;
根据所述第一调用指令,生成用于标记数据的第一线程号;
从数据库服务器中获取待处理的业务数据,并将所述第一线程号更新至所述数据库服务器中所述业务数据表中的所述业务数据对应的线程号字段;
根据所述处理时间和所述处理任务对所述业务数据进行处理。
在第二方面的一种可能设计中,所述方法还包括:
在对所述业务数据处理完成后,将处理结果返回所述调度中心系统中的调度节点。
在第二方面的另一种可能设计中,所述方法还包括:
接收所述调度中心系统的所述调度节点发送的第二调用指令,所述第二调用指令包括调度计划,所述调度计划包括处理任务和处理时间;
根据所述第二调用指令,生成用于标记数据的第二线程号;
从数据库服务器中获取线程号字段为空的待处理的新的业务数据,并将所述第二线程号更新至所述数据库服务器中所述业务数据表中所述新的业务数据对应的线程号字段;
根据所述处理时间和所述处理任务对所述新的业务数据进行处理。
第三方面,本申请实施例提供一种防重批量处理数据的装置,包括:获取模块及发送模块;
所述获取模块,用于根据获取到的调度计划,获取分布式锁,所述调度计划包括处理任务和处理时间,所述分布式锁用于锁定所述处理任务只在所述调度节点执行;
所述发送模块,用于根据所述处理任务向批处理受理单元发送第一调用指令,所述第一调用指令中包括所述调度计划。
在第三方面的一种可能设计中,所述装置还包括:接收模块;
所述接收模块,用于接收所述批处理受理单元返回的执行结果;
或者,
所述发送模块,还用于在发送完所述第一调用指令后预设时长未接收到执行结果,则再次向所述批处理受理单元重新发送所述第一调用指令。
在第三方面的另一种可能设计中,所述获取模块,具体用于:
根据所述调度计划,从中间件或数据库服务器获取所述分布式锁;其中所述中间件包括Redis中间件或ZooKeeper中间件。
第四方面,本申请实施例提供一种防重批量处理数据的装置,包括:接收模块、生成模块及处理模块;
所述接收模块,用于接收调度中心系统中的调度节点发送的第一调用指令,所述第一调用指令包括调度计划,所述调度计划包括处理任务和处理时间;
所述生成模块,用于根据所述第一调用指令,生成用于标记数据的第一线程号;
所述处理模块,用于从数据库服务器中获取待处理的业务数据,并将所述第一线程号更新至所述数据库服务器中所述业务数据表中的所述业务数据对应的线程号字段;
所述处理模块,还用于根据所述处理时间和所述处理任务对所述业务数据进行处理。
在第四方面的一种可能设计中,所述装置还包括:发送模块;
所述发送模块,用于在对所述业务数据处理完成后,将处理结果返回所述调度中心系统中的调度节点。
在第四方面的另一种可能设计中,所述接收模块,还用于接收所述调度中心系统的所述调度节点发送的第二调用指令,所述第二调用指令包括调度计划,所述调度计划包括处理任务和处理时间;所述生成模块,还用于根据所述第二调用指令,生成用于标记数据的第二线程号;所述处理模块,还用于从数据库服务器中获取线程号字段为空的待处理的新的业务数据,并将所述第二线程号更新至所述数据库服务器中所述业务数据表中所述新的业务数据对应的线程号字段;所述处理模块,还用于根据所述处理时间和所述处理任务对所述新的业务数据进行处理。
第五方面,本申请实施例提供一种防重批量处理数据的系统,包括:
调度中心系统,数据库服务器以及批处理受理单元;
所述调度中心系统中包括控制模块以及多个调度节点,每个调度节点用于执行第一方面以及各可能设计提供的方法;
所述数据库服务器用于存储业务数据表;
所述批处理受理单元用于执行第二方面以及各可能设计提供的方法。
第六方面,本申请实施例可提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面、第二方面以及各可能设计提供的方法。
第七方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现第一方面、第二方面以及各可能设计提供的方法。
本申请实施例提供的防重批量处理数据的方法、装置、系统及存储介质,调度中心系统中的调度节点通过根据获取到的调度计划,获取分布式锁,调度计划包括处理任务和处理时间,分布式锁用于锁定处理任务只在调度节点执行。之后根据处理任务向批处理受理单元发送第一调用指令,第一调用指令中包括调度计划。本方法中,调度中心系统中的调度节点通过获取分布式锁,锁定处理任务只在该调度节点执行,使得与现有技术相比,能够确保业务数据只被处理一次,避免了多个批处理受理单元同时工作,导致业务数据被重复处理的问题,有效提高了业务数据处理的准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本申请实施例提供的防重批量处理数据的系统结构示意图;
图2为本申请实施例提供的防重批量处理数据的方法实施例一的流程示意图;
图3为本申请实施例提供的防重批量处理数据的方法又一实施例的流程示意图;
图4为本申请实施例提供的防重批量处理数据的方法实施例二的流程示意图;
图5为本申请实施例提供的防重批量处理数据的方法实施例三的流程示意图;
图6为本申请实施例提供的防重批量处理数据的装置实施例一的结构示意图;
图7为本申请实施例提供的防重批量处理数据的装置实施例二的结构示意图;
图8为本申请实施例提供的防重批量处理数据的装置实施例三的结构示意图;
图9为本申请实施例提供的防重批量处理数据的装置实施例四的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在介绍本申请的实施例之前,首先对本申请的背景技术进行解释说明。
随着互联网技术的迅猛发展,人们可以借助网络进行远程工作、购物、支付等,给人们生活带来了极大的便利。在互联网支付以及电子商务等领域中,由于使用用户较多,因此存在大量数据。在对数据进行处理的时候,如需要对符合特定条件的用户发放优惠券时,需要分别对每个用户的数据进行操作,处理效率较低。为了提高数据处理的速度和效率,考虑到对每个数据进行的处理操作是相同的,因此可以对批量数据进行处理。举例来说,如批量代发工资,批量发放电子优惠券,批量生成交易明细账单等。
在现有技术中,对批量数据进行处理主要通过人工对处理受理单元配置批量业务受理能力,将具有批量业务受理能力的处理受理单元称为批处理受理单元,之后在批处理受理单元对批量数据进行统一处理。然而,如果通过人工对多个处理受理单元配置批量业务受理能力,也就是说存在多个批处理受理单元,在对批量数据进行处理过程中可能会使得多个批处理受理单元同时工作,导致数据被重复处理,准确度较低。
针对上述问题,本申请的发明构思如下:在对批量数据进行处理时,在目前的方案中,由于多个批处理受理单元可能会对数据进行重复处理,导致数据处理的准确度较低。基于此,发明人发现,如果保证只有一个批处理受理单元能够获取第一调用指令,使得除了该批处理受理单元以外都不能对数据进行处理,则可以解决多个批处理受理单元对数据进行重复处理导致的数据处理准确度较低的问题,从而也可以节约数据处理时间,提高处理效率。
示例性的,本申请实施例提供的防重批量处理数据的方法可以应用于图1所示的防重批量处理数据的系统结构示意图中。图1为本申请实施例提供的防重批量处理数据的系统结构示意图,用以解决上述技术问题。如图1所示,如图1所示,防重批量处理数据的系统包括调度中心系统,数据库服务器以及批处理受理单元。
调度中心系统中包括控制模块以及多个调度节点,调度中心系统通过运行软件或者浏览器等方式在屏幕上显示批量数据处理界面,便于用户通过操作批量数据处理界面与调度中心系统进行交互。调度中心系统通过响应用户对批量数据处理界面上的提交控件操作,获取调度计划,并将该调度计划发送给各调度节点。各调度节点获取到调度计划后,同时向从中间件或数据库服务器获取分布式锁。其中,只有一个调度节点能够成功获取分布式锁,获取了分布式锁的调度节点将调度计划中的处理任务锁定在该调度节点执行,除该调度节点以外的其他调度节点均无法执行调度计划的调度任务。获取分布式锁的调度节点向批处理受理单元发送第一调用指令,批处理受理单元接收到第一调用指令后,根据该第一调用指令对待处理数据进行处理,生成处理结果。
其中,调度中心系统可以由工作人员自主研发,也可以使用开源项目,本申请实施例对此不进行具体限制。
数据库服务器主要用于存储业务数据表,业务数据表中存储有业务数据,其中,业务数据包括待处理的业务数据以及处理完的业务数据,批处理受理单元接收到第一调用指令后,根据第一调用指令从业务数据表中获取待处理的业务数据,并对其进行处理。
在一种具体的实现方式中,数据库服务器还可以与调度中心系统交互,使得调度中心系统能够从该数据库服务器中获取分布式锁。
下面,通过具体实施例对本申请的技术方案进行详细说明。
需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图2为本申请实施例提供的防重批量处理数据的方法实施例一的流程示意图。如图2所示,该防重批量处理数据的方法可以包括如下步骤:
S101:调度中心系统中的调度节点根据获取到的调度计划,获取分布式锁。
在本申请实施例中,调度中心系统中包括控制模块以及多个调度节点。调度中心系统需要为用户提供批量数据处理界面,以使用户能够通过浏览器或者应用程序等与调度中心系统进行交互。
具体的,调度中心系统通过运行软件或者浏览器的方式在屏幕上显示批量数据处理界面,调度中心系统中的控制模块通过响应用户在批量数据处理界面上的操作,生成调度计划,并将该调度计划发送给调度节点。
示例性的,当用户需要进行批量数据处理时,用户可以对批量数据处理界面上的控件进行选择操作。举例来说,用户可以点击批量数据处理界面上的时间控件对处理时间进行设置,点击任务控件选择需要对待处理的业务数据进行的处理任务,最后点击提交控件完成对批量数据处理界面的操作。调度中心系统的控制模块检测到批量数据处理界面上的提交控件被点击之后,生成调度计划,并将该调度计划发送给调度节点。
其中,调度计划包括处理任务和处理时间。处理时间可以设置为一个固定时间,也可以设置为多个固定时间。
示例性的,处理任务可以为发放工资,也可以为发送短信、发放优惠券等,用户可以根据自己的需求选取相应的处理任务。
在本步骤中,调度中心系统中的多个调度节点同时获取控制模块发送的调度计划,多个调度节点根据该调度计划同时从中间件或数据库服务器中获取分布式锁。当其中一个调度节点成功获取分布式锁后,其他节点无法再获取该分布式锁。分布式锁是一种独占锁,根据同一调度计划只有一个调度节点能够主要用于锁定该调度计划中的处理任务只在获取了该分布式锁的调度节点中执行。
可选的,中间件包括Redis中间件或ZooKeeper中间件。
S102:根据处理任务向批处理受理单元发送第一调用指令。
在本步骤中,为了使得批处理受理单元能够根据调度计划对待处理的业务数据进行处理,获取分布式锁的调度节点需要向批处理受理单元发送第一调用指令。
其中,第一调用指令中包括调度计划,调度计划包括处理任务和处理时间。
具体的,调度中心系统中的调度节点与批处理受理单元之间通过多线程进行数据传输。
在一种具体的实施方式中,由于可能存在多个批处理受理单元能够根据该第一调用指令执行该调度计划中的处理任务,为了防止多个调用指令在一个批处理受理单元中排队处理,而其余的批处理受理单元处于空闲状态,因此调度节点可以将第一调用指令发送给Nginx,HAProxy等中间件。Nginx,HAProxy等中间件接收到第一调用指令后将该第一调用指令发送给空闲的批处理受理单元或者排队数量较小的批处理受理单元。
S103:批处理受理单元接收调度中心系统中的调度节点发送的第一调用指令。
在本步骤中,批处理受理单元可以接收调度中心系统中的调度节点发送的第一调用指令,还可以接收Nginx,HAProxy等中间件发送的第一调用指令。
其中,第一调用指令中包括调度计划。
S104:根据第一调用指令,生成用于标记数据的第一线程号。
在本步骤中,批处理受理单元接收到第一调用指令后,根据该调用指令生成随机的第一线程号。其中,第一线程号可以为字符串,用于标记数据,且批处理受理单元每次生成的线程号都是不同的。
示例性的,生成的第一线程号可以为b784mae3f86e9b7e,其中,用于生成第一线程号的代码可以为String threadId=UUID.createUUID()。
S105:从数据库服务器中获取待处理的业务数据,并将第一线程号更新至数据库服务器中业务数据表中的业务数据对应的线程号字段。
在本申请实施例中,数据库服务器中存放业务数据表,业务数据表用于储存业务数据,其中,包括处理完的业务数据以及待处理的业务数据。批处理受理单元在接收到第一线程号后,根据该第一线程号获取业务数据表中的待处理的业务数据。
示例型的,表一为业务数据表的一种形式。
表一
主键(id) | 姓名(name) | 金额(amount) | 状态(status) | 线程号(threadId) |
0001 | 张三 | 20 | INIT | null |
0002 | 李四 | 500 | INIT | null |
0003 | 王五 | 15 | INIT | null |
0004 | 陈六 | 58 | INIT | null |
其中,主键(identity document,id)用于对用户身份进行标记,根据不同id对应不同的用户。状态(英文:status)用于表示业务数据的处理状态,该业务数据没有被处理时,其状态为INIT;当该业务数据已经被处理完后,其状态则为DONE。线程号(英文:threadId)用于标记业务数据,如果该用户的业务数据未被标记,则此时线程号字段为null;如果该用户的业务数据被标记,则线程号字段为用于标记该用户业务数据的线程号。
在本步骤中,批处理受理单元生成用于标记业务数据的第一线程号后,从数据库服务器中获取待处理的业务数据,并将该第一线程号更新至业务数据表中对应的线程号字段。
以第一线程号为b784mae3f86e9b7e进行举例说明,该步骤可以通过如下代码实现:
upate t_order set threadId=‘b784mae3f86e9b7e’where status=‘INIT’andthreadId is null
示例性的,以第一线程号为b784mae3f86e9b7e进行举例说明,表二为业务数据表更新后的一种形式。
表二
主键(id) | 姓名(name) | 金额(amount) | 状态(status) | 线程号(threadId) |
0001 | 张三 | 20 | INIT | b784mae3f86e9b7e |
0002 | 李四 | 500 | INIT | b784mae3f86e9b7e |
0003 | 王五 | 15 | INIT | b784mae3f86e9b7e |
0004 | 陈六 | 58 | INIT | b784mae3f86e9b7e |
可选的,将用于标记业务数据的第一线程号更新至业务数据表中的业务数据对应的线程号字段后,根据该第一线程号提取表格中被该第一线程号标记的未处理数据。
示例性的,可以通过以下代码实现:
select*from t_order where status=‘INIT’and threadId=’b784mae3f86e9b7e’
S106:根据处理时间和处理任务,对业务数据进行处理。
在本步骤中,批处理受理单元获取待处理的业务数据后,根据处理时间以及处理任务,按照id对业务数据进行逐条处理。
其中,处理时间可以为一个固定时间,也可以为多个固定时间。
示例性的,可以通过以下代码实现:
update t_order set status=’DONE’where id=’0001’and status='INIT'and threadId=‘b784mae3f86e9b7e’
可选的,批处理受理单元处理完该条业务数据后,将业务数据表中该条业务数据的状态更新为DONE。
可选的,批处理受理单元处理完业务数据后还可以生成执行结果,并将该执行结果发送给调度中心系统,批处理受理单元还可以将该执行结果发送给Nginx,HAProxy等中间件。
在一种具体的实施方式中,调度中心系统中的调度节点接收批处理受理单元返回的执行结果。
在另一种具体的实施方式中,Nginx,HAProxy等中间件接收批处理受理单元返回的执行结果,Nginx,HAProxy等中间件将该执行结果发送给调度中心系统中的调度节点,调度中心系统中的调度节点接收该执行结果。
可选的,当批处理受理单元出现故障时,可能无法对业务数据进行处理,无法生成执行结果并向Nginx,HAProxy等中间件发送该执行结果。因此,在发送完第一调用指令后预设时长未接收到执行结果,则再次向该批处理受理单元重新发送第一调用指令。
其中,该预设时长可以为30s、35s、40s等,可以根据用户的需求进行设置,本方案对此不进行具体限制。
图3为本申请实施例提供的防重批量处理数据的方法又一实施例的流程示意图。如图3所示,该防重批量处理数据的方法可以包括如下步骤:
第1步、开始。
第2步、调度中心系统中的调度节点根据获取到的调度计划,获取分布式锁,根据处理任务向Nginx,HAProxy等中间件发送第一调用指令。
第3步、Nginx,HAProxy等中间件向批处理受理单元发送第一调用指令。
第4步、批处理受理单元接收第一调用指令,并根据第一调用指令,对待处理的业务数据进行处理。
第5步、结束
本申请实施例提供的防重批量处理数据的方法,调度中心系统中的调度节点通过根据获取到的调度计划,获取分布式锁,调度计划包括处理任务和处理时间,分布式锁用于锁定处理任务只在调度节点执行。之后根据处理任务向批处理受理单元发送第一调用指令,第一调用指令中包括调度计划。调度中心系统中的调度节点通过获取分布式锁,锁定处理任务只在该调度节点执行,使得与现有技术相比,能够确保业务数据只被处理一次,避免了多个批处理受理单元同时工作,导致业务数据被重复处理的问题,有效提高了业务数据处理的准确性。
由于处理时间可以为一个固定时间,也可以为多个固定时间。当任务时间为多个固定时间时,调度中心系统中的调度节点可以向批处理受理单元发送调用指令,批处理受理单元按照调度计划中的多个固定时间处理待处理的业务数据。然而,在一个批处理受理单元多个固定时间处理业务数据,有可能会造成负载不均衡的情况。因此,在处理时间为多个固定时间时,调度中心系统中的调度节点可以在每个固定时间向批处理受理单元发送调用指令,能够最大程度的保证负载均衡。
在上述实施例的基础上,图4为本申请实施例提供的防重批量处理数据的方法实施例二的流程示意图。如图4所示,该批处理受理单元侧的防重批量处理数据的方法还可以包括如下步骤:
S201:接收调度中心系统的调度节点发送的第二调用指令。
在本步骤中,为了使得批处理受理单元能够根据调度计划对待处理的业务数据进行处理,获取分布式锁的调度节点需要向批处理受理单元发送第二调用指令。
其中,第二调用指令包括调度计划,调度计划包括处理任务和处理时间,处理时间为一个固定时间。
可选的,获取分布式锁的调度节点可以将第二调用指令发送给Nginx,HAProxy等中间件。Nginx,HAProxy等中间件接收到第二调用指令后将该第二调用指令发送给空闲的批处理受理单元或者排队数量较小的批处理受理单元。
S202:根据第二调用指令,生成用于标记数据的第二线程号。
在本步骤中,批处理受理单元接收到第二调用指令后,根据该调用指令生成随机的第二线程号。其中,第二线程号可以为字符串,用于标记数据,且批处理受理单元每次生成的线程号都是不同的。
S203:从数据库服务器中获取线程号字段为空的待处理的新的业务数据,并将第二线程号更新至数据库服务器中业务数据表中新的业务数据对应的线程号字段。
在本步骤中,数据库服务器中存放用于储存业务数据的业务数据表,其中,包括处理完的业务数据以及待处理的业务数据。可以根据业务数据表中业务数据的线程号字段判断该业务数据是否被处理,当线程号字段为null时,则该条业务数据为待处理的业务数据,若线程号字段为字符串时,且状态为DONE时,则该条业务数据为已处理的业务数据。
具体的,批处理受理单元生成用于标记数据的第二线程号后,从数据库服务器中获取待处理的业务数据,并将该第二线程号更新至业务数据表中对应的线程号字段,之后根据该第二线程号提取表格中被该第二线程号标记的未处理数据。
S204:根据处理时间和处理任务对新的业务数据进行处理。
在本步骤中,批处理受理单元获取待处理的业务数据后,根据处理时间以及处理任务,按照业务数据的id对业务数据进行逐条处理。
其中,处理时间可以为一个固定时间。
具体的,批处理受理单元按照id逐条对待处理的业务数据进行处理,并在处理后将业务数据表中该条业务数据的状态更新为DONE。
本申请实施例提供的防重批量处理数据的方法,调度中心系统中的调度节点通过获取分布式锁,锁定处理任务只在该调度节点执行,并在每个固定时间向批处理受理单元发送调用指令,能够有效的保证批处理受理单元的负载均衡,提高了批处理受理单元的利用率。
在上述实施例的基础上,图5为本申请实施例提供的防重批量处理数据的方法实施例三的流程示意图。如图5所示,调度中心系统中的调度节点侧的防重批量处理数据的方法可以包括如下步骤:
第1步、开始。
第2步、根据获取到的调度计划,获取分布式锁,调度计划包括处理任务和处理时间。
第3步、根据处理任务向批处理受理单元发送第一调用指令。
第4步、接收批处理受理单元对业务数据处理后返回的执行结果。
第5步、结束。
本申请实施例提供的防重批量处理数据的方法,调度中心系统中的调度节点通过获取分布式锁,锁定处理任务只在该调度节点执行,为接下来批处理受理单元处理待处理的业务数据奠定了基础。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图6为本申请实施例提供的防重批量处理数据的装置实施例一的结构示意图。如图6所示,该防重批量处理数据的装置包括:获取模块61及发送模块62。
获取模块61,用于根据获取到的调度计划,获取分布式锁,调度计划包括处理任务和处理时间,分布式锁用于锁定处理任务只在调度节点执行;
发送模块62,用于根据处理任务向批处理受理单元发送第一调用指令,第一调用指令中包括调度计划;
在上述实施例的基础上,图7为本申请实施例提供的防重批量处理数据的装置实施例二的结构示意图。如图7所示,该洗衣机应用程序的测试装置还包括:接收模块63。
接收模块63,用于接收批处理受理单元返回的执行结果。
或者,
发送模块62,还用于在发送完第一调用指令后预设时长未接收到执行结果,则再次向批处理受理单元重新发送第一调用指令。
在本申请实施例一种可能设计中,获取模块61,具体用于:
根据调度计划,从中间件或数据库服务器获取分布式锁;其中中间件包括Redis中间件或ZooKeeper中间件。
本申请实施例提供的防重批量处理数据的装置,可用于执行上述实施例中的调度中心系统中的调度节点侧的防重批量处理数据的方法,其实现原理和技术效果类似,在此不再赘述。
图8为本申请实施例提供的防重批量处理数据的装置实施例三的结构示意图。如图8所示,该防重批量处理数据的装置包括:接收模块81、生成模块82及处理模块83。
接收模块81,用于接收调度中心系统中的调度节点发送的第一调用指令,第一调用指令包括调度计划,调度计划包括处理任务和处理时间;
生成模块82,用于根据第一调用指令,生成用于标记数据的第一线程号;
处理模块83,用于从数据库服务器中获取待处理的业务数据,并将第一线程号更新至数据库服务器中业务数据表中的业务数据对应的线程号字段;
处理模块83,还用于根据处理时间和处理任务对业务数据进行处理。
在上述实施例的基础上,图9为本申请实施例提供的防重批量处理数据的装置实施例四的结构示意图。如图9所示,该洗衣机应用程序的测试装置还包括:发送模块84。
发送模块84,用于在对业务数据处理完成后,将处理结果返回调度中心系统中的调度节点。
在本申请实施例一种可能设计中,接收模块81,还用于接收调度中心系统的调度节点发送的第二调用指令,第二调用指令包括调度计划,调度计划包括处理任务和处理时间;生成模块82,还用于根据第二调用指令,生成用于标记数据的第二线程号;处理模块83,还用于从数据库服务器中获取线程号字段为空的待处理的新的业务数据,并将第二线程号更新至数据库服务器中业务数据表中新的业务数据对应的线程号字段;处理模块83,还用于根据处理时间和处理任务对新的业务数据进行处理。
本申请实施例提供的防重批量处理数据的装置,可用于执行上述实施例中批处理受理单元侧的防重批量处理数据的方法,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。此外,这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述防重批量处理数据的方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
可选的,将可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,至少一个处理器可以从该计算机可读存储介质中读取该计算机程序,所述至少一个处理器执行所述计算机程序时可实现上述防重批量处理数据的方法。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (11)
1.一种防重批量处理数据的方法,其特征在于,应用于调度中心系统中的调度节点中,所述方法包括:
根据获取到的调度计划,获取分布式锁,所述调度计划包括处理任务和处理时间,所述分布式锁用于锁定所述处理任务只在所述调度节点执行;
根据所述处理任务向批处理受理单元发送第一调用指令,所述第一调用指令中包括所述调度计划。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述批处理受理单元返回的执行结果;
或者,
在发送完所述第一调用指令后预设时长未接收到执行结果,则再次向所述批处理受理单元重新发送所述第一调用指令。
3.根据权利要求1或2所述的方法,其特征在于,所述根据获取到的调度计划,获取分布式锁,包括:
根据所述调度计划,从中间件或数据库服务器获取所述分布式锁;其中所述中间件包括Redis中间件或ZooKeeper中间件。
4.一种防重批量处理数据的方法,其特征在于,应用于批处理受理单元,所述方法包括:
接收调度中心系统中的调度节点发送的第一调用指令,所述第一调用指令包括调度计划,所述调度计划包括处理任务和处理时间;
根据所述第一调用指令,生成用于标记数据的第一线程号;
从数据库服务器中获取待处理的业务数据,并将所述第一线程号更新至所述数据库服务器中所述业务数据表中的所述业务数据对应的线程号字段;
根据所述处理时间和所述处理任务,对所述业务数据进行处理。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在对所述业务数据处理完成后,将处理结果返回所述调度中心系统中的调度节点。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
接收所述调度中心系统的所述调度节点发送的第二调用指令,所述第二调用指令包括调度计划,所述调度计划包括处理任务和处理时间;
根据所述第二调用指令,生成用于标记数据的第二线程号;
从数据库服务器中获取线程号字段为空的待处理的新的业务数据,并将所述第二线程号更新至所述数据库服务器中所述业务数据表中所述新的业务数据对应的线程号字段;
根据所述处理时间和所述处理任务对所述新的业务数据进行处理。
7.一种防重批量处理数据的装置,其特征在于,包括:获取模块及发送模块;
所述获取模块,用于根据获取到的调度计划,获取分布式锁,所述调度计划包括处理任务和处理时间,所述分布式锁用于锁定所述处理任务只在所述调度节点执行;
所述发送模块,用于根据所述处理任务向批处理受理单元发送第一调用指令,所述第一调用指令中包括所述调度计划。
8.一种防重批量处理数据的装置,其特征在于,包括:接收模块、生成模块及处理模块;
所述接收模块,用于接收调度中心系统中的调度节点发送的第一调用指令,所述第一调用指令包括调度计划,所述调度计划包括处理任务和处理时间;
所述生成模块,用于根据所述第一调用指令,生成用于标记数据的第一线程号;
所述处理模块,用于从数据库服务器中获取待处理的业务数据,并将所述第一线程号更新至所述数据库服务器中所述业务数据表中的所述业务数据对应的线程号字段;
所述处理模块,还用于根据所述处理时间和所述处理任务对所述业务数据进行处理。
9.一种防重批量处理数据的系统,其特征在于,包括:
调度中心系统,数据库服务器以及批处理受理单元;
所述调度中心系统中包括控制模块以及多个调度节点,每个调度节点用于执行权利要求1至3任一项所述的防重批量处理数据的方法;
所述数据库服务器用于存储业务数据表;
所述批处理受理单元用于执行权利要求4至6任一项所述的防重批量处理数据的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至6任一项所述的防重批量处理数据的方法。
11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现如权利要求1至6任一项所述的防重批量处理数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110205741.3A CN112988348A (zh) | 2021-02-24 | 2021-02-24 | 防重批量处理数据的方法、装置、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110205741.3A CN112988348A (zh) | 2021-02-24 | 2021-02-24 | 防重批量处理数据的方法、装置、系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112988348A true CN112988348A (zh) | 2021-06-18 |
Family
ID=76350041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110205741.3A Pending CN112988348A (zh) | 2021-02-24 | 2021-02-24 | 防重批量处理数据的方法、装置、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988348A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992684A (zh) * | 2021-10-26 | 2022-01-28 | 中电金信软件有限公司 | 发送数据的方法、装置、处理节点、存储介质及系统 |
CN114564286A (zh) * | 2021-12-29 | 2022-05-31 | 西安天和防务技术股份有限公司 | 一种规则引擎告警方法及规则引擎告警系统 |
CN116991591A (zh) * | 2023-09-25 | 2023-11-03 | 腾讯科技(深圳)有限公司 | 一种数据调度方法、装置及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558234A (zh) * | 2018-11-30 | 2019-04-02 | 中国联合网络通信集团有限公司 | 一种定时任务调度方法和装置 |
-
2021
- 2021-02-24 CN CN202110205741.3A patent/CN112988348A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558234A (zh) * | 2018-11-30 | 2019-04-02 | 中国联合网络通信集团有限公司 | 一种定时任务调度方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992684A (zh) * | 2021-10-26 | 2022-01-28 | 中电金信软件有限公司 | 发送数据的方法、装置、处理节点、存储介质及系统 |
CN113992684B (zh) * | 2021-10-26 | 2022-10-28 | 中电金信软件有限公司 | 发送数据的方法、装置、处理节点、存储介质及系统 |
CN114564286A (zh) * | 2021-12-29 | 2022-05-31 | 西安天和防务技术股份有限公司 | 一种规则引擎告警方法及规则引擎告警系统 |
CN116991591A (zh) * | 2023-09-25 | 2023-11-03 | 腾讯科技(深圳)有限公司 | 一种数据调度方法、装置及存储介质 |
CN116991591B (zh) * | 2023-09-25 | 2024-01-09 | 腾讯科技(深圳)有限公司 | 一种数据调度方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112988348A (zh) | 防重批量处理数据的方法、装置、系统及存储介质 | |
US5530848A (en) | System and method for implementing an interface between an external process and transaction processing system | |
US11704616B2 (en) | Systems and methods for distributed business processmanagement | |
US20070005623A1 (en) | Process oriented message driven workflow programming model | |
EP2416246B1 (en) | Extensibility of business process and application logic | |
CN112035230A (zh) | 一种任务调度文件生成方法、装置及存储介质 | |
CN113256426A (zh) | 一种数据处理方法、装置、设备及介质 | |
WO2020258653A1 (zh) | 一种跨节点的数据处理方法及装置 | |
CN111159040A (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
CN114356530A (zh) | 任务调度方法、装置、电子设备及存储介质 | |
CN111178846B (zh) | 一种工作流文件生成方法、装置、设备及存储介质 | |
CN113051279A (zh) | 数据消息的存储方法、存储装置、电子设备及存储介质 | |
CN110381150B (zh) | 区块链上的数据处理方法、装置、电子设备及存储介质 | |
CN111752961A (zh) | 一种数据处理方法及装置 | |
CN112015563A (zh) | 消息队列切换方法、装置、电子设备及存储介质 | |
CN111899018A (zh) | 订单数据处理方法、装置、服务器及存储介质 | |
CN111428463A (zh) | 一种短信处理方法、装置、电子设备和存储介质 | |
CN115934272A (zh) | 一种联机批量任务处理方法及装置 | |
CN115328457A (zh) | 基于参数配置的表单页面实现方法和装置 | |
CN111679899B (zh) | 任务调度方法、装置、平台设备及存储介质 | |
US20220276901A1 (en) | Batch processing management | |
CN114238352A (zh) | 一种微服务业务处理方法及相关装置 | |
CN114066295A (zh) | 工作流业务编排方法、装置、电子设备和可读存储介质 | |
CN113835780A (zh) | 一种事件响应方法及装置 | |
CN110990278A (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 |