CN111752961A - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN111752961A CN111752961A CN202010607664.XA CN202010607664A CN111752961A CN 111752961 A CN111752961 A CN 111752961A CN 202010607664 A CN202010607664 A CN 202010607664A CN 111752961 A CN111752961 A CN 111752961A
- Authority
- CN
- China
- Prior art keywords
- information
- fragment
- thread
- data
- fragmentation
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 10
- 239000012634 fragment Substances 0.000 claims abstract description 220
- 238000012545 processing Methods 0.000 claims abstract description 101
- 238000013467 fragmentation Methods 0.000 claims abstract description 90
- 238000006062 fragmentation reaction Methods 0.000 claims abstract description 90
- 238000000034 method Methods 0.000 claims abstract description 72
- 230000008569 process Effects 0.000 claims abstract description 42
- 238000003860 storage Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 8
- 238000004904 shortening Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000009530 blood pressure measurement Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002354 daily effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000035899 viability Effects 0.000 description 1
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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及金融科技(Fintech)中的数据处理技术领域,尤其涉及一种数据处理方法及装置,用以提升数据处理性能,缩短处理大量数据的耗时。本发明实施例应用于业务系统,所述业务系统包括数据库和至少2个业务节点,所述方法包括:业务节点创建N个线程,其中N为大于1的整数;针对所述业务节点的每一个线程,所述线程从所有分片信息中查找未被标记的分片信息,所述分片信息为将业务数据进行分片得到的分片数据对应的数据信息;所述线程锁定一个未被标记的分片信息并进行标记;所述线程根据所述分片信息,从所述数据库中获取对应的分片数据;所述线程对所述分片数据进行处理,并将处理完成后的分片数据存入所述数据库。
Description
技术领域
本发明涉及金融科技(Fintech)中的数据处理技术领域,尤其涉及一种数据处理方法及装置。
背景技术
随着金融科技,尤其是互联网科技金融的不断发展,越来越多的技术(如分布式、区块链Blockchain、人工智能等)应用在金融领域,但金融业也对技术提出了更高的要求,如针对数据处理过程。
银行及金融系统每天会对大量客户资产、负债进行清算、计息、扣款等批量处理。目前大多数银行及金融系统数据存储仍然采用单数据库存储,各批量交易之间存在复杂的前置依赖关系,且大多数批量仅允许被执行一次,故批量交易往往在单个节点上执行,对于部分耗时久的交易,一般采用多线程并发执行,以提升并发执行效率。
现有技术中,是通过增加线程数从而增加批量交易的并发处理能力,但这种扩展能力始终存在上限,当线程数增加到一定数量以上时,反而会因为CPU上下文频繁切换而增加耗时,从而降低性能。
发明内容
本申请提供一种数据处理方法及装置,用以提升数据处理性能,缩短处理大量数据的耗时。
本发明实施例提供的一种数据处理方法,应用于业务系统,所述业务系统包括数据库和至少2个业务节点,所述方法包括:
业务节点创建N个线程,其中N为大于1的整数;
针对所述业务节点的每一个线程,所述线程从所有分片信息中查找未被标记的分片信息,所述分片信息为将业务数据进行分片得到的分片数据对应的数据信息;
所述线程锁定一个未被标记的分片信息并进行标记;
所述线程根据所述分片信息,从所述数据库中获取对应的分片数据;
所述线程对所述分片数据进行处理,并将处理完成后的分片数据存入所述数据库。
一种可选的实施例中,所述线程锁定一个未被标记的分片信息并进行标记,包括:
所述线程利用悲观锁锁定所述未被标记的分片信息;
所述线程利用线程标识将所述分片信息进行标记。
一种可选的实施例中,所述线程利用线程标识将所述分片信息进行标记之后,还包括:
所述线程判断所述分片信息对应的线程标识是否为所述线程的线程标识;
若是,则所述线程执行根据所述分片信息,从所述数据库中获取对应的待处理分片数据的步骤;
若否,则所述线程执行从所有分片信息中查找未被标记的分片信息的步骤。
一种可选的实施例中,所述分片信息中包括对应的分片数据的处理状态;所述线程锁定一个未被标记的分片信息并进行标记之前,所述分片信息的处理状态为未处理;
所述线程锁定一个未被标记的分片信息并进行标记之后,还包括:
所述线程将所述待处理分片信息的处理状态改为处理中;
所述线程对所述待处理分片数据进行处理,并将处理后的已处理分片数据存入所述数据库之后,还包括:
所述线程将所述待处理分片信息的处理状态改为已处理。
一种可选的实施例中,所述线程从所有分片信息中查找未被标记的分片信息之后,还包括:
若所有分片信息均已被标记,则所述业务节点注销所述线程。
一种可选的实施例中,所述线程对所述分片数据进行处理之后,还包括:
业务节点按照设定频率向所述数据库发送心跳消息;
若所述数据库在设定时间内未接收到第一业务节点的心跳消息,则查询所述第一业务节点对应的分片信息,所述第一业务节点为所述业务系统中的任一业务节点;
若所述分片信息的进程标识与所述第一业务节点不对应,则所述数据库确定所述分片数据的分片信息的处理状态;
若所述分片信息的处理状态为处理失败,则发送告警指示;
若所述分片信息的处理状态为处理中,则将所述分片信息的处理状态改为未处理。
本发明实施例还提供一种数据处理装置,应用于业务系统,所述业务系统包括数据库和至少2个业务节点,所述装置包括:
创建单元,用于创建N个线程,其中N为大于1的整数;
查找单元,用于针对所述业务节点的每一个线程,从所有分片信息中查找未被标记的分片信息,所述分片信息为将业务数据进行分片得到的分片数据对应的数据信息;
锁定单元,用于锁定一个未被标记的分片信息并进行标记;
获取单元,用于根据所述分片信息,从所述数据库中获取对应的分片数据;
处理单元,用于对所述分片数据进行处理,并将处理完成后的分片数据存入所述数据库。
一种可选的实施例中,所述锁定单元,具体用于:
利用悲观锁锁定所述未被标记的分片信息;
利用线程标识将所述分片信息进行标记。
一种可选的实施例中,所述锁定单元,还用于:
判断所述分片信息对应的线程标识是否为所述线程的线程标识;
若是,则执行根据所述分片信息,从所述数据库中获取对应的待处理分片数据的步骤;
若否,则执行从所有分片信息中查找未被标记的分片信息的步骤。
一种可选的实施例中,所述分片信息中包括对应的分片数据的处理状态;所述线程锁定一个未被标记的分片信息并进行标记之前,所述分片信息的处理状态为未处理;
所述锁定单元,还用于:
在所述线程锁定一个未被标记的分片信息并进行标记之后,将所述待处理分片信息的处理状态改为处理中;
在所述线程对所述待处理分片数据进行处理,并将处理后的已处理分片数据存入所述数据库之后,将所述待处理分片信息的处理状态改为已处理。
一种可选的实施例中,所述创建单元,还用于:
若所有分片信息均已被标记,则注销所述线程。
本发明实施例还提供一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。
本发明实施例还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上所述的方法。
本发明实施例提供了一种业务系统,该业务系统包括数据库和至少2个业务节点。对于每个业务节点,业务节点创建N个线程,其中N为大于1的整数。针对每一个线程,线程从所有分片信息中查找未被标记的分片信息,其中,分片信息为将业务数据进行分片得到的分片数据对应的数据信息。该线程锁定一个未被标记的分片信息并进行标记,线程根据分片信息,从数据库中获取对应的分片数据。之后,线程对分片数据进行处理,并将处理完成后的分片数据存入数据库中。本发明实施例通过增加业务节点,通过多个业务节点共同执行业务数据处理任务,且每个业务节点均创建有多个线程,从而增加了线程数量的上限,进而充分利用了多节点的计算资源,提升了处理性能,也提高了处理的横向可扩展性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种可能的系统构架的结构示意图;
图2为本发明实施例提供的一种数据处理方法的流程示意图;
图3为本发明实施例提供的一种数据处理装置的结构示意图;
图4为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了便于理解,下面对本发明实施例中可能涉及的名词进行定义和解释。
贷款核心系统:为贷款产品(如微业贷)提供额度管控、贷款发放、还款、会计核算、科目记账等服务的系统程序。
借据:为银行与企业(个人)间某笔债权债务关系的数据存储,主要存储信息包括债务金额、债务人、债务执行利率、期限、还款方式等。
利息计提:对某笔贷款(或借据)每日按既定的执行利率、规定的基数(一般为贷款余额)计算利息,并列入利息科目。
多实例:执行业务逻辑的一个应用进程为一个实例,实际企业级应用中为保证高并发高可用的服务,通常部署多个实例在不同机器的多个机房中。
数据分片池:对大量数据,按照某一维度的一定算法进行切分,切分为若干个分片,形成分片池,以被应用程序以分片为单位进行调度处理。本文中对业务系统中大量借据,按照客户编号取模1000,形成1000个分片,分片编号为模值。
JVM:Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同操作系统平台上运行时不需要重新编译。
如图1所示,本发明实施例所适用的一种系统架构,包括至少两个业务节点101和数据库102。
其中,业务节点101可以是手机、平板电脑或者是专用的手持设备等具有无线通信功能的电子设备,也可以是个人计算机(personal computer,简称PC),笔记本电脑,服务器等有线接入方式连接上网的设备。业务节点101还可以是计算机等网络设备,可以是一个独立的设备,也可以是多个服务器所形成的服务器集群。优选地,业务节点101可以采用云计算技术进行信息处理。
数据库102可以是各种类型的数据库,优选的,为数据库集群,可以采用云计算技术进行信息处理。
业务节点101可以通过INTERNET网络与数据库102进行通信,也可以通过全球移动通信系统(Global System for Mobile Communications,简称GSM)、长期演进(long termevolution,简称LTE)系统等移动通信系统与数据库102进行通信。
基于上述架构,本发明实施例提供了一种数据处理方法,如图2所示,本发明实施例提供的数据处理方法应用于业务系统,业务系统包括数据库和至少2个业务节点,方法包括以下步骤:
步骤201、业务节点创建N个线程,其中N为大于1的整数。
步骤202、针对所述业务节点的每一个线程,所述线程从所有分片信息中查找未被标记的分片信息,所述分片信息为将业务数据进行分片得到的分片数据对应的数据信息。
步骤203、所述线程锁定一个未被标记的分片信息并进行标记。
步骤204、所述线程根据所述分片信息,从所述数据库中获取对应的分片数据。
步骤205、所述线程对所述分片数据进行处理,并将处理完成后的分片数据存入所述数据库。
本发明实施例提供了一种业务系统,该业务系统包括数据库和至少2个业务节点。对于每个业务节点,业务节点创建N个线程,其中N为大于1的整数。针对每一个线程,线程从所有分片信息中查找未被标记的分片信息,其中,分片信息为将业务数据进行分片得到的分片数据对应的数据信息。该线程锁定一个未被标记的分片信息并进行标记,线程根据分片信息,从数据库中获取对应的分片数据。之后,线程对分片数据进行处理,并将处理完成后的分片数据存入数据库中。本发明实施例通过增加业务节点,通过多个业务节点共同执行业务数据处理任务,且每个业务节点均创建有多个线程,从而增加了线程数量的上限,进而充分利用了多节点的计算资源,提升了处理性能,也提高了处理的横向可扩展性。
本发明实施例中,为了便于保存分片信息,通过分片池以表格的形式存储分片信息。对一个业务的大量业务数据,按照某一维度的一定算法进行切分,切分为若干个分片,形成分片池,以被应用程序以分片为单位进行调度处理。
假设某业务系统部署M个业务节点,每个业务节点中设置有一个实例。一个实例建立N个线程,则可处理批量任务的总线程数为M*N。将业务数据进行分片为数量切分更细粒度的分片数据,通常为总线程数的10-50倍,一般取整数,如1000。
多实例批量调度算法将批量处理数据进行细粒度分片的原因为,屏蔽因部分实例CPU等资源繁忙,或某分片数据过多导致该分片处理耗时过久的问题。分片切分更细粒度,各实例处理分片数据耗时才可更均衡。
分片切分算法的选择与实现,本发明实施例中包含但不限于取模算法、号码段算法、自定义切分函数算法等。较佳地,本发明实施例中以取模算法为例说明分片池的设置。如某贷款核心系统的晚间利息计提批量,处理100万客户的存量借据,预计启用5个实例,每个实例10个线程,则共有50个线程,将业务数据划分生成1000个分片数据。
进一步地,所述线程锁定一个未被标记的分片信息并进行标记,包括:
所述线程利用悲观锁锁定所述未被标记的分片信息;
所述线程利用线程标识将所述分片信息进行标记。
具体实施过程中,以关系型数据库为例,本发明实施例中的分片池以日期、分片池ID、分片ID为联合主键,标识一个批量任务的某分片数据。分片ID为0-999的整数,分片执行状态默认为0(未处理),抢占实例IP字段初始为空。分片池的具体表现形式可以为表结构,如表1所示。
表1
具体来说,对于某任务数据,分片池表批量生成1000个分片,分片ID为0-999的整数,初始状态为0(未处理),抢占实例IP字段初始为空,数据存储如表2所示。其中,抢占线程IP即为线程标识。
表2
日期 | 分片池ID | 分片ID | 状态 | 描述 | 抢占线程IP |
2019/10/08 | loan_end_batch | 0 | 2 | 处理成功 | 10.168.8.1 |
2019/10/08 | loan_end_batch | 1 | 2 | 处理成功 | 10.168.8.2 |
2019/10/08 | loan_end_batch | 1 | 1 | 处理中 | 10.168.8.3 |
2019/10/08 | loan_end_batch | … | 0 | 未处理 | |
2019/10/08 | loan_end_batch | n-2 | 0 | 未处理 | |
2019/10/08 | loan_end_batch | n-1 | 0 | 未处理 |
进一步地,所述分片信息中包括对应的分片数据的处理状态;所述线程锁定一个未被标记的分片信息并进行标记之前,所述分片信息的处理状态为未处理;
所述线程锁定一个未被标记的分片信息并进行标记之后,还包括:
所述线程将所述待处理分片信息的处理状态改为处理中;
所述线程对所述待处理分片数据进行处理,并将处理后的已处理分片数据存入所述数据库之后,还包括:
所述线程将所述待处理分片信息的处理状态改为已处理。
具体实施过程中,标记为多实例的任务被调度后,首先经过实例可执行性校验,对于未超出任务可执行实例数量限制,且没有正在执行任务的实例,才能处理该任务。
本发明实施例中的实例进程往关系型数据库中插入实例的批量任务执行记录R,避免新一轮定时任务或手工触发任务导致本实例被再次调度执行,实例执行记录关键字段包括:任务ID,执行日期、执行实例IP,执行状态、执行时间等。
本发明实施例中多个业务节点共同处理任务数据,每个业务节点对应一个实例。对于任一实例,均创建N个线程,所有线程去共同抢占并处理分片数据。
针对任一线程具体过程为:
线程锁抢占未处理状态、占用实例IP字段为空的分片信息。
若未抢占到可处理的分片信息,则注销线程。
若抢占到可处理的分片信息,则更新该分片状态为处理中,占用实例IP字段为本实例IP@线程编号,并处理该分片数据,分片数据处理完成后更新分片信息的处理状态。
进一步地,所述线程从所有分片信息中查找未被标记的分片信息之后,还包括:
若所有分片信息均已被标记,则所述业务节点注销所述线程。
具体实施过程中,循环执行上述过程直至没有可处理的分片数据,则注销该线程。
待上述创建的N个线程全部完成注销后,根据N个线程中是否存在处理错误,若无错误则更新实例任务R状态为成功;若存在错误,则更新实例任务R状态为失败,并存储线程抛出的错误信息。
进一步地,所述线程利用线程标识将所述分片信息进行标记之后,还包括:
所述线程判断所述分片信息对应的线程标识是否为所述线程的线程标识;
若是,则所述线程执行根据所述分片信息,从所述数据库中获取对应的待处理分片数据的步骤;
若否,则所述线程执行从所有分片信息中查找未被标记的分片信息的步骤。
具体实施过程中,实例P的线程n查询分片池中分片状态为未处理的分片数量K,不存在未处理的分片则注销线程,存在未处理的分片,则使用悲观锁查询并锁定1笔未处理的分片A,同时占用分片A,更新分片的状态为处理中,占用实例信息字段为实例P@线程n。同时为防止分片抢占中,多线程并发抢占导致查询返回的分片A被其他线程占用,导致分片A被重复处理,本发明设计上增加分片冲突检测机制,确保分片被唯一占用处理。
分片抢占冲突检测机制为:实例P的线程n抢占并更新分片A后,再次查询分片A的占用实例信息,占用实例信息与本实例P的线程n一致,则表示该分片A被实例P的线程n正确抢占,否则,表示在实例P的线程n查询并占用分片A的过程中,其他实例线程先行抢占,那么实例P的线程n在本次抢占用分片中返回空。
实例P的线程n抢占到分片A后,处理业务表中模值为A的数据记录,取模逻辑为:MOD(取模字段,1000)=分片A。处理完分片数据后循环抢占并处理剩余待处理的分片,直到无待处理的分片后结束线程。
进一步地,所述线程对所述分片数据进行处理之后,还包括:
业务节点按照设定频率向所述数据库发送心跳消息;
若所述数据库在设定时间内未接收到第一业务节点的心跳消息,则查询所述第一业务节点对应的分片信息,所述第一业务节点为所述业务系统中的任一业务节点;
若所述分片信息的进程标识与所述第一业务节点不对应,则所述数据库确定所述分片数据的分片信息的处理状态;
若所述分片信息的处理状态为处理失败,则发送告警指示;
若所述分片信息的处理状态为处理中,则将所述分片信息的处理状态改为未处理。
具体实施过程中,当实例P的n个线程抢占分片并处理过程中,实例P可能由于宕机或者程序逻辑错误导致分片数据处理失败,分片池中分片状态可能为处理中或处理失败,比如当机器故障导致宕机下,分片状态未及时更新为终态(成功或失败),导致状态为处理中;又如当应用程序逻辑异常时,分片状态为处理失败下。由于部分分片未处理成功,故任务整体未执行完成。
为了确认实例P中的分片数据是否处理失败,对于实例P设置存活性检测机制。存活性检测机制为:各实例定时(如1分钟)向集群中心(如数据库)报告心跳,超时未报告心跳,则由集群中心主动或被动询问实例P的进程ID信息,若抢占分片的实例P的进程ID不存在,或与该实例P的进程ID不一致,则确定实例P为失活。
在存活性检测为失活的实例P中,包括状态为处理中的分片,以及状态为处理失败的分片。对于状态为处理中的分片,可将其状态改为未处理,由其他实例自动抢占该分片并处理,完成分片任务数据的续作。
而对于状态为处理失败的分片,可以发送告警指示,本发明实施例中的分片调度算法也可以将该状态为处理失败的分片分配给其他实例调度执行,对于处理失败的分片可以等其它所有分片处理完成后,批量任务执行。为了更清楚地理解本发明,下面以具体实施例对上述流程的实现效果进行说明。
在某金融业务系统中以JAVA语言实现,并对某一批量任务进行了压测,压测资源参数如下:
应用实例:4个;
CPU:6核;
内存:15G;
JVM内存:Xmx=2048M;
批量A处理数据量:40万;
分片池单任务分片数量:1000。
从压测数据来看,在线程总数相同下,增加1个实例数,线程反比减少,批量执行耗时缩短近1倍,CPU使用率和负载也会一定程度降低,压测数据如表3所示。同时,在批量任务执行上,实现了应用层的横向扩展。
表3
实例数 | 每个实例线程数 | 批量耗时 | CPU使用率占比 | 负载 |
1 | 20 | 56 | 87% | 11 |
2 | 10 | 30 | 77% | 5 |
4 | 10 | 14 | 72% | 2 |
2 | 20 | 31 | 88% | 11 |
2 | 50 | 34 | 90% | 17 |
2 | 100 | 35 | 95% | 20 |
另外,以多实例抢占分片并处理的方案下,当某实例执行批量中宕机后,可以实现数据故障最小化,并通过后端管理台对故障分片数据进行续作,其他分片数据不受任何影响。
本发明实施例还提供了一种数据处理装置,应用于业务系统,所述业务系统包括数据库和至少2个业务节点,所述装置如图3所示,包括:
创建单元301,用于创建N个线程,其中N为大于1的整数;
查找单元302,用于针对所述业务节点的每一个线程,从所有分片信息中查找未被标记的分片信息,所述分片信息为将业务数据进行分片得到的分片数据对应的数据信息;
锁定单元303,用于锁定一个未被标记的分片信息并进行标记;
获取单元304,用于根据所述分片信息,从所述数据库中获取对应的分片数据;
处理单元305,用于对所述分片数据进行处理,并将处理完成后的分片数据存入所述数据库。
进一步地,所述锁定单元303,具体用于:
利用悲观锁锁定所述未被标记的分片信息;
利用线程标识将所述分片信息进行标记。
进一步地,所述锁定单元303,还用于:
判断所述分片信息对应的线程标识是否为所述线程的线程标识;
若是,则执行根据所述分片信息,从所述数据库中获取对应的待处理分片数据的步骤;
若否,则执行从所有分片信息中查找未被标记的分片信息的步骤。
进一步地,所述分片信息中包括对应的分片数据的处理状态;所述线程锁定一个未被标记的分片信息并进行标记之前,所述分片信息的处理状态为未处理;
所述锁定单元303,还用于:
在所述线程锁定一个未被标记的分片信息并进行标记之后,将所述待处理分片信息的处理状态改为处理中;
在所述线程对所述待处理分片数据进行处理,并将处理后的已处理分片数据存入所述数据库之后,将所述待处理分片信息的处理状态改为已处理。
进一步地,所述创建单元301,还用于:
若所有分片信息均已被标记,则注销所述线程。
基于相同的原理,本发明还提供一种电子设备,如图4所示,包括:
包括处理器401、存储器402、收发机403、总线接口404,其中处理器401、存储器402与收发机403之间通过总线接口404连接;
所述处理器401,用于读取所述存储器402中的程序,执行下列方法:
创建N个线程,其中N为大于1的整数;
针对所述业务节点的每一个线程,所述线程从所有分片信息中查找未被标记的分片信息,所述分片信息为将业务数据进行分片得到的分片数据对应的数据信息;
所述线程锁定一个未被标记的分片信息并进行标记;
所述线程根据所述分片信息,从所述数据库中获取对应的分片数据;
所述线程对所述分片数据进行处理,并将处理完成后的分片数据存入所述数据库。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (11)
1.一种数据处理方法,其特征在于,应用于业务系统,所述业务系统包括数据库和至少2个业务节点,所述方法包括:
业务节点创建N个线程,其中N为大于1的整数;
针对所述业务节点的每一个线程,所述线程从所有分片信息中查找未被标记的分片信息,所述分片信息为将业务数据进行分片得到的分片数据对应的数据信息;
所述线程锁定一个未被标记的分片信息并进行标记;
所述线程根据所述分片信息,从所述数据库中获取对应的分片数据;
所述线程对所述分片数据进行处理,并将处理完成后的分片数据存入所述数据库。
2.如权利要求1所述的方法,其特征在于,所述线程锁定一个未被标记的分片信息并进行标记,包括:
所述线程利用悲观锁锁定所述未被标记的分片信息;
所述线程利用线程标识将所述分片信息进行标记。
3.如权利要求2所述的方法,其特征在于,所述线程利用线程标识将所述分片信息进行标记之后,还包括:
所述线程判断所述分片信息对应的线程标识是否为所述线程的线程标识;
若是,则所述线程执行根据所述分片信息,从所述数据库中获取对应的待处理分片数据的步骤;
若否,则所述线程执行从所有分片信息中查找未被标记的分片信息的步骤。
4.如权利要求1所述的方法,其特征在于,所述分片信息中包括对应的分片数据的处理状态;所述线程锁定一个未被标记的分片信息并进行标记之前,所述分片信息的处理状态为未处理;
所述线程锁定一个未被标记的分片信息并进行标记之后,还包括:
所述线程将所述待处理分片信息的处理状态改为处理中;
所述线程对所述待处理分片数据进行处理,并将处理后的已处理分片数据存入所述数据库之后,还包括:
所述线程将所述待处理分片信息的处理状态改为已处理。
5.如权利要求1至4任一项所述的方法,其特征在于,所述线程从所有分片信息中查找未被标记的分片信息之后,还包括:
若所有分片信息均已被标记,则所述业务节点注销所述线程。
6.如权利要求1所述的方法,其特征在于,所述线程对所述分片数据进行处理之后,还包括:
业务节点按照设定频率向所述数据库发送心跳消息;
若所述数据库在设定时间内未接收到第一业务节点的心跳消息,则查询所述第一业务节点对应的分片信息,所述第一业务节点为所述业务系统中的任一业务节点;
若所述分片信息的进程标识与所述第一业务节点不对应,则所述数据库确定所述分片数据的分片信息的处理状态;
若所述分片信息的处理状态为处理失败,则发送告警指示;
若所述分片信息的处理状态为处理中,则将所述分片信息的处理状态改为未处理。
7.一种数据处理装置,其特征在于,应用于业务系统,所述业务系统包括数据库和至少2个业务节点,所述装置包括:
创建单元,用于创建N个线程,其中N为大于1的整数;
查找单元,用于针对所述业务节点的每一个线程,从所有分片信息中查找未被标记的分片信息,所述分片信息为将业务数据进行分片得到的分片数据对应的数据信息;
锁定单元,用于锁定一个未被标记的分片信息并进行标记;
获取单元,用于根据所述分片信息,从所述数据库中获取对应的分片数据;
处理单元,用于对所述分片数据进行处理,并将处理完成后的分片数据存入所述数据库。
8.如权利要求7所述的装置,其特征在于,所述锁定单元,具体用于:
利用悲观锁锁定所述未被标记的分片信息;
利用线程标识将所述分片信息进行标记。
9.如权利要求7所述的装置,其特征在于,所述处理单元,还用于:
若所述线程对所述分片数据处理失败,则确定所述分片数据的分片信息的处理状态;
若所述分片信息的处理状态为处理失败,则发送告警指示;
若所述分片信息的处理状态为处理中,则将所述分片信息的处理状态改为未处理。
10.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6任一所述的方法。
11.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1~6任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010607664.XA CN111752961A (zh) | 2020-06-29 | 2020-06-29 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010607664.XA CN111752961A (zh) | 2020-06-29 | 2020-06-29 | 一种数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752961A true CN111752961A (zh) | 2020-10-09 |
Family
ID=72678070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010607664.XA Pending CN111752961A (zh) | 2020-06-29 | 2020-06-29 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752961A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112541041A (zh) * | 2020-12-23 | 2021-03-23 | 平安普惠企业管理有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
CN113342886A (zh) * | 2021-06-23 | 2021-09-03 | 杭州数梦工场科技有限公司 | 数据交换方法和装置 |
CN113722099A (zh) * | 2021-09-01 | 2021-11-30 | 烽火通信科技股份有限公司 | 一种千万级数据分片处理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140304246A1 (en) * | 2013-04-03 | 2014-10-09 | Salesforce.Com, Inc. | Systems and methods for implementing bulk handling in asynchronous processing |
CN106980538A (zh) * | 2017-02-16 | 2017-07-25 | 平安科技(深圳)有限公司 | 数据处理的方法及装置 |
CN111145028A (zh) * | 2019-12-31 | 2020-05-12 | 中国银行股份有限公司 | 分布式文本预检方法和装置 |
-
2020
- 2020-06-29 CN CN202010607664.XA patent/CN111752961A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140304246A1 (en) * | 2013-04-03 | 2014-10-09 | Salesforce.Com, Inc. | Systems and methods for implementing bulk handling in asynchronous processing |
CN106980538A (zh) * | 2017-02-16 | 2017-07-25 | 平安科技(深圳)有限公司 | 数据处理的方法及装置 |
CN111145028A (zh) * | 2019-12-31 | 2020-05-12 | 中国银行股份有限公司 | 分布式文本预检方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112541041A (zh) * | 2020-12-23 | 2021-03-23 | 平安普惠企业管理有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
CN113342886A (zh) * | 2021-06-23 | 2021-09-03 | 杭州数梦工场科技有限公司 | 数据交换方法和装置 |
CN113722099A (zh) * | 2021-09-01 | 2021-11-30 | 烽火通信科技股份有限公司 | 一种千万级数据分片处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111752961A (zh) | 一种数据处理方法及装置 | |
CN108280150B (zh) | 一种分布式异步业务分发方法及系统 | |
CN112766907A (zh) | 业务数据的处理方法、装置和服务器 | |
CN104065636B (zh) | 数据处理方法和系统 | |
CN105373746B (zh) | 一种分布式数据处理方法和装置 | |
CN111988429A (zh) | 算法调度方法以及系统 | |
CN110231977B (zh) | 数据库的处理方法、装置、存储介质及电子装置 | |
CN113342839A (zh) | 数据处理方法、装置、终端设备和存储介质 | |
CN114253930A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111737274B (zh) | 交易数据的处理方法、装置和服务器 | |
CN113886419A (zh) | Sql语句处理方法、装置、计算机设备及存储介质 | |
CN112015563A (zh) | 消息队列切换方法、装置、电子设备及存储介质 | |
CN116151631A (zh) | 一种业务决策处理系统、一种业务决策处理方法和装置 | |
CN115168509A (zh) | 风控数据的处理方法及装置、存储介质、计算机设备 | |
US11144383B2 (en) | Platform for automated administration and monitoring of in-memory systems | |
CN115168384A (zh) | 数据一致性处理方法、装置、服务器及存储介质 | |
CN114691781A (zh) | 一种数据同步方法、系统、装置、设备及介质 | |
CN106055322A (zh) | 一种流程调度方法及装置 | |
CN112181825A (zh) | 测试案例库构建方法、装置、电子设备及介质 | |
CN111538491A (zh) | 数据事件处理方法、装置、设备和存储介质 | |
CN115756768B (zh) | 基于saga的分布式事务处理方法、装置、设备及介质 | |
CN116719628B (zh) | 一种并发任务抢占式调度方法、系统及介质 | |
CN114268540B (zh) | 规则引擎的优化方法、装置及设备 | |
CN113296966B (zh) | 数据处理方法及装置 | |
CN111949407B (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 |