CN117934190A - 一种基于消息中间件与分布式锁的异构记账方法及*** - Google Patents
一种基于消息中间件与分布式锁的异构记账方法及*** Download PDFInfo
- Publication number
- CN117934190A CN117934190A CN202410316197.3A CN202410316197A CN117934190A CN 117934190 A CN117934190 A CN 117934190A CN 202410316197 A CN202410316197 A CN 202410316197A CN 117934190 A CN117934190 A CN 117934190A
- Authority
- CN
- China
- Prior art keywords
- accounting
- billing
- account
- information
- updating
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012545 processing Methods 0.000 claims abstract description 53
- 238000005192 partition Methods 0.000 claims description 22
- 230000008569 process Effects 0.000 claims description 11
- 230000001360 synchronised effect Effects 0.000 claims description 10
- 230000003247 decreasing effect Effects 0.000 claims description 6
- 238000005096 rolling process Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
Landscapes
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明属于会计记账技术领域,提供一种基于消息中间件与分布式锁的异构记账方法及***。所述方法包括:根据支付业务属性生成记账凭证,并写入数据库中进行保存;基于记账凭证中的账户编号获取分布式锁,更新账户余额信息后将记账凭证推送至消息中间件中进行消费,并将记账凭证的记账状态更新为记账中;查询记账规则,通过记账规则对会计***中的会计账户进行更新;修改会计记账信息的最终状态并通知账户***,完成记账。本发明通过把记账凭证异步发送到消息中间件中进行消费处理,有效实现会计记账与业务处理的解耦,同时采用分布式锁来保证数据的幂等性,能够提高业务处理性能,缩短账务处理时间。
Description
技术领域
本发明涉及会计记账技术领域,特别涉及一种基于消息中间件与分布式锁的异构记账方法及***。
背景技术
支付***是管理财务数据,为企业金融业务提供支持的平台。在现有支付***的架构中,会计记账和业务处理通常采用同步串行处理,并通过数据库锁来保证数据的幂等性;此种处理方式使会计记账与业务处理紧密耦合,因而存在着以下问题:
(1)高并发情况下,热点账户的数据操作会使业务处理过程中产生锁竞争,从而导致业务处理性能低下,耗时较长;
(2)因会计记账和业务处理采用同步串行处理方式,当业务处理性能低下时,会计记账速度也随之降低,从而影响支付***的整体效率,客户满意度欠佳。
因此,我们需要开发出一种基于消息中间件与分布式锁的异构记账方法及***,能够使会计记账与业务处理进行解耦,缩短账务处理时间,提高业务处理性能;同时摒弃数据库锁,保证支付***整体在高并发情况下也能维持高效率的工作状态,提升客户满意度。
发明内容
本发明的目的在于提供一种基于消息中间件与分布式锁的异构记账方法及***,以解决上述背景技术中提到的现有支付***架构业务处理性能不高,耗时较长以及客户满意度欠佳的问题。
为实现上述目的,本发明采用以下技术方案:
根据本发明的一个方面,提供一种基于消息中间件与分布式锁的异构记账方法,所述方法具体步骤如下:
根据支付业务属性生成记账凭证,并写入数据库中进行保存;
基于所述记账凭证中的账户编号获取分布式锁,更新账户余额信息;
将所述记账凭证推送至消息中间件中进行消费,并将所述记账凭证的记账状态更新为记账中;
查询记账规则,通过所述记账规则对会计***中的会计账户进行更新;
修改会计记账信息的最终状态并通知账户***,完成记账。
根据本发明的一个方面,提供一种基于消息中间件与分布式锁的异构记账***,所述***包括:凭证生成模块、账户操作模块、凭证消费模块、记账处理模块以及记账完成模块。其中:
上述凭证生成模块,用于根据支付业务属性生成记账凭证,并写入数据库中进行保存;
上述账户操作模块,用于基于所述记账凭证中的账户编号获取分布式锁,更新账户余额信息;
上述凭证消费模块,用于将所述记账凭证推送至消息中间件中进行消费,并将所述记账凭证的记账状态更新为记账中;
上述记账处理模块,用于查询记账规则,通过所述记账规则对会计***中的会计账户进行更新;
上述记账完成模块,用于修改会计记账信息的最终状态并通知账户***,完成记账。
基于前述方案,所述更新账户余额信息是通过对所述账户余额进行增减操作来实现的,具体过程为:
检查分布式锁是否处于闲置状态;
若否,则等待获取所述分布式锁;
若是,则根据所述记账凭证中的账户编号获取所述分布式锁,并对相应账户进行加锁处理;
对加锁处理后的账户余额进行增减操作,更新账户余额信息;
将更新后的账户余额信息写入数据库中进行保存,释放所述分布式锁。
基于前述方案,账户操作完成后,将根据支付业务属性生成的记账凭证推送至消息中间件中进行消费,并在消费成功后将所述记账凭证的记账状态更新为记账中,其过程具体包括:
所述消息中间件监听是否有需要消费的记账凭证;
若有,则接收所述记账凭证并进行消费;生成会计记账信息与会计记账明细信息后写入数据库中进行保存;
查看所述记账凭证是否消费成功;
若失败,则将所述记账凭证回滚至消息队列中,等待下次业务执行时重新消费;
若成功,则向账户***发送所述记账凭证消费成功的通知,并将所述记账凭证的记账状态更新为记账中。
基于前述方案,生成会计记账明细信息后,将所述会计记账明细信息按照账户进行分类,并将分类好的会计记账明细信息分别推送至所述消息中间件的各消息分区中进行消费。其中,所述消息中间件的各消息分区中的消费处理是同步进行的。
基于前述方案,根据所述会计记账明细信息查询记账规则,并通过所述记账规则对会计***中的会计账户进行更新,包括如下步骤:
检查分布式锁是否处于闲置状态;
若否,则等待获取所述分布式锁;
若是,则获取所述分布式锁并对所述会计***中的会计账户进行加锁处理;
根据所述记账规则对所述会计账户进行借贷记操作,生成当前借贷记操作的会计分录信息后,更新所述会计账户和会计记账明细信息;
将所述会计分录信息、更新后的所述会计账户和所述会计记账明细信息写入数据库中进行保存,释放所述分布式锁。
基于前述方案,检查所述消息中间件的各消息分区中的所述会计记账明细信息是否均消费成功;若所述消息中间件的任一消息分区中存在消费失败,则需回滚当前失败的所述会计记账明细信息,等待重新消费;若所述会计记账明细信息均已消费成功,则将所述会计记账信息的最终状态修改为成功。
基于前述方案,将所述会计记账信息的最终状态修改为成功后,所述会计***将向所述账户***发送记账成功的通知;所述账户***则根据所述会计记账信息的最终状态更改所述记账凭证的记账状态,并写入数据库中进行保存。
由上述技术方案可知,本发明与现有技术相比,至少具备以下优点和积极效果:
(1)本发明通过把记账凭证异步发送到消息中间件中进行消费处理,能够有效将会计记账与业务处理解耦,既不影响业务处理进程,也能提升会计记账的速度。
(2)本发明在记账处理过程中,将会计记账明细信息根据账户分类后分别推送至消息中间件的各消息分区中进行同步消费处理,不仅能缩短账务处理时间,提高会计记账效率,也能减少账务信息被漏处理、重复处理的情况。
(3)本发明采用分布式锁来保证数据的幂等性,既能实现不同线程之间的互斥访问,也能避免数据高并发情况下的锁竞争问题,从而提高了支付***整体的工作稳定性,增加了客户满意度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例所提供的一种基于消息中间件与分布式锁的异构记账方法的流程图;
图2示出了本发明实施例所提供的一种基于消息中间件消费记账凭证的方法流程图;
图3示出了本发明实施例所提供的一种通过记账规则对会计账户进行更新的方法流程图;
图4示出了本发明实施例所提供的一种异构记账方法的时序图;
图5示出了本发明实施例所提供的一种基于消息中间件与分布式锁的异构记账***的结构示意图;
其中,图5中的附图标记说明如下:
500-一种基于消息中间件与分布式锁的异构记账***;501-凭证生成模块;502-账户操作模块;503-凭证消费模块,5031-凭证接收单元,5032-凭证处理单元,5033-检查反馈单元,5034-状态更新单元;504-记账处理模块,5041-分类处理单元,5042-规则查询单元,5043-账户更新单元,5044-数据保存单元;505-记账完成模块,5051-消费检查单元,5052-记账更新单元。
具体实施方式
为了更加清楚的阐释本发明的目的、技术方案和优点,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
下面结合具体实施例对本发明进行详细的说明。
实施例1
如图1所示,本发明实施例提供了一种基于消息中间件与分布式锁的异构记账方法,该方法的具体步骤如下:
S1:根据支付业务属性生成记账凭证,并写入数据库中进行保存;
在本实施例中,记账凭证是记账操作的唯一依据,通过对记账凭证的记账状态进行控制,能够保证会计记账与业务操作的同步一致性。因此,在会计记账开始前,账户***将根据当前支付业务属性来生成记账凭证,并将所述记账凭证写入数据库中进行保存。
S2:基于所述记账凭证中的账户编号获取分布式锁,更新账户余额信息;
进一步地,检查各会计账户余额是否充足,以保证支付***能够正常运转。优选地,在本实施例中,更新账户余额信息是通过对所述账户余额进行增减操作来实现的。其过程具体包括:
检查分布式锁是否处于闲置状态;
若否,则等待获取锁;
若是,则根据所述记账凭证中的账户编号获取所述分布式锁,并对相应账户进行加锁处理;
对加锁处理后的账户余额进行增减操作,更新账户余额信息;
将更新后的账户余额信息写入数据库中进行保存,释放所述分布式锁。
S3:将所述记账凭证推送至消息中间件中进行消费,并将所述记账凭证的记账状态更新为记账中;
进一步地,账户操作完成后,将所述记账凭证推送至消息中间件中;会计***通过消费所述消息中间件中的所述记账凭证来生成会计记账信息和会计记账明细信息,并写入数据库中进行保存。
具体地,如图2所示,基于消息中间件消费记账凭证,包括如下步骤:
S201:消息中间件监听是否有需要消费的记账凭证;
S202:若有,则接收所述记账凭证并进行消费;生成会计记账信息与会计记账明细信息后写入数据库中进行保存;
S203:查看所述记账凭证是否消费成功;
S204:若失败,则将所述记账凭证回滚至消息队列中,等待下次业务执行时重新消费;
S205:若成功,则向账户***发送所述记账凭证消费成功的通知,并将所述记账凭证的记账状态更新为记账中。
进一步地,在本实施例中,生成所述会计记账明细信息后,还包括:将所述会计记账明细信息根据账户(如收款方、付款方)进行分类,并将分类好的会计记账明细信息分别推送至所述消息中间件的各消息分区中进行消费。具体地,在本实施例中,所述消息中间件的各消息分区也是通过账户来进行划分的,且各消息分区中的消费处理是同步进行的。
在本实施例中,通过把记账凭证异步发送到消息中间件中进行消费处理,能够有效将会计记账与业务处理解耦,既不影响业务处理进程,也能提升会计记账的速度。同时,本发明实施例在记账处理过程中,将生成的会计记账明细信息根据账户分类后分别推送至消息中间件的各消息分区中进行同步消费处理,不仅能缩短账务处理时间,提高会计记账效率,也能减少账务信息被漏处理、重复处理的情况。
S4:查询记账规则,通过所述记账规则对会计***中的会计账户进行更新;
进一步地,通过S202步骤生成会计记账明细信息后,根据所述会计记账明细信息查询记账规则,并对会计***中的会计账户进行更新。
具体地,如图3所示,通过记账规则对会计账户进行更新,包括如下步骤:
S301:检查分布式锁是否处于闲置状态;
S302:若否,则等待获取锁;
S303:若是,则获取所述分布式锁并对所述会计***中的会计账户进行加锁处理;
S304:根据所述记账规则对所述会计账户进行借贷记操作,生成当前借贷记操作的会计分录信息后,更新所述会计账户和会计记账明细信息;
S305:将所述会计分录信息、更新后的所述会计账户和所述会计记账明细信息写入数据库中进行保存,释放所述分布式锁。
在本实施例中,舍弃现有支付***架构中使用的数据库锁,采用性能更高效的分布式锁来保证数据的幂等性,不仅能实现不同线程之间的互斥访问,也能避免数据高并发情况下的锁竞争问题,从而提高了支付***整体的工作稳定性,有利于增加客户满意度。
S5:修改会计记账信息的最终状态并通知账户***,完成记账。
进一步地,对会计账户进行更新后,检查所述消息中间件中的各消息分区中的会计记账明细信息是否均消费成功,并通知账户***更改记账凭证的记账状态。在本实施例中,若所述消息中间件的任一消息分区中存在消费失败,则需回滚当前失败的所述会计记账明细信息,等待重新消费,直至消费成功。进一步地,当所述会计记账明细信息均已消费成功,则将所述会计记账信息的最终状态修改为成功。
进一步地,将所述会计记账信息的最终状态修改为成功后,所述会计***将向所述账户***发送记账成功的通知;所述账户***则根据所述会计记账信息的最终状态更改所述记账凭证的记账状态,即将所述记账凭证的记账状态更改为成功,并将最终的所述记账凭证写入数据库中进行保存,完成记账。
通过本发明实施例所述的基于消息中间件与分布式锁的异构记账方法,能够使会计记账动作成为异步操作,从而实现会计记账与业务处理的解耦;在记账处理之前先检查并更新会计账户的余额信息,保证支付***的正常运转;并在记账处理过程中摒弃传统支付***架构中的数据库锁,采用性能更高效的分布式锁来保证数据的幂等性,既能提高业务处理性能,缩短账务处理时间,也能使支付***整体在数据高并发情况下也能保持稳定高效的工作状态,实用性更高,便于提升客户满意度。
实施例2
如图4所示,本发明实施例提供了一种异构记账的整体方法,其过程具体包括:
凭证生成:账户***首先根据当前支付业务属性生成记账凭证,并将所述记账凭证写入数据库中进行保存。
账户操作:账户***根据生成的记账凭证中的账户编号向分布式锁的***申请分布式锁,获取到所述分布式锁后对相应账户进行加锁,并对所述相应账户的余额进行增减操作来更新账户余额信息;更新完毕后,将更新后的账户信息写入数据库中进行保存,并释放所述分布式锁。
会计记账:账户***将记账凭证异步发送到消息中间件中进行消费,并在消费成功后将所述记账凭证的记账状态更改为记账中。期间,会计***将根据所述记账凭证生成会计记账信息与会计记账明细信息,写入数据库中保存后,将所述会计记账明细信息根据账户进行分类并分别推送至消息中间件的各消息分区中进行同步消费;此外,会计***将根据所述会计记账明细信息查询记账规则,并对会计账户进行更新。最后,会计***检查消息中间件的各消息分区中的会计记账明细信息是否均消费成功,修改会计记账信息的最终状态并通知账户***,账户***则根据会计记账信息的最终状态更改记账凭证的记账状态,完成记账。
其中,对会计账户进行更新是根据所述记账规则对所述会计账户进行借贷记操作,生成当前借贷记操作的会计分录信息后来实现的。更新前,需获取所述分布式锁对所述会计账户进行加锁;更新完成后,所述会计分录信息、更新后的会计账户和会计记账明细信息均写入数据库中进行保存,然后释放所述分布式锁。
本发明实施例所述的异构记账方法,能够有效将会计记账与业务处理进行解耦,提升账务处理速度;同时用分布式锁来取代数据库锁,避免了数据高并发情况下的锁竞争问题,保证了支付***整体的稳定性。
实施例3
如图5所示,本发明实施例提供了一种基于消息中间件与分布式锁的异构记账***500,所述***包括:凭证生成模块501、账户操作模块502、凭证消费模块503、记账处理模块504以及记账完成模块505。其中:
凭证生成模块501,用于根据支付业务属性生成记账凭证,并写入数据库中进行保存;
在本实施例中,记账凭证是记账操作的唯一依据,因此在会计记账开始前,账户***根据当前支付业务属性,通过凭证生成模块501来生成记账凭证,并将所述记账凭证写入数据库中保存。
账户操作模块502,用于基于所述记账凭证中的账户编号获取分布式锁,更新账户余额信息;
进一步地,生成记账凭证后,账户操作模块502开始对各会计账户的余额进行检查和更新,以保证各会计账户的余额能够支撑支付***的正常运转。
具体地,在本实施例中,所述更新账户余额信息是通过对所述账户余额进行增减操作来实现的。
凭证消费模块503,用于将所述记账凭证推送至消息中间件中进行消费,并将所述记账凭证的记账状态更新为记账中;
在本实施例中,账户操作完成后,账户***则将记账凭证异步发送到消息中间件中,通过凭证消费模块503对所述记账凭证进行消费,并在消费成功后将所述记账凭证的记账状态更新为记账中。
凭证消费模块503包括:凭证接收单元5031、凭证处理单元5032、检查反馈单元5033以及状态更新单元5034;其中:
上述凭证接收单元5031,被配置为:通过消息中间件监听是否有需要消费的记账凭证;
上述凭证处理单元5032,被配置为:接收记账凭证并进行消费,生成会计记账信息和会计记账明细信息后写入数据库中进行保存;
上述检查反馈单元5033,被配置为:检查记账凭证是否消费成功,若失败则将所述记账凭证回滚至消息队列中,若成功则向账户***发送记账凭证消费成功的通知;
上述状态更新单元5034,被配置为:在接收到记账凭证消费成功的通知后将所述记账凭证的记账状态更新为记账中。
记账处理模块504,用于查询记账规则,通过所述记账规则对会计***中的会计账户进行更新;
优选地,在本实施例中,查询记账规则之前还包括:将上述凭证处理单元5032中生成的会计记账明细信息按照账户进行分类,并将分类好的会计记账明细信息分别推送至消息中间件的各消息分区中进行同步消费处理。进一步地,根据所述会计记账明细信息查询记账规则,并通过所述记账规则对会计***中的会计账户进行更新。
记账处理模块504包括:分类处理单元5041、规则查询单元5042、账户更新单元5043以及数据保存单元5044;其中:
上述分类处理单元5041,被配置为:将会计记账明细信息根据账户进行分类后分别推送至消息中间件的各消息分区中进行同步消费处理;
上述规则查询单元5042,被配置为:根据会计记账明细信息查询记账规则;
上述账户更新单元5043,被配置为:根据记账规则对会计账户进行借贷记操作,生成当前借贷记操作的会计分录信息后,更新所述会计账户和会计记账明细信息;
上述数据保存单元5044,被配置为:将会计分录信息、更新后的会计账户和会计记账明细信息写入数据库中进行保存。
记账完成模块505,用于修改会计记账信息的最终状态并通知账户***,完成记账。
优选地,在本实施例中,修改会计记账信息的最终状态之前,还包括:检查消息中间件的各消息分区中的会计记账明细信息是否均消费成功,若所述消息中间件的任一消息分区中存在消费失败,则需回滚当前失败的所述会计记账明细信息,等待重新消费,直至消费成功。
进一步地,当会计记账明细信息均消费成功后,将所述会计记账信息的最终状态修改为成功,并向账户***发送记账成功的通知;所述账户***根据所述会计记账信息的最终状态更改记账凭证的记账状态为成功,并将最终的所述记账凭证写入数据库中进行保存,完成记账。
记账完成模块505包括:消费检查单元5051和记账更新单元5052;其中:
上述消费检查单元5051,被配置为:检查消息中间件的各消息分区中的会计记账明细信息是否均消费成功,若所述消息中间件的任一消息分区中存在消费失败,则回滚当前失败的所述会计记账明细信息,等待重新消费,直至消费成功;
上述记账更新单元5052,被配置为:修改会计记账信息的最终状态并通知账户***,更改记账凭证的记账状态。
在本实施例中,凭证消费模块503通过异步消费记账凭证,有效实现了会计记账与业务处理的解耦;记账处理模块504通过将会计记账明细信息根据账户进行分类后分别推送至消息中间件的各消息分区中进行同步消费处理,提升了账务处理速度,缩短了会计记账的时间;同时在进行账户操作和对会计账户进行更新时均采用分布式锁,不仅实现了不同线程之间的互斥访问,保证了数据的幂等性,也避免了数据高并发情况下的锁竞争问题,保障了支付***整体的稳定性,有利于提升客户满意度。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指出。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种基于消息中间件与分布式锁的异构记账方法,其特征在于,包括如下步骤:
根据支付业务属性生成记账凭证,并写入数据库中进行保存;
基于所述记账凭证中的账户编号获取分布式锁,更新账户余额信息;
将所述记账凭证推送至消息中间件中进行消费,并将所述记账凭证的记账状态更新为记账中;
查询记账规则,通过所述记账规则对会计***中的会计账户进行更新;
修改会计记账信息的最终状态并通知账户***,完成记账。
2.根据权利要求1所述的异构记账方法,其特征在于,所述将所述记账凭证推送至消息中间件中进行消费,具体包括:
所述消息中间件监听是否有需要消费的所述记账凭证;
若有,则接收所述记账凭证并进行消费;生成所述会计记账信息与会计记账明细信息后写入所述数据库中进行保存;
查看所述记账凭证是否消费成功;
若失败,则将所述记账凭证回滚至消息队列中,等待下次业务执行时重新消费;
若成功,则向所述账户***发送所述记账凭证消费成功的通知,并将所述记账凭证的记账状态更新为记账中。
3.根据权利要求1所述的异构记账方法,其特征在于,所述更新账户余额信息是通过对所述账户余额进行增减操作来实现的。
4.根据权利要求1所述的异构记账方法,其特征在于,所述查询记账规则之前,还包括:将会计记账明细信息根据账户进行分类,并将分类好的所述会计记账明细信息分别推送至所述消息中间件的各消息分区中进行消费。
5.根据权利要求1或2所述的异构记账方法,其特征在于,所述查询记账规则是根据所述会计记账明细信息来查询得到的。
6.根据权利要求1所述的异构记账方法,其特征在于,所述通过所述记账规则对会计***中的会计账户进行更新,具体包括:
检查分布式锁是否处于闲置状态;
若否,则等待获取所述分布式锁;
若是,则获取所述分布式锁并对所述会计***中的会计账户进行加锁处理;
根据所述记账规则对所述会计账户进行借贷记操作,生成当前借贷记操作的会计分录信息后,更新所述会计账户和会计记账明细信息;
将所述会计分录信息、更新后的所述会计账户和所述会计记账明细信息写入所述数据库中进行保存,释放所述分布式锁。
7.根据权利要求1或4所述的异构记账方法,其特征在于,所述修改会计记账信息的最终状态之前,还包括:
检查所述会计记账明细信息是否均消费成功;
若所述消息中间件的任一消息分区中存在消费失败,则需回滚当前失败的所述会计记账明细信息,等待重新消费;
若所述会计记账明细信息均已消费成功,则将所述会计记账信息的最终状态修改为成功。
8.根据权利要求1所述的异构记账方法,其特征在于,所述完成记账之前还包括:所述账户***根据所述会计记账信息的最终状态更改所述记账凭证的记账状态,并写入所述数据库中进行保存。
9.根据权利要求4所述的异构记账方法,其特征在于,所述消息中间件的各消息分区中的消费处理是同步进行的。
10.一种基于消息中间件与分布式锁的异构记账***,其特征在于,包括:
凭证生成模块,用于根据支付业务属性生成记账凭证,并写入数据库中进行保存;
账户操作模块,用于基于所述记账凭证中的账户编号获取分布式锁,更新账户余额信息;
凭证消费模块,用于将所述记账凭证推送至消息中间件中进行消费,并将所述记账凭证的记账状态更新为记账中;
记账处理模块,用于查询记账规则,通过所述记账规则对会计***中的会计账户进行更新;
记账完成模块,用于修改会计记账信息的最终状态并通知账户***,完成记账。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410316197.3A CN117934190B (zh) | 2024-03-20 | 2024-03-20 | 一种基于消息中间件与分布式锁的异构记账方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410316197.3A CN117934190B (zh) | 2024-03-20 | 2024-03-20 | 一种基于消息中间件与分布式锁的异构记账方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117934190A true CN117934190A (zh) | 2024-04-26 |
CN117934190B CN117934190B (zh) | 2024-05-28 |
Family
ID=90761129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410316197.3A Active CN117934190B (zh) | 2024-03-20 | 2024-03-20 | 一种基于消息中间件与分布式锁的异构记账方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117934190B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107092533A (zh) * | 2017-03-29 | 2017-08-25 | 弘成科技发展有限公司 | 基于ActiveMQ+Redis的同步消息队列 |
CN110084692A (zh) * | 2019-04-11 | 2019-08-02 | 上海上湖信息技术有限公司 | 一种记账方法及装置 |
CN110992175A (zh) * | 2019-10-30 | 2020-04-10 | 成都摩宝网络科技有限公司 | 基于消息中间件的异步会计核算与交易分离方法及*** |
CN111127181A (zh) * | 2019-12-24 | 2020-05-08 | 中国建设银行股份有限公司 | 一种凭证记账方法和装置 |
CN112559540A (zh) * | 2020-12-10 | 2021-03-26 | 安徽兆尹信息科技股份有限公司 | 财务核算方法、***以及存储介质和电子设备 |
CN114048034A (zh) * | 2021-11-16 | 2022-02-15 | 中国银行股份有限公司 | 会计数据处理方法及装置 |
CN117435317A (zh) * | 2023-10-18 | 2024-01-23 | 支付宝(中国)网络技术有限公司 | 交易记账处理方法及装置 |
-
2024
- 2024-03-20 CN CN202410316197.3A patent/CN117934190B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107092533A (zh) * | 2017-03-29 | 2017-08-25 | 弘成科技发展有限公司 | 基于ActiveMQ+Redis的同步消息队列 |
CN110084692A (zh) * | 2019-04-11 | 2019-08-02 | 上海上湖信息技术有限公司 | 一种记账方法及装置 |
CN110992175A (zh) * | 2019-10-30 | 2020-04-10 | 成都摩宝网络科技有限公司 | 基于消息中间件的异步会计核算与交易分离方法及*** |
CN111127181A (zh) * | 2019-12-24 | 2020-05-08 | 中国建设银行股份有限公司 | 一种凭证记账方法和装置 |
CN112559540A (zh) * | 2020-12-10 | 2021-03-26 | 安徽兆尹信息科技股份有限公司 | 财务核算方法、***以及存储介质和电子设备 |
CN114048034A (zh) * | 2021-11-16 | 2022-02-15 | 中国银行股份有限公司 | 会计数据处理方法及装置 |
CN117435317A (zh) * | 2023-10-18 | 2024-01-23 | 支付宝(中国)网络技术有限公司 | 交易记账处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117934190B (zh) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US7900085B2 (en) | Backup coordinator for distributed transactions | |
US20100169284A1 (en) | Distributed transactional recovery system and method | |
CN111190935B (zh) | 数据读取方法、装置、计算机设备及存储介质 | |
CN111522631A (zh) | 分布式事务处理方法、装置、服务器及介质 | |
US11681683B2 (en) | Transaction compensation for single phase resources | |
CN111259071A (zh) | 一种分布式数据库***中的并发访问控制方法 | |
US7873604B2 (en) | Batch recovery of distributed transactions | |
CN113419823A (zh) | 一种适用于高并发事务的联盟链***及其设计方法 | |
CN110968603A (zh) | 一种数据访问方法及装置 | |
Bobineau et al. | A unilateral commit protocol for mobile and disconnected computing | |
CN115617571A (zh) | 一种数据备份方法、装置、***、设备及存储介质 | |
CN117934190B (zh) | 一种基于消息中间件与分布式锁的异构记账方法及*** | |
WO2022037173A1 (zh) | 存储集群运行时数据持久化的方法、装置、设备和介质 | |
CN113726828B (zh) | 一种支持微服务的高并发的可信区块链***及方法 | |
CN112632093A (zh) | 工单处理方法、设备、***、存储介质及程序产品 | |
CN112559496A (zh) | 一种分布式数据库事务原子性实现方法及装置 | |
CN112988775B (zh) | 处理批量交易的方法、计算设备和存储介质 | |
CN112131238B (zh) | 一种交易状态机设计方法、处理装置和处理方法 | |
CN112162988A (zh) | 一种分布式事务的处理方法、装置和电子设备 | |
CN114579260A (zh) | 一种事务处理方法及*** | |
CN106776052A (zh) | 共享资源访问方法和装置 | |
CN113190624A (zh) | 基于分布式跨容器的异步转同步调用方法及装置 | |
US7933873B2 (en) | Handling transfer of bad data to database partitions in restartable environments | |
CN113296895B (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 |