CN115544034A - 一种数据一致性方法及业务系统 - Google Patents
一种数据一致性方法及业务系统 Download PDFInfo
- Publication number
- CN115544034A CN115544034A CN202211123490.5A CN202211123490A CN115544034A CN 115544034 A CN115544034 A CN 115544034A CN 202211123490 A CN202211123490 A CN 202211123490A CN 115544034 A CN115544034 A CN 115544034A
- Authority
- CN
- China
- Prior art keywords
- service
- data
- target
- service system
- sending
- 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 57
- 230000005540 biological transmission Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 24
- 238000012552 review Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims 2
- 238000011144 upstream manufacturing Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 4
- 230000026676 system process Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000009530 blood pressure measurement Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003287 optical effect Effects 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
- 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/2365—Ensuring data consistency and integrity
-
- 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)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种数据一致性方法及业务系统,业务系统包括第一业务系统和第二业务系统。第一业务系统在向第二业务系统发送数据失败后,基于数据发送失败的情况对数据进行相应处理后重新尝试发送至第二业务系统,且可进行多次重复尝试,目的是通过多次重复尝试将数据成功发送至第二业务系统,从而实现第一业务系统和第二业务系统的数据一致性。
Description
技术领域
本申请涉及数据传输领域,尤其涉及一种数据一致性方法及业务系统。
背景技术
业务系统包括上游业务系统和下游业务系统,上游业务系统和下游业务系统需要保证数据一致性。目前,上游业务系统和下游业务系统保证数据一致性的方法为:上游业务系统通过调用下游业务系统的接口向下游业务系统传输数据,以保证二者数据一致性。但是,上游业务系统在调用下游业务系统接口的过程中,可能会出现调用失败的情况,则数据传输失败,导致上游业务系统和下游业务系统间数据不一致。
发明内容
本申请的目的是提供一种数据一致性方法及业务系统,第一业务系统在向第二业务系统发送数据失败后,基于数据发送失败的情况对数据进行相应处理后重新尝试发送至第二业务系统,且可进行多次重复尝试,目的是通过多次重复尝试将数据成功发送至第二业务系统,从而实现第一业务系统和第二业务系统的数据一致性。
为解决上述技术问题,本申请提供了一种数据一致性方法,应用于第一业务系统,包括:
对每个业务进行处理,得到每个所述业务的业务数据,并基于预设的业务概要中每个字段的含义,得到每个已处理完成的所述业务的业务概要数据;其中,所述字段包括业务信息字段、错误信息字段、发送失败次数字段、发送标志字段;
定期扫描每个已处理完成的所述业务的业务概要数据,基于目标业务的目标业务概要数据中的目标发送标志,确认所述目标业务对应的发送状态;其中,所述目标业务为任一已处理完成的所述业务;
若所述发送状态为未处理状态,且所述目标业务的目标业务数据为本周期待发送数据,则将所述目标业务数据发送至第二业务系统;若所述发送状态为发送失败状态、所述目标业务概要数据中的目标发送失败次数小于预设次数,且所述目标业务数据为本周期待发送数据,则基于所述目标业务概要数据中的目标错误信息对所述目标业务数据进行相应处理后发送至所述第二业务系统;
在向所述第二业务系统发送所述目标业务数据后,若在预设时间内未接收到所述第二业务系统针对所述目标业务数据返回的接收成功消息,则基于所述目标业务数据的发送失败情况更新所述目标错误信息,将所述目标发送失败次数加1,将所述目标发送标志的标志值更新为表征所述发送失败状态的标志值,并等待下一周期的扫描操作,以使所述目标业务数据成功发送至所述第二业务系统。
可选地,所述第一业务系统包括包含多个并发线程的线程池;多个所述并发线程用于向所述第二业务系统并行发送本周期待发送的多个所述业务的业务数据;
所述目标业务的目标业务数据是否为本周期待发送数据的判定过程,包括:
从本周期扫描的第一业务和第二业务中选择出M个第三业务;其中;所述第一业务对应的发送状态为所述未处理状态;所述第二业务对应的发送状态为所述发送失败状态,且所述第二业务的业务概要数据中的发送失败次数小于所述预设次数;M≤N×所述线程池中并发线程的总数量;N表示每个所述并发线程在每个周期最多发送N个所述业务的业务数据;
判断所述目标业务是否属于本周期所选择出的所述第三业务;
若是,则判定所述目标业务的目标业务数据是本周期待发送数据;
若否,则判定所述目标业务的目标业务数据不是本周期待发送数据。
可选地,所述字段还包括占号值字段;所述数据一致性方法还包括:
在所述目标业务分配至某一所述并发线程时,基于预设占号值生成规则为所述目标业务生成新占号值,并基于生成的所述新占号值更新所述目标业务概要数据中的目标占号值;其中,对应所述新占号值的所述目标业务不能再被分配至其它所述并发线程;
若在所述预设时间内未接收到所述第二业务系统针对所述目标业务数据返回的接收成功消息,则将所述目标占号值恢复至初始占号值。
可选地,所述基于所述目标业务数据的发送失败情况更新所述目标错误信息,包括:
若在所述预设时间内未接收到所述第二业务系统针对所述目标业务数据返回的消息,则将所述目标错误信息更新为表征系统超时的错误信息;若在所述预设时间内接收到所述第二业务系统针对所述目标业务数据返回的校验失败消息,则将所述目标错误信息更新为表征所述第二业务系统对所述目标业务数据校验不通过的错误信息;
所述基于所述目标业务概要数据中的目标错误信息对所述目标业务数据进行相应处理后发送至所述第二业务系统,包括:
若所述目标错误信息为表征系统超时的错误信息,则将所述目标业务数据重新组织成第一报文,并将所述第一报文发送至所述第二业务系统;
若所述目标错误信息为表征所述第二业务系统对所述目标业务数据校验不通过的错误信息,则修改所述目标业务数据,并将修改后的所述目标业务数据组织成第二报文,以将所述第二报文发送至所述第二业务系统。
可选地,所述数据一致性方法还包括:
将每个所述业务的业务数据存入数据库的业务表中,以从所述业务表中获取每个所述业务的业务数据;
将每个已处理完成的所述业务的业务概要数据存入所述数据库的接口表中,以从所述接口表中定期扫描每个已处理完成的所述业务的业务概要数据。
可选地,所述数据一致性方法还包括:
在向所述第二业务系统发送所述目标业务数据后,若在所述预设时间内接收到所述第二业务系统针对所述目标业务数据返回的接收成功消息,则将所述目标发送标志的标志值更新为表征所述目标业务数据成功发送至所述第二业务系统的标志值。
可选地,所述第一业务系统上设有消息回查接口,所述第二业务系统通过调用所述消息回查接口查询所述第一业务系统上的数据。
可选地,所述第二业务系统具备接口幂等性;所述数据一致性方法还包括:
若接收到所述第二业务系统针对所述目标业务数据返回的重复接收消息,则将所述目标错误信息更新为表征所述第二业务系统重复接收所述目标业务数据的错误信息,并停止向所述第二业务系统发送所述目标业务数据。
可选地,所述数据一致性方法还包括:
向第三方系统发送待对账数据,以使所述第三方系统将所述第一业务系统发送的待对账数据与所述第二业务系统发送的待对账数据进行数据比对;
若接收到所述第三方系统返回的表征所述第二业务系统数据缺失的消息,则向所述第二业务系统补传其缺失的数据;
若接收到所述第三方系统返回的表征所述第一业务系统与所述第二业务系统的数据不一致的消息,则向所述第二业务系统重传比对结果不一致的数据。
为解决上述技术问题,本申请还提供了一种业务系统,包括第一业务系统和第二业务系统;其中,所述第一业务系统在执行自身存储的计算机程序时实现上述任一种数据一致性方法的步骤。
本申请提供了一种数据一致性方法,第一业务系统对每个业务进行处理,得到每个业务的业务数据,并基于预设的业务概要中每个字段的含义,得到每个已处理完成的业务的业务概要数据;定期扫描每个已处理完成的业务的业务概要数据,基于目标业务的目标业务概要数据中的目标发送标志,确认目标业务对应的发送状态;若发送状态为未处理状态,且目标业务的目标业务数据为本周期待发送数据,则将目标业务数据发送至第二业务系统;若发送状态为发送失败状态、目标业务概要数据中的目标发送失败次数小于预设次数,且目标业务数据为本周期待发送数据,则基于目标业务概要数据中的目标错误信息对目标业务数据进行相应处理后发送至第二业务系统;在向第二业务系统发送目标业务数据后,若在预设时间内未接收到第二业务系统针对目标业务数据返回的接收成功消息,则基于目标业务数据的发送失败情况更新目标错误信息,将目标发送失败次数加1,将目标发送标志的标志值更新为表征发送失败状态的标志值,并等待下一周期的扫描操作,以使目标业务数据成功发送至第二业务系统。可见,第一业务系统在向第二业务系统发送数据失败后,基于数据发送失败的情况对数据进行相应处理后重新尝试发送至第二业务系统,且可进行多次重复尝试,目的是通过多次重复尝试将数据成功发送至第二业务系统,从而实现第一业务系统和第二业务系统的数据一致性。
本申请还提供了一种业务系统,与上述数据一致性方法具有相同的有益效果。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种业务系统的结构示意图;
图2为本申请实施例提供的一种数据一致性方法的流程图;
图3为本申请实施例提供的一种业务系统的工作环节示意图。
具体实施方式
本申请的核心是提供一种数据一致性方法及业务系统,第一业务系统在向第二业务系统发送数据失败后,基于数据发送失败的情况对数据进行相应处理后重新尝试发送至第二业务系统,且可进行多次重复尝试,目的是通过多次重复尝试将数据成功发送至第二业务系统,从而实现第一业务系统和第二业务系统的数据一致性。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参照图1,图1为本申请实施例提供的一种业务系统的结构示意图。业务系统包括第一业务系统(上游业务系统)和第二业务系统(下游业务系统,上、下游业务系统之间基本解耦,下游业务系统一般不会影响上游业务系统的业务流程),第一业务系统和第二业务系统需要保证数据一致性(比如,在保险业务中,常见的上游业务系统为出单系统,下游业务系统为收付费系统,上游出单系统用于生成保单,并将保单数据发送至下游收付费系统处理)。现有方案中,第一业务系统和第二业务系统保证数据一致性的方法为:第一业务系统通过调用第二业务系统的接口向第二业务系统传输数据,以保证二者数据一致性。但是,第一业务系统在调用第二业务系统接口的过程中,可能会出现调用失败的情况,则数据传输失败,导致第一业务系统和第二业务系统间数据不一致。
为解决上述技术问题,本申请提供了一种新的数据一致性方法,此数据一致性方法由第一业务系统执行。请参照图2,图2为本申请实施例提供的一种数据一致性方法的流程图。该数据一致性方法包括:
步骤S101:对每个业务进行处理,得到每个业务的业务数据,并基于预设的业务概要中每个字段的含义,得到每个已处理完成的业务的业务概要数据。
本申请实施例中,预设的业务概要中包含的字段可包括但不仅限于业务信息字段、错误信息字段、发送失败次数字段(SendCounts)、发送标志字段(SendFlag);其中,业务信息字段可以包括业务号(BusinessNo)和业务类型(BusinessType);错误信息字段可以包括错误代码(ErrorCode,第一业务系统和第二业务系统协商一致即可)和错误描述(ErrorMessage,可自定义错误信息的错误描述);发送标志字段可对应三个标志值0、1、2,0表示未处理,1表示发送成功,2表示发送失败(错误信息字段用于填写导致发送失败的错误情况)。
具体应用中,第一业务系统对每个业务进行处理,得到每个业务的业务数据,并基于预设的业务概要中每个字段的含义,得到每个已处理完成的业务的业务概要数据(包含业务对应的业务信息、错误信息、发送失败次数、发送标志等)。
步骤S102:定期扫描每个已处理完成的业务的业务概要数据,基于目标业务的目标业务概要数据中的目标发送标志,确认目标业务对应的发送状态。
本申请实施例中,目标业务为第一业务系统处理的业务中任一已处理完成的业务;目标业务概要数据为目标业务的业务概要数据。
具体应用中,第一业务系统定期扫描每个已处理完成的业务的业务概要数据(扫描的周期可配置,写在配置文件或配置中心中,可根据实际情况做调整),具体可通过设置定时任务周期性地扫描每个已处理完成的业务的业务概要数据。
第一业务系统在每个周期下,均基于目标业务的目标业务概要数据中的发送标志(称为目标发送标志),确认每个周期下目标业务对应的发送状态。比如,目标业务的目标业务概要数据中的目标发送标志对应三个标志值0(表示未处理)、1(表示发送成功)、2(表示发送失败),若在本周期下目标发送标志的标志值为0,则确认本周期下目标业务对应的发送状态为未处理状态;若在本周期下目标发送标志的标志值为1,则确认本周期下目标业务对应的发送状态为发送成功状态;若在本周期下目标发送标志的标志值为2,则确认本周期下目标业务对应的发送状态为发送失败状态。需要说明的是,目标发送标志的初始标志值为表征未处理的标志值(SendFlag=0)。
步骤S103:若发送状态为未处理状态,且目标业务的目标业务数据为本周期待发送数据,则将目标业务数据发送至第二业务系统;若发送状态为发送失败状态、目标业务概要数据中的目标发送失败次数小于预设次数,且目标业务数据为本周期待发送数据,则基于目标业务概要数据中的目标错误信息对目标业务数据进行相应处理后发送至第二业务系统。
具体应用中,第一业务系统在确认本周期下目标业务对应的发送状态为未处理状态时(SendFlag=0),判断目标业务的业务数据(称为目标业务数据)是否为本周期待发送数据,若为本周期待发送数据,则将目标业务的目标业务数据发送至第二业务系统(具体可将目标业务数据组织成报文发送,第二业务系统在大并发情况下,必须尽快返回第一业务系统结果,否则有可能被第一业务系统压死或拖死第一业务系统,建议第二业务系统在收到业务数据后只做简单校验便返回结果,具体而言,第二业务系统在接收到目标业务数据之后,对目标业务数据进行校验,若校验成功,则向第一业务系统返回针对目标业务数据的接收成功消息);若不为本周期待发送数据,则暂时不将目标业务的目标业务数据发送至第二业务系统。
第一业务系统在确认本周期下目标业务对应的发送状态为发送失败状态时(SendFlag=2),判断目标业务的目标业务概要数据中的发送失败次数(称为目标发送失败次数,其初始值为0)是否小于预设次数(预设次数可配置,写在配置文件或配置中心中,可根据实际情况做调整,如可设置为4),若小于预设次数,则判断目标业务的目标业务数据是否为本周期待发送数据,若为本周期待发送数据,则基于目标业务的目标业务概要数据中的错误信息(称为目标错误信息)对目标业务数据进行相应处理后发送至第二业务系统(第二业务系统在接收到目标业务数据之后,对目标业务数据进行校验,若校验成功,则向第一业务系统返回针对目标业务数据的接收成功消息);若不为本周期待发送数据,则暂时不对目标业务数据进行处理并发送至第二业务系统;若不小于预设次数((SendFlag=2)&(SendCounts≥4)),则通过邮件或其它方式通知系统责任人或运维人员进行人工处理。
第一业务系统在确认本周期下目标业务对应的发送状态为发送成功状态时(SendFlag=1),说明目标业务的目标业务数据已成功发送至第二业务系统,则无需再重复将目标业务的目标业务数据发送至第二业务系统。
步骤S104:在向第二业务系统发送目标业务数据后,若在预设时间内未接收到第二业务系统针对目标业务数据返回的接收成功消息,则基于目标业务数据的发送失败情况更新目标错误信息,将目标发送失败次数加1,将目标发送标志的标志值更新为表征发送失败状态的标志值,并等待下一周期的扫描操作,以使目标业务数据成功发送至第二业务系统。
具体应用中,第一业务系统在每次向第二业务系统发送目标业务的目标业务数据后,均判断在预设时间(预设时间可配置,写在配置文件或配置中心中,可根据实际情况做调整,比如,可根据第一业务系统接口的压测结果合理设置这里的时间(尽量短),以避免由于第二业务系统处理慢拖死第一业务系统)内是否接收到第二业务系统针对目标业务数据返回的接收成功消息,若接收到,则将目标业务的目标业务概要数据中的目标发送标志的标志值更新为表征目标业务数据成功发送至第二业务系统的标志值(SendFlag=1),并等待下一周期的扫描操作;若未接收到,则基于目标业务的目标业务数据的发送失败情况,更新目标业务的目标业务概要数据中的目标错误信息,将目标业务的目标业务概要数据中的目标发送失败次数加1(SendCounts++),将目标业务的目标业务概要数据中的目标发送标志的标志值更新为表征发送失败状态的标志值(SendFlag=2),并等待下一周期的扫描操作。如此循环,以尽最大努力实现第一业务系统和第二业务系统的数据一致性。
本申请提供的数据一致性方法,第一业务系统在向第二业务系统发送数据失败后,基于数据发送失败的情况对数据进行相应处理后重新尝试发送至第二业务系统,且可进行多次重复尝试,目的是通过多次重复尝试将数据成功发送至第二业务系统,从而实现第一业务系统和第二业务系统的数据一致性。
在上述实施例的基础上:
作为一种可选的实施例,第一业务系统包括包含多个并发线程的线程池;多个并发线程用于向第二业务系统并行发送本周期待发送的多个业务的业务数据;
目标业务的目标业务数据是否为本周期待发送数据的判定过程,包括:
从本周期扫描的第一业务和第二业务中选择出M个第三业务;其中;第一业务对应的发送状态为未处理状态;第二业务对应的发送状态为发送失败状态,且第二业务的业务概要数据中的发送失败次数小于预设次数;M≤N×线程池中并发线程的总数量;N表示每个并发线程在每个周期最多发送N个业务的业务数据;
判断目标业务是否属于本周期所选择出的第三业务;
若是,则判定目标业务的目标业务数据是本周期待发送数据;
若否,则判定目标业务的目标业务数据不是本周期待发送数据。
具体应用中,第一业务系统如果对性能要求不高,可仅采用单节点向第二业务系统发送多个业务的业务数据。如果需要少量提高发送速度,可以考虑向第二业务系统批量送数(需第二业务系统的接口支持);或者,缩短定时任务的时间间隔(即缩短扫描周期,需考虑第一业务系统的数据库负载情况及第一业务系统调用第二业务系统接口的速度)。
第一业务系统如果对性能要求较高,可采用多节点或多并发线程同时向第二业务系统发送多个业务的业务数据。具体而言,第一业务系统包括包含K个并发线程的线程池,每个并发线程在每个周期最多可发送N个业务的业务数据(N值可配置,写在配置文件或配置中心中,可根据实际情况做调整,如可设置为10)至第二业务系统,则第一业务系统在每个周期最多可发送(N×K)个业务的业务数据。基于此,目标业务的目标业务数据是否为本周期待发送数据的判定过程为:
第一业务系统从本周期扫描的第一业务(对应未处理状态的业务)和第二业务(对应发送失败状态、且发送失败次数小于预设次数的业务)中共同选择出M个业务(称为第三业务,M≤N×K,如第一业务和第二业务的总业务数量不小于(N×K),则M=N×K;第一业务和第二业务的总业务数量小于(N×K),M=第一业务和第二业务的总业务数量,即第一业务和第二业务全部选择为第三业务),若目标业务属于本周期所选择出的第三业务,则判定目标业务的目标业务数据是本周期待发送数据,此时可将目标业务分配至某一并发线程处理(此并发线程用于发送目标业务的目标业务数据至第二业务系统,具体而言,本周期所选择出的M个第三业务可平均分配至K个并发线程处理);若目标业务不属于本周期所选择出的第三业务,则判定目标业务的目标业务数据不是本周期待发送数据。
作为一种可选的实施例,字段还包括占号值字段;数据一致性方法还包括:
在目标业务分配至某一并发线程时,基于预设占号值生成规则为目标业务生成新占号值,并基于生成的新占号值更新目标业务概要数据中的目标占号值;其中,对应新占号值的目标业务不能再被分配至其它并发线程;
若在预设时间内未接收到第二业务系统针对目标业务数据返回的接收成功消息,则将目标占号值恢复至初始占号值。
本申请实施例中,预设的业务概要中包含的字段除了业务信息字段、错误信息字段、发送失败次数字段、发送标志字段之外,还可包括但不仅限于占号值字段(paymentLogNo)。
具体应用中,第一业务系统在目标业务分配至某一并发线程时,基于预设占号值生成规则为目标业务生成新占号值(比如,占号值生成规则:年月日时分秒+三位随机数,共17位,如20210303150633789),并基于生成的新占号值更新目标业务的目标业务概要数据中的占号值(称为目标占号值),这样做的目的是:对应新占号值的目标业务不能再被分配至其它并发线程,以避免不同线程重复送数。
第一业务系统在每次向第二业务系统发送目标业务的目标业务数据后,若在预设时间内未接收到第二业务系统针对目标业务数据返回的接收成功消息,则将目标业务的目标业务概要数据中的目标占号值恢复至初始占号值,以避免影响目标业务数据的后续发送。
作为一种可选的实施例,基于目标业务数据的发送失败情况更新目标错误信息,包括:
若在预设时间内未接收到第二业务系统针对目标业务数据返回的消息,则将目标错误信息更新为表征系统超时的错误信息;若在预设时间内接收到第二业务系统针对目标业务数据返回的校验失败消息,则将目标错误信息更新为表征第二业务系统对目标业务数据校验不通过的错误信息;
基于目标业务概要数据中的目标错误信息对目标业务数据进行相应处理后发送至第二业务系统,包括:
若目标错误信息为表征系统超时的错误信息,则将目标业务数据重新组织成第一报文,并将第一报文发送至第二业务系统;
若目标错误信息为表征第二业务系统对目标业务数据校验不通过的错误信息,则修改目标业务数据,并将修改后的目标业务数据组织成第二报文,以将第二报文发送至第二业务系统。
具体应用中,第一业务系统在预设时间内未接收到第二业务系统针对目标业务数据返回的接收成功消息存在两种情况:1)第一业务系统在预设时间内未接收到第二业务系统针对目标业务数据返回的任何消息(说明系统超时),则需将目标业务的目标业务概要数据中的目标错误信息更新为表征系统超时的错误信息;2)第一业务系统在预设时间内接收到第二业务系统针对目标业务数据返回的接收失败消息。而在第二种情况中,第二业务系统接收数据失败不止一种失败情况,如第二业务系统对目标业务数据校验不通过或其它失败情况,所以接收失败消息可以为校验失败消息(此时需将目标业务的目标业务概要数据中的目标错误信息更新为表征第二业务系统对目标业务数据校验不通过的错误信息),也可以为其它失败情况的失败消息,接收失败消息具体可包括错误代码(ErrorCode)和错误描述(ErrorMessage)等信息。
基于此,第一业务系统基于目标业务的目标业务概要数据中的目标错误信息对目标业务数据进行相应处理后发送至第二业务系统可包括:若目标业务的目标业务概要数据中的目标错误信息为表征系统超时的错误信息,则将目标业务的目标业务数据重新组织成报文(称为第一报文),并将第一报文发送至第二业务系统;若目标业务的目标业务概要数据中的目标错误信息为表征第二业务系统对目标业务数据校验不通过的错误信息,则按照预设数据修改策略(对于每一种错误,如何修改目标业务的目标业务数据是提前设置好的),修改目标业务的目标业务数据,并将修改后的目标业务数据组织成报文(称为第二报文),以将第二报文发送至第二业务系统;若目标业务的目标业务概要数据中的目标错误信息为程序无法处理的错误信息,则通过邮件或其它方式通知系统责任人或运维人员进行人工处理。
作为一种可选的实施例,数据一致性方法还包括:
将每个业务的业务数据存入数据库的业务表中,以从业务表中获取每个业务的业务数据;
将每个已处理完成的业务的业务概要数据存入数据库的接口表中,以从接口表中定期扫描每个已处理完成的业务的业务概要数据。
具体应用中,第一业务系统将每个业务的业务数据存入数据库的业务表中,以从数据库的业务表中获取每个业务的业务数据发送至第二业务系统;并且,第一业务系统将每个已处理完成的业务的业务概要数据存入数据库的接口表中(具体可在业务处理完成的最后一步,将此业务的业务概要数据存入接口表中),以从数据库的接口表中定期扫描每个已处理完成的业务的业务概要数据。
第二业务系统的数据库中也可包含业务表和接口表,其中,业务表用于存储第一业务系统发送过来的业务数据,也可用于存储第二业务系统处理自身业务得到的业务数据;接口表用于存储第二业务系统已处理完成的业务的业务概要数据。
需要说明的是,第一业务系统的业务数据最终入库前需要有严格、完善的数据校验机制,校验规则尽量与第二业务系统一致,以避免由于校验不同导致数据传输失败。
作为一种可选的实施例,第一业务系统上设有消息回查接口,第二业务系统通过调用消息回查接口查询第一业务系统上的数据。
具体应用中,如果第一业务系统尽最大努力都没有将目标业务数据通知给第二业务系统,或者第二业务系统接收到目标业务数据并执行完毕后,需要再次获取目标业务数据,但此时第一业务系统针对目标业务数据的尝试次数已经达到上限,则不会再向第二业务系统发送目标业务数据,也就是说,此情况下如果没有处理措施则业务会丢失,因此,第一业务系统提供消息回查接口来满足第二业务系统查询所需数据的需求,以恢复丢失的业务。
而且,第二业务系统在接收到目标业务数据之后,需进行后续业务处理,如果后续业务处理失败,可通过调用第一业务系统的消息回查接口要求第一业务系统重传数据。另外,第一业务系统在设计消息回查接口时,一定要注意接口的安全性和并发性。
作为一种可选的实施例,第二业务系统具备接口幂等性;数据一致性方法还包括:
若接收到第二业务系统针对目标业务数据返回的重复接收消息,则将目标错误信息更新为表征第二业务系统重复接收目标业务数据的错误信息,并停止向第二业务系统发送目标业务数据。
具体应用中,第二业务系统需要做接口幂等性处理,实现方式可以为:利用第二业务系统的数据库中的接口表唯一索引的特性,第二业务系统可将某个字段(如业务号)作为主键或唯一索引插入到接口表中,如第一业务系统发送重复业务数据,则重复插入不成功,并向第一业务系统返回针对重复业务数据的重复接收消息。
基于此,第一业务系统若接收到第二业务系统针对目标业务数据返回的重复接收消息,则将目标业务的目标业务概要数据中的目标错误信息更新为表征第二业务系统重复接收目标业务数据的错误信息,并停止向第二业务系统发送目标业务数据。
需要说明的是,第二业务系统如果正常接收目标业务数据,但后续目标业务数据处理出错后,则第二业务系统需将目标业务数据进行逻辑删除,以避免第一业务系统在重新传送目标业务数据时被幂等处理,导致新的正确数据无法正常接收。
作为一种可选的实施例,数据一致性方法还包括:
向第三方系统发送待对账数据,以使第三方系统将第一业务系统发送的待对账数据与第二业务系统发送的待对账数据进行数据比对;
若接收到第三方系统返回的表征第二业务系统数据缺失的消息,则向第二业务系统补传其缺失的数据;
若接收到第三方系统返回的表征第一业务系统与第二业务系统的数据不一致的消息,则向第二业务系统重传比对结果不一致的数据。
本申请实施例中,第一业务系统和第二业务系统之间针对重要数据应有对账机制,推荐由第三方系统对第一业务系统和第二业务系统的重要数据进行数据比对。
具体应用中,第一业务系统和第二业务系统均向第三方系统发送待对账数据(需要说明的是,第一业务系统和第二业务系统所需对账的数据需提前约定好)。第三方系统在接收到第一业务系统和第二业务系统发送的待对账数据之后,将第一业务系统发送的待对账数据与第二业务系统发送的待对账数据进行数据比对,如果发现第二业务系统的数据缺失,则有两种解决方式:1)第三方系统向第一业务系统返回表征第二业务系统数据缺失的消息,以触发第一业务系统向第二业务系统补传第二业务系统缺失的数据;2)第三方系统向第二业务系统返回表征第二业务系统数据缺失的消息,以触发第二业务系统通过第一业务系统的消息回查接口查询到自身缺失的数据。如果发现第一业务系统与第二业务系统的数据不一致,则有两种解决方式:1)第三方系统向第一业务系统返回表征第一业务系统与第二业务系统的数据不一致的消息,以触发第一业务系统向第二业务系统重传比对结果不一致的数据;2)第三方系统向第二业务系统返回表征第一业务系统与第二业务系统的数据不一致的消息,以触发第二业务系统通过调用第一业务系统的消息回查接口要求第一业务系统向第二业务系统重传比对结果不一致的数据。
综上,请参照图3,图3为本申请实施例提供的一种业务系统的工作环节示意图。业务系统(上、下游业务系统)的主要工作环节包括:1、业务数据写入业务表,业务概要数据写入接口表;2、上游业务系统获取待发送数据,组织报文;3、上游业务系统调用下游业务系统的接口,回写调用结果;4、上游业务系统发送失败重复调用,直到最大次数;5、下游业务系统通过上游业务系统的消息回查接口反查补偿;6、上、下游业务系统数据核对。
本申请还提供了一种业务系统,包括第一业务系统和第二业务系统;其中,第一业务系统在执行自身存储的计算机程序时实现上述任一种数据一致性方法的步骤。
本申请提供的业务系统的介绍请参考上述数据一致性方法的实施例,本申请在此不再赘述。
本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种数据一致性方法,其特征在于,应用于第一业务系统,包括:
对每个业务进行处理,得到每个所述业务的业务数据,并基于预设的业务概要中每个字段的含义,得到每个已处理完成的所述业务的业务概要数据;其中,所述字段包括业务信息字段、错误信息字段、发送失败次数字段、发送标志字段;
定期扫描每个已处理完成的所述业务的业务概要数据,基于目标业务的目标业务概要数据中的目标发送标志,确认所述目标业务对应的发送状态;其中,所述目标业务为任一已处理完成的所述业务;
若所述发送状态为未处理状态,且所述目标业务的目标业务数据为本周期待发送数据,则将所述目标业务数据发送至第二业务系统;若所述发送状态为发送失败状态、所述目标业务概要数据中的目标发送失败次数小于预设次数,且所述目标业务数据为本周期待发送数据,则基于所述目标业务概要数据中的目标错误信息对所述目标业务数据进行相应处理后发送至所述第二业务系统;
在向所述第二业务系统发送所述目标业务数据后,若在预设时间内未接收到所述第二业务系统针对所述目标业务数据返回的接收成功消息,则基于所述目标业务数据的发送失败情况更新所述目标错误信息,将所述目标发送失败次数加1,将所述目标发送标志的标志值更新为表征所述发送失败状态的标志值,并等待下一周期的扫描操作,以使所述目标业务数据成功发送至所述第二业务系统。
2.如权利要求1所述的数据一致性方法,其特征在于,所述第一业务系统包括包含多个并发线程的线程池;多个所述并发线程用于向所述第二业务系统并行发送本周期待发送的多个所述业务的业务数据;
所述目标业务的目标业务数据是否为本周期待发送数据的判定过程,包括:
从本周期扫描的第一业务和第二业务中选择出M个第三业务;其中;所述第一业务对应的发送状态为所述未处理状态;所述第二业务对应的发送状态为所述发送失败状态,且所述第二业务的业务概要数据中的发送失败次数小于所述预设次数;M≤N×所述线程池中并发线程的总数量;N表示每个所述并发线程在每个周期最多发送N个所述业务的业务数据;
判断所述目标业务是否属于本周期所选择出的所述第三业务;
若是,则判定所述目标业务的目标业务数据是本周期待发送数据;
若否,则判定所述目标业务的目标业务数据不是本周期待发送数据。
3.如权利要求2所述的数据一致性方法,其特征在于,所述字段还包括占号值字段;所述数据一致性方法还包括:
在所述目标业务分配至某一所述并发线程时,基于预设占号值生成规则为所述目标业务生成新占号值,并基于生成的所述新占号值更新所述目标业务概要数据中的目标占号值;其中,对应所述新占号值的所述目标业务不能再被分配至其它所述并发线程;
若在所述预设时间内未接收到所述第二业务系统针对所述目标业务数据返回的接收成功消息,则将所述目标占号值恢复至初始占号值。
4.如权利要求1所述的数据一致性方法,其特征在于,所述基于所述目标业务数据的发送失败情况更新所述目标错误信息,包括:
若在所述预设时间内未接收到所述第二业务系统针对所述目标业务数据返回的消息,则将所述目标错误信息更新为表征系统超时的错误信息;若在所述预设时间内接收到所述第二业务系统针对所述目标业务数据返回的校验失败消息,则将所述目标错误信息更新为表征所述第二业务系统对所述目标业务数据校验不通过的错误信息;
所述基于所述目标业务概要数据中的目标错误信息对所述目标业务数据进行相应处理后发送至所述第二业务系统,包括:
若所述目标错误信息为表征系统超时的错误信息,则将所述目标业务数据重新组织成第一报文,并将所述第一报文发送至所述第二业务系统;
若所述目标错误信息为表征所述第二业务系统对所述目标业务数据校验不通过的错误信息,则修改所述目标业务数据,并将修改后的所述目标业务数据组织成第二报文,以将所述第二报文发送至所述第二业务系统。
5.如权利要求1所述的数据一致性方法,其特征在于,所述数据一致性方法还包括:
将每个所述业务的业务数据存入数据库的业务表中,以从所述业务表中获取每个所述业务的业务数据;
将每个已处理完成的所述业务的业务概要数据存入所述数据库的接口表中,以从所述接口表中定期扫描每个已处理完成的所述业务的业务概要数据。
6.如权利要求1所述的数据一致性方法,其特征在于,所述数据一致性方法还包括:
在向所述第二业务系统发送所述目标业务数据后,若在所述预设时间内接收到所述第二业务系统针对所述目标业务数据返回的接收成功消息,则将所述目标发送标志的标志值更新为表征所述目标业务数据成功发送至所述第二业务系统的标志值。
7.如权利要求1所述的数据一致性方法,其特征在于,所述第一业务系统上设有消息回查接口,所述第二业务系统通过调用所述消息回查接口查询所述第一业务系统上的数据。
8.如权利要求1所述的数据一致性方法,其特征在于,所述第二业务系统具备接口幂等性;所述数据一致性方法还包括:
若接收到所述第二业务系统针对所述目标业务数据返回的重复接收消息,则将所述目标错误信息更新为表征所述第二业务系统重复接收所述目标业务数据的错误信息,并停止向所述第二业务系统发送所述目标业务数据。
9.如权利要求1-8任一项所述的数据一致性方法,其特征在于,所述数据一致性方法还包括:
向第三方系统发送待对账数据,以使所述第三方系统将所述第一业务系统发送的待对账数据与所述第二业务系统发送的待对账数据进行数据比对;
若接收到所述第三方系统返回的表征所述第二业务系统数据缺失的消息,则向所述第二业务系统补传其缺失的数据;
若接收到所述第三方系统返回的表征所述第一业务系统与所述第二业务系统的数据不一致的消息,则向所述第二业务系统重传比对结果不一致的数据。
10.一种业务系统,其特征在于,包括第一业务系统和第二业务系统;其中,所述第一业务系统在执行自身存储的计算机程序时实现如权利要求1-9任一项所述的数据一致性方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211123490.5A CN115544034A (zh) | 2022-09-15 | 2022-09-15 | 一种数据一致性方法及业务系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211123490.5A CN115544034A (zh) | 2022-09-15 | 2022-09-15 | 一种数据一致性方法及业务系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115544034A true CN115544034A (zh) | 2022-12-30 |
Family
ID=84728558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211123490.5A Pending CN115544034A (zh) | 2022-09-15 | 2022-09-15 | 一种数据一致性方法及业务系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115544034A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166681A (zh) * | 2023-04-25 | 2023-05-26 | 北京阿帕科蓝科技有限公司 | 系统间数据调用方法、系统以及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579318A (en) * | 1994-06-30 | 1996-11-26 | Bellsouth Corporation | Processes and apparatus for maintaining data concurrence between databases in telecommunications networks |
US20050114461A1 (en) * | 2003-09-30 | 2005-05-26 | Fujitsu Limited | Method of data exchange processing for sending server and receiving server |
CN111245934A (zh) * | 2020-01-10 | 2020-06-05 | 深圳壹账通智能科技有限公司 | 文件传输的反馈方法、装置、设备和存储介质 |
CN111367628A (zh) * | 2020-03-05 | 2020-07-03 | 中国银行股份有限公司 | 分布式事务的处理方法、装置及消息生产方、消费方系统 |
CN111835467A (zh) * | 2020-07-28 | 2020-10-27 | 中国平安财产保险股份有限公司 | 消息发送方法、装置、计算机设备和存储介质 |
CN114116889A (zh) * | 2021-11-04 | 2022-03-01 | 金蝶云科技有限公司 | 物料数据的同步方法、装置、计算机设备和存储介质 |
-
2022
- 2022-09-15 CN CN202211123490.5A patent/CN115544034A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579318A (en) * | 1994-06-30 | 1996-11-26 | Bellsouth Corporation | Processes and apparatus for maintaining data concurrence between databases in telecommunications networks |
US20050114461A1 (en) * | 2003-09-30 | 2005-05-26 | Fujitsu Limited | Method of data exchange processing for sending server and receiving server |
CN111245934A (zh) * | 2020-01-10 | 2020-06-05 | 深圳壹账通智能科技有限公司 | 文件传输的反馈方法、装置、设备和存储介质 |
CN111367628A (zh) * | 2020-03-05 | 2020-07-03 | 中国银行股份有限公司 | 分布式事务的处理方法、装置及消息生产方、消费方系统 |
CN111835467A (zh) * | 2020-07-28 | 2020-10-27 | 中国平安财产保险股份有限公司 | 消息发送方法、装置、计算机设备和存储介质 |
CN114116889A (zh) * | 2021-11-04 | 2022-03-01 | 金蝶云科技有限公司 | 物料数据的同步方法、装置、计算机设备和存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166681A (zh) * | 2023-04-25 | 2023-05-26 | 北京阿帕科蓝科技有限公司 | 系统间数据调用方法、系统以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542639B (zh) | 一种保障微服务调用数据一致性的处理方法、处理装置 | |
CN106909411B (zh) | 一种文件更新方法及装置 | |
CN110544097A (zh) | 智能合约版本控制、调用和升级方法、设备及存储介质 | |
CN111768288B (zh) | 业务处理方法、装置、电子设备及存储介质 | |
CN105243586A (zh) | 一种银行代理保险系统及其防错账处理方法 | |
KR20060079078A (ko) | 서버 큐잉 시스템 및 방법 | |
CN115544034A (zh) | 一种数据一致性方法及业务系统 | |
CN111651284A (zh) | 一种处理业务数据的方法、装置、系统及存储介质 | |
CN110941622A (zh) | 一种数据处理方法及装置 | |
CN111625323A (zh) | 分布式任务处理方法、装置、设备及计算机可读存储介质 | |
CN117762652A (zh) | 基于消息中间件的分布式事务的处理方法及装置 | |
CN113742043A (zh) | 一种服务器后端任务异步拆分方法 | |
CN115114303A (zh) | 业务数据稽核方法、平台和系统 | |
JP2006277685A (ja) | 障害発生通知プログラム、および通知装置。 | |
CN115964133A (zh) | 一种消息管理方法、装置、设备及存储介质 | |
CN113327143B (zh) | 一种解决重复开发票的开票系统 | |
CN114884906A (zh) | 基于快速恢复的失败重试通知方法及装置 | |
CN111049938B (zh) | 消息通知方法、装置、电子设备及可读存储介质 | |
CN114968498A (zh) | 一种分布式事务处理方法及装置 | |
CN111225117B (zh) | 一种提醒消息的下发方法及装置 | |
CN102111783A (zh) | 原子命令回滚方法及终端 | |
CN112053150A (zh) | 一种数据处理方法、装置及存储介质 | |
CN116431367B (zh) | 一种修改票证信息的方法、系统及计算机可读存储介质 | |
CN118132654A (zh) | 金融数据同步方法、装置、旁路设备及存储介质 | |
CN114900531B (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 |