CN109710690B - 一种业务驱动计算方法及系统 - Google Patents
一种业务驱动计算方法及系统 Download PDFInfo
- Publication number
- CN109710690B CN109710690B CN201811454514.9A CN201811454514A CN109710690B CN 109710690 B CN109710690 B CN 109710690B CN 201811454514 A CN201811454514 A CN 201811454514A CN 109710690 B CN109710690 B CN 109710690B
- Authority
- CN
- China
- Prior art keywords
- data
- processing
- service
- processed
- thread
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种业务驱动计算方法及系统,方法包括:S1、根据业务逻辑增、删、改生产区业务数据表中的记录;S2、在业务数据确认变更点调用异步守候线程,写业务操作日志记录,在业务操作日志表中记录业务数据ID,并设置处理状态为未处理,形成待处理任务队列数据;S3、判断异步守候线程是否被占用,若未占用则启动数据计算程序对待处理任务队列数据进行从生产区到查询区的计算处理,若被占用则判断线程占用时间是否超过设定阈值,若超过则启动自修复程序,解除线程被占用状态。本发明所提供的方法及系统,在系统业务功能操作时,通过异步守候线程统一调度数据同步计算程序,达到不影响系统性能前提下,保证系统的生产区和查询区数据准实时一致。
Description
技术领域
本发明涉及数据同步处理领域,具体涉及一种业务驱动计算方法及系统。
背景技术
随着大数据技术深入发展,单纯的OLTP应用或OLAP应用都不能够满足管理系统的需要,为提升交易和查询两方面的体验,ERP系统数据库在逻辑上往往分为生产区和查询区,通过一种有效的方法保障生产库和查询库的数据一致性。但传统数据计算不能同时解决两个问题:一个是查询需要提前对数据进行必要的清洗、转换和汇总,同步实时性不高,往往需要数十秒以上;另一个是查询区数据完整性不能保障,比如主表同步了但明细表没有同步,影响用户查询体验。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种业务驱动计算方法及系统,通过该方法及系统能够在系统功能操作过程中异步驱动数据计算,达到不影响系统性能前提下,保证系统的生产区和查询区数据准实时一致。
为实现上述目的,本发明采用的技术方案如下:
一种业务驱动计算方法,包括:
S1、根据业务逻辑增、删、改生产区业务数据表中的记录;
S2、在业务数据确认变更点调用异步守候线程,写业务操作日志记录,在所述业务操作日志表中记录业务数据ID,并设置处理状态为未处理,形成待处理任务队列数据;
S3、判断所述异步守候线程是否被占用,若未占用则启动数据计算程序对所述待处理任务队列数据进行从生产区到查询区的计算处理,若被占用则判断线程占用时间是否超过设定阈值,若超过则启动自修复程序,解除线程被占用状态。
进一步,如上所述的一种业务驱动计算方法,步骤S3中,启动数据计算程序对所述待处理任务队列数据进行从生产区到查询区的计算处理包括:
A1、设置线程争用标识,占用所述异步守候线程;
A2、循环处理所述业务操作日志表中的待处理任务队列数据;
A3、当所有待处理任务队列数据处理完成后,本次数据同步结束,更新线程争用标识,解除线程被占用状态。
进一步,如上所述的一种业务驱动计算方法,步骤A2包括:
A21、更新所述业务操作日志表,设置当前待处理任务队列数据的处理状态为处理中,处理开始时间为当前时间;
A22、根据业务数据ID,执行当前待处理任务队列数据从生产区到查询区的计算处理;
A23、当前待处理任务队列数据计算处理完成后,再次更新所述业务操作日志表,设置处理状态为成功处理,处理结束时间为当前时间,重新执行步骤A21,循环执行A21-A23,直至所述业务操作日志表中的所有待处理任务队列数据处理完毕。
进一步,如上所述的一种业务驱动计算方法,步骤S3之前,还包括:根据所述数据计算程序进行计算处理的时间复杂度以及所述业务操作日志表中待处理任务队列数据的数据量,设置所述异步守候线程合理占用的时间阈值,即设定阈值。
进一步,如上所述的一种业务驱动计算方法,所述生产区为主数据库,所述查询区为从数据库。
一种业务驱动计算系统,包括:
第一记录模块,用于根据业务逻辑增、删、改生产区业务数据表中的记录;
第二记录模块,用于在业务数据确认变更点调用异步守候线程,写业务操作日志记录,在所述业务操作日志表中记录业务数据ID,并设置处理状态为未处理,形成待处理任务队列数据;
计算处理模块,用于判断所述异步守候线程是否被占用,若未占用则启动数据计算程序对所述待处理任务队列数据进行从生产区到查询区的计算处理,若被占用则判断线程占用时间是否超过设定阈值,若超过则启动自修复程序,解除线程被占用状态。
进一步,如上所述的一种业务驱动计算系统,所述计算处理模块包括:
设置子模块,用于设置线程争用标识,占用所述异步守候线程;
循环处理子模块,用于循环处理所述业务操作日志表中的待处理任务队列数据;
更新子模块,用于当所有待处理任务队列数据处理完成后,本次数据同步结束,更新线程争用标识,解除线程被占用状态。
进一步,如上所述的一种业务驱动计算系统,所述循环处理子模块具体用于:
更新所述业务操作日志表,设置当前待处理任务队列数据的处理状态为处理中,处理开始时间为当前时间;
根据业务数据ID,执行当前待处理任务队列数据从生产区到查询区的计算处理;
当前待处理任务队列数据计算处理完成后,再次更新所述业务操作日志表,设置处理状态为成功处理,处理结束时间为当前时间。
进一步,如上所述的一种业务驱动计算系统,还包括:阈值设置模块,用于根据所述数据计算程序进行计算处理的时间复杂度以及所述业务操作日志表中待处理任务队列数据的数据量,设置所述异步守候线程合理占用的时间阈值,即设定阈值。
进一步,如上所述的一种业务驱动计算系统,所述生产区为主数据库,所述查询区为从数据库。
本发明的有益效果在于:本发明所提供的方法及系统,在系统业务功能操作时,通过异步守候线程来统一调度数据同步计算程序,一方面所有的业务操作都会实时触发数据计算程序,另一方面,在系统高并发的场景下,确保只有一个线程在执行数据计算,避免系统资源被数据计算程序大量占用。
附图说明
图1为本发明实施例中提供的一种业务驱动计算方法的流程示意图;
图2为本发明实施例中提供的一种业务驱动计算方法的分步骤流程示意图;
图3为本发明实施例中提供的异步驱动数据同步框架图;
图4为本发明实施例中提供的执行数据计算程序的流程示意图;
图5为本发明实施例中提供的一种业务驱动计算系统的结构示意图。
具体实施方式
下面结合说明书附图与具体实施方式对本发明做进一步的详细说明。
如图1所示,一种业务驱动计算方法,包括:
S1、根据业务逻辑增、删、改生产区业务数据表中的记录;
S2、在业务数据确认变更点调用异步守候线程,写业务操作日志记录,在业务操作日志表中记录业务数据ID,并设置处理状态为未处理,形成待处理任务队列数据;
S3、判断异步守候线程是否被占用,若未占用则启动数据计算程序对待处理任务队列数据进行从生产区到查询区的计算处理,若被占用则判断线程占用时间是否超过设定阈值,若超过则启动自修复程序,解除线程被占用状态。
如图2所示,步骤S3中,启动数据计算程序对待处理任务队列数据进行从生产区到查询区的计算处理包括:
A1、设置线程争用标识,占用异步守候线程;
A2、循环处理业务操作日志表中的待处理任务队列数据;
A3、当所有待处理任务队列数据处理完成后,本次数据同步结束,更新线程争用标识,解除线程被占用状态。
步骤A2包括:
A21、更新业务操作日志表,设置当前待处理任务队列数据的处理状态为处理中,处理开始时间为当前时间;
A22、根据业务数据ID,执行当前待处理任务队列数据从生产区到查询区的计算处理;
A23、当前待处理任务队列数据计算处理完成后,再次更新业务操作日志表,设置处理状态为成功处理,处理结束时间为当前时间,重新执行步骤A21,循环执行A21-A23,直至业务操作日志表中的所有待处理任务队列数据处理完毕。
步骤S3之前,还包括:根据数据计算程序进行计算处理的时间复杂度以及业务操作日志表中待处理任务队列数据的数据量,设置异步守候线程合理占用的时间阈值,即设定阈值。
生产区为主数据库,查询区为从数据库。
图3提供一种业务驱动数据计算方法的异步驱动数据同步框架图,包括:
步骤1写生产区业务数据。业务操作功能按业务逻辑增、删、改业务数据表中记录。
步骤2写业务操作日志记录。在日志表中插入一条日志记录,日志记录包含业务数据唯一标识、处理状态等信息,日志表结构参见下表。
步骤3执行数据计算程序,详细流程参见图4。
步骤3.1守候线程未被争用,根据日志记录进行数据计算,日志表作用相当于队列,按照写入的顺序依次处理;
步骤3.2守候进程被异常争用,启动自修复程序,修复后再根据日志记录进行数据同步计算处理;
步骤3.3守候进程处于正常争用,正常退出程序。
图4提供一种业务驱动数据计算方法的执行数据计算程序的流程示意图,包括:
启动数据计算程序对待处理队列数据进行计算处理。通过守候线程争用标识支持高并发,启动数据计算程序时,首先通过争用标识判断守候线程是否被占用,如果没有占用,执行步骤3.1。
步骤3.1根据日志队列执行数据计算。
步骤3.1.1设置线程争用标识。开始数据计算时,首先设置争用标识,占用守候线程,避免业务操作并发时,造成数据完整性冲突。
步骤3.1.2循环处理日志队列中的待处理记录。
1)更新日志表,设置当前待处理数据的处理状态op_state=1,处理开始时间op_start_time为当前时间。
2)根据业务数据唯一标识ID,执行数据从生产区到查询区的计算处理。
3)当前待处理数据计算处理完成后,再次更新日志表,设置处理状态op_state=2,处理结束时间op_end_time为当前时间。
步骤3.1.3解除线程被占用状态。当日志队列中日志记录处理完后,本次数据同步结束,更新线程争用标识,解除守候线程被占用状态。
从实际情况来看,守候线程被占用有两种情况。其一,守候线程正在正常执行数据计算;其二,因系统异常,例如系统异常宕机,造成数据计算线程突然中断,线程争用标识未复位,被占用状态不能解除。针对这两种情况,本发明设计自修复程序,根据业务系统实际情况,设置守候线程合理占用时间阈值,如:30分钟,在判断守候线程被占用时,再次判断线程被占用时长是否超过设定阈值,如果未超过阈值,说明为正常占用,不做任何处理,如果超过阈值,说明为异常占用,启动自修复程序,步骤3.2。
步骤3.2复位争用标识,解除线程被占用状态,然后重新启动步骤3.1,执行数据计算程序。
本发明采用一种类似数据库日志管理机制,通过异步守候线程,保存业务操作日志,根据日志信息驱动数据计算程序,在保证不影响最终用户操作体验的前提下完成数据从生产区到查询区的计算处理。该方法在北京大数元科技发展有限公司-地方政府债务管理系统、地方全口径债务监测平台系统中得到成功应用,在1000并发下,单条业务数据处理时间0.01秒,所有查询功能性能能够达到1秒以内。
如图5所示,一种业务驱动计算系统,包括:
第一记录模块1,用于根据业务逻辑增、删、改生产区业务数据表中的记录;
第二记录模块2,用于在业务数据确认变更点调用异步守候线程,写业务操作日志记录,在业务操作日志表中记录业务数据ID,并设置处理状态为未处理,形成待处理任务队列数据;
计算处理模块3,用于判断异步守候线程是否被占用,若未占用则启动数据计算程序对待处理任务队列数据进行从生产区到查询区的计算处理,若被占用则判断线程占用时间是否超过设定阈值,若超过则启动自修复程序,解除线程被占用状态。
计算处理模块3包括:
设置子模块31,用于设置线程争用标识,占用异步守候线程;
循环处理子模块32,用于循环处理业务操作日志表中的待处理任务队列数据;
更新子模块33,用于当所有待处理任务队列数据处理完成后,本次数据同步结束,更新线程争用标识,解除线程被占用状态。
循环处理子模块32具体用于:
更新业务操作日志表,设置当前待处理任务队列数据的处理状态为处理中,处理开始时间为当前时间;
根据业务数据ID,执行当前待处理任务队列数据从生产区到查询区的计算处理;
当前待处理任务队列数据计算处理完成后,再次更新业务操作日志表,设置处理状态为成功处理,处理结束时间为当前时间。
本系统还包括:阈值设置模块,用于根据数据计算程序进行计算处理的时间复杂度以及业务操作日志表中待处理任务队列数据的数据量,设置异步守候线程合理占用的时间阈值,即设定阈值。
生产区为主数据库,查询区为从数据库。
本发明提供的一种业务驱动计算方法及系统,与现有技术相比,具有如下有益效果:
1、业务驱动数据计算程序,以单笔业务作为最小同步单元,完成数据从生产区到查询区的同步计算处理,保障准实时和完整性。
2、设置争用标识,避免系统资源被程序大量占用,带有自修复程序,避免数据计算程序异常争用情况。
本发明主要应用于ERP系统领域,提供的一种业务驱动计算方法及系统,在ERP业务系统功能操作过程中异步驱动数据计算,达到不影响系统性能前提下,保证ERP系统的生产区和查询区数据准实时一致。
背景技术中的术语解释
OLTP:On-Line Transaction Processing联机事务处理过程(OLTP),也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。
OLAP:自20世纪80年代开始,许多企业利用关系型数据库来存储和管理业务数据,并建立相应的应用系统来支持日常的业务运作。这种应用以支持业务处理为主要目的,被称为联机事务处理(Online Transaction Processing,OLTP)应用。
读写分离:读写分离(Read/Write Splitting),让主数据库(master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库(slave)处理SELECT查询操作。本发明中生产区为主数据库,查询区为从数据库,引入类似数据库日志处理机制,通过异步守候线程装置驱动数据同步及计算,实现生产区和查询区数据准实时一致。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (6)
1.一种业务驱动计算方法,其特征在于,包括:
S1、根据业务逻辑增、删、改生产区业务数据表中的记录;
S2、在业务数据确认变更点调用异步守候线程,写业务操作日志记录,在所述业务操作日志表中记录业务数据ID,并设置处理状态为未处理,形成待处理任务队列数据;
S3、判断所述异步守候线程是否被占用,若未占用则启动数据计算程序对所述待处理任务队列数据进行从生产区到查询区的计算处理,若被占用则判断线程占用时间是否超过设定阈值,若超过则启动自修复程序,解除线程被占用状态,所述生产区为主数据库,所述查询区为从数据库;
步骤S3中,启动数据计算程序对所述待处理任务队列数据进行从生产区到查询区的计算处理包括:
A1、设置线程争用标识,占用所述异步守候线程;
A2、循环处理所述业务操作日志表中的待处理任务队列数据;
A3、当所有待处理任务队列数据处理完成后,本次数据同步结束,更新线程争用标识,解除线程被占用状态。
2.根据权利要求1所述的一种业务驱动计算方法,其特征在于,步骤A2包括:
A21、更新所述业务操作日志表,设置当前待处理任务队列数据的处理状态为处理中,处理开始时间为当前时间;
A22、根据业务数据ID,执行当前待处理任务队列数据从生产区到查询区的计算处理;
A23、当前待处理任务队列数据计算处理完成后,再次更新所述业务操作日志表,设置处理状态为成功处理,处理结束时间为当前时间,重新执行步骤A21,循环执行A21-A23,直至所述业务操作日志表中的所有待处理任务队列数据处理完毕。
3.根据权利要求1所述的一种业务驱动计算方法,其特征在于,步骤S3之前,还包括:根据所述数据计算程序进行计算处理的时间复杂度以及所述业务操作日志表中待处理任务队列数据的数据量,设置所述异步守候线程合理占用的时间阈值,即设定阈值。
4.一种业务驱动计算系统,其特征在于,包括:
第一记录模块,用于根据业务逻辑增、删、改生产区业务数据表中的记录;
第二记录模块,用于在业务数据确认变更点调用异步守候线程,写业务操作日志记录,在所述业务操作日志表中记录业务数据ID,并设置处理状态为未处理,形成待处理任务队列数据;
计算处理模块,用于判断所述异步守候线程是否被占用,若未占用则启动数据计算程序对所述待处理任务队列数据进行从生产区到查询区的计算处理,若被占用则判断线程占用时间是否超过设定阈值,若超过则启动自修复程序,解除线程被占用状态,所述生产区为主数据库,所述查询区为从数据库;
所述计算处理模块包括:
设置子模块,用于设置线程争用标识,占用所述异步守候线程;
循环处理子模块,用于循环处理所述业务操作日志表中的待处理任务队列数据;
更新子模块,用于当所有待处理任务队列数据处理完成后,本次数据同步结束,更新线程争用标识,解除线程被占用状态。
5.根据权利要求4所述的一种业务驱动计算系统,其特征在于,所述循环处理子模块具体用于:
更新所述业务操作日志表,设置当前待处理任务队列数据的处理状态为处理中,处理开始时间为当前时间;
根据业务数据ID,执行当前待处理任务队列数据从生产区到查询区的计算处理;
当前待处理任务队列数据计算处理完成后,再次更新所述业务操作日志表,设置处理状态为成功处理,处理结束时间为当前时间。
6.根据权利要求4所述的一种业务驱动计算系统,其特征在于,还包括:阈值设置模块,用于根据所述数据计算程序进行计算处理的时间复杂度以及所述业务操作日志表中待处理任务队列数据的数据量,设置所述异步守候线程合理占用的时间阈值,即设定阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811454514.9A CN109710690B (zh) | 2018-11-30 | 2018-11-30 | 一种业务驱动计算方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811454514.9A CN109710690B (zh) | 2018-11-30 | 2018-11-30 | 一种业务驱动计算方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710690A CN109710690A (zh) | 2019-05-03 |
CN109710690B true CN109710690B (zh) | 2020-09-01 |
Family
ID=66255449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811454514.9A Active CN109710690B (zh) | 2018-11-30 | 2018-11-30 | 一种业务驱动计算方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710690B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4612715B2 (ja) * | 2008-09-05 | 2011-01-12 | 株式会社日立製作所 | 情報処理システム、データ更新方法およびデータ更新プログラム |
CN104156361B (zh) * | 2013-05-13 | 2017-11-17 | 阿里巴巴集团控股有限公司 | 一种实现数据同步的方法及系统 |
CN106960007A (zh) * | 2017-02-28 | 2017-07-18 | 北京京东尚科信息技术有限公司 | 一种数据更新方法、装置及电子设备 |
CN107729366B (zh) * | 2017-09-08 | 2021-01-05 | 广东省建设信息中心 | 一种普适多源异构大规模数据同步系统 |
CN107766205B (zh) * | 2017-10-10 | 2019-11-22 | 武汉大学 | 一种面向微服务调用过程跟踪的监控系统及方法 |
-
2018
- 2018-11-30 CN CN201811454514.9A patent/CN109710690B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109710690A (zh) | 2019-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11176171B2 (en) | Controlling a multi-database system | |
CN106776855B (zh) | 基于Spark Streaming读取Kafka数据的处理方法 | |
CN102073540B (zh) | 分布式事务提交方法和装置 | |
US7991745B2 (en) | Database log capture that publishes transactions to multiple targets to handle unavailable targets by separating the publishing of subscriptions and subsequently recombining the publishing | |
US20100005097A1 (en) | Capturing and restoring database session state | |
US7330860B2 (en) | Fault tolerant mechanism to handle initial load of replicated object in live system | |
US20220300483A1 (en) | Snapshot isolation query transactions in distributed systems | |
CN115994053A (zh) | 数据库备机的并行回放方法、装置、电子设备及介质 | |
US12079205B2 (en) | Snapshot isolation query transactions in distributed systems | |
CN114860846A (zh) | 数据处理方法、装置及电子设备 | |
CN106874343B (zh) | 一种时序数据库的数据删除方法及系统 | |
CN113256355B (zh) | 一种积分权益实时确定方法、装置、介质、设备和系统 | |
CN109710690B (zh) | 一种业务驱动计算方法及系统 | |
CN115687491A (zh) | 一种基于关系型数据库的数据分析任务调度系统 | |
CN107958414B (zh) | 一种清除cics系统长交易的方法及系统 | |
CN112527497B (zh) | 一种序列化多线程数据处理系统 | |
CN112540875B (zh) | 一种基于xtrabackup的mysql数据库备份、恢复校验可用性的方法 | |
CN115437766A (zh) | 一种任务处理方法和装置 | |
CN112860376A (zh) | 一种快照链的制作方法、装置、电子设备及存储介质 | |
CN116821250B (zh) | 一种分布式图数据处理方法和系统 | |
CN118113759A (zh) | 一种分布式数据库的事务执行方法、电子设备及存储介质 | |
CN118796502A (zh) | 分布式任务调度系统、方法、设备、介质及产品 | |
CN116954836A (zh) | 任务处理方法及任务处理系统 | |
CN117762692A (zh) | 一种数据库异常数据处理方法及系统 | |
CN116089442A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |