本发明涉及数据处理技术领域,特别是一种基于消息中间件的异步会计核算与交易分离方法及系统。
背景技术:
传统的是将交易和会计核算紧密耦合在一起,目前,金融机构采用与交易绑定的会计核算处理模式,将会计核算功能集成在各个交易系统中,但是当数据处理量过大时,这种方式就会存在很大的问题,交易性能不强,不能实现高可用、高并发、热插拔等功能,因此,急需一种技术将交易与会计核算进行分离,且可同时满足系统对数据强一致性的需求,另一方面为了保证分离后数据传输的保密性,需要对业务关键数据进行传输前和接收后的加解密处理,加解密使用基于sm4的算法。
技术实现要素:
为解决现有技术中存在的问题,本发明提供了一种基于消息中间件的异步会计核算与交易分离方法及系统,将交易与会计核算进行分离,以提高交易处理性能和效率,从而有针对性的分块解决复杂业务逻辑;采用消息补偿算法,为数据传输提供双重保障;对异步获取的每笔交易金额进行校验核算,若校验不通过,则会对指定账户进行锁定,保证账户数据的准确性以及安全性;同时对传输前后关键信息加解密处理,保证数据传输的安全性。
本发明采用的技术方案是:
一种基于消息中间件的异步会计核算与交易分离方法,包括以下步骤:
s1、获取客户交易信息,并将获取的基于国密的交易信息发送至交易场景数据库;
s2、通过消息中间件获取交易场景数据库中的实时交易场景信息,并以队列方式定时向会计系统发送实时交易场景信息;
s3、将接收到的实时交易场景信息进行数据解密,然后进行解析;
s4、判断解析后的数据信息是否合法,如果是,则进入步骤s5;如果否,则进入步骤s6;
s5、判断解析后的数据信息中的金额信息是否正确,如果是,则进入步骤s7;如果否,则进入步骤s6;
s6、向账务系统发送止付指令;
s7、将解析后的数据信息以会计分录的方式进行账务处理,并将处理后的信息发送至总账数据库。
获取客户的交易信息,并将获取的基于国密的交易信息发送至交易场景数据库,并判断是否为成功交易信息,将成功交易信息发送至交易场景数据库中,通过消息中间件获取交易场景数据库中的实时交易场景信息,并以队列方式定时向会计系统发送实时交易场景信息,会计系统接收到该实时交易场景信息后对该信息进行解析,同时检验数据的合法性和金额的正确性;若数据合法且金额正确,则表明校验通过,将解析的数据以会计分录的方式进行账务处理并记入总账;若数据不合法或金额不正确,则表明校验不通过,则激活特定目标锁定功能,向账务系统发出止付指令。
本方法主要用于将支付系统有关会计核算内容整体剥离,剥离到会计核算子系统,将交易处理和会计核算完全分离。在线交易记录交易场景,将交易场景利用消息中间件传递给会计核算子系统,会计核算子系统会计引擎模块根据会计分录生成规则生成会计分录,会计引擎系统自动对整套交易分录进行借贷平衡检查,分户账系统根据交易分录修改分户余额,总账模块根据分录入当日入总账。通过消息中间件完成从支付到核算子系统的单向的数据交换。实现高可用,高并发、热插拔。
进一步地,步骤s1包括以下步骤:
s11、获取客户交易信息;
s12、判断获取的客户交易信息是否为成功交易信息,如果是,则进入步骤s13;如果否,则告警提示,并进入步骤s11;
s13、将成功交易信息发送至交易场景数据库。
对获取的客户交易信息进行一个判断,判断是否为成功交易信息,保证后续工作的有效性。
进一步地,步骤s2包括以下步骤:
s21、通过消息中间件获取交易场景数据库中的实时交易场景信息;
s22、以队列方式定时向会计系统发送实时交易场景信息;
s23、判断交易场景信息是否发送成功,如果是,则进入步骤s3;如果否,则进入步骤s21。
支付系统交易场景会对消息中间件消息发送状态进行跟踪,如果没有反馈或反馈失败,则通过重发机制,对交易记录再次进行重发,保证数据传输的有效性。
进一步地,步骤s5包括以下步骤:
s51、预设一个核验次数值;
s52、判断解析后的数据信息中的金额信息是否正确,如果是,则进入步骤s7;如果否,则记录判断的次数,并进入步骤s53;
s53、判断记录的判断次数是否超过预设的核验次数值,如果是,则进入步骤s6;如果否,则进入步骤s52。
利用会计核算原则,对异步获取的每笔交易金额进行平衡检验,如果校验不通过则会通过重试机制,对账户金额进行重新核算和校验,尝试指定次数后,仍然校验不通过,则会激活特定目标锁定功能,触发消息中间件向支付系统发送止付指令,对指定账户进行锁定,直到金额核对成功。满足系统对数据强一致性的需求。
一种基于消息中间件的异步会计核算与交易分离系统,包括客户交易模块、交易场景模块、场景解析模块、合法判断模块、金额判断模块、止付模块和账务处理模块,其中:
客户交易模块,用于获取客户交易信息,并将获取的基于国密的交易信息发送至交易场景数据库;
交易场景模块,用于通过消息中间件获取交易场景数据库中的实时交易场景信息,并以队列方式定时向会计系统发送实时交易场景信息;
场景解析模块,用于将接收到的实时交易场景信息进行数据解密,并进行解析;
合法判断模块,用于判断解析后的数据信息是否合法,如果是,则金额判断模块工作;如果否,则止付模块工作;
金额判断模块,用于判断解析后的数据信息中的金额信息是否正确,如果是,则账务处理模块工作;如果否,则止付模块工作;
止付模块,用于向账务系统发送止付指令;
账务处理模块,用于将解析后的数据信息以会计分录的方式进行账务处理,并将处理后的信息发送至总账数据库。
通过客户交易模块获取客户的交易信息,并判断是否为成功交易信息,将成功交易信息发送至交易场景数据库中,交易场景模块通过消息中间件获取交易场景数据库中的实时交易场景信息,并以队列方式定时向会计系统发送实时交易场景信息,会计系统接收到该实时交易场景信息后通过场景解析模块对该信息进行解析,同时通过合法判断模块和金额判断模块分别检验数据的合法性和金额的正确性;若数据合法且金额正确,则表明校验通过,账务处理模块将解析的数据以会计分录的方式进行账务处理并记入总账;若数据不合法或金额不正确,则表明校验不通过,则激活特定目标锁定功能,止付模块向账务系统发出止付指令。
本系统主要用于将支付系统有关会计核算内容整体剥离,剥离到会计核算子系统,将交易处理和会计核算完全分离。在线交易记录交易场景,将交易场景利用消息中间件传递给会计核算子系统,会计核算子系统会计引擎模块根据会计分录生成规则生成会计分录,会计引擎系统自动对整套交易分录进行借贷平衡检查,分户账系统根据交易分录修改分户余额,总账模块根据分录入当日入总账。通过消息中间件完成从支付到核算子系统的单向的数据交换。实现高可用,高并发、热插拔。
进一步地,所述客户交易模块包括交易获取子模块、交易判断子模块和信息发送子模块,其中:
交易获取子模块,用于获取客户交易信息;
交易判断子模块,用于判断获取的客户交易信息是否为成功交易信息,如果是,则信息发送子模块;如果否,则告警提示,交易获取子模块工作;
信息发送子模块,用于将成功交易信息发送至交易场景数据库。
对获取的客户交易信息进行一个判断,判断是否为成功交易信息,保证后续工作的有效性。
进一步地,所述交易场景模块包括场景获取子模块、场景发送子模块和场景判断子模块,其中:
场景获取子模块,用于通过消息中间件获取交易场景数据库中的实时交易场景信息;
场景发送子模块,用于以队列方式定时向会计系统发送实时交易场景信息;
场景判断子模块,用于判断交易场景信息是否发送成功,如果是,则场景解析模块工作;如果否,则场景发送子模块工作。
支付系统交易场景会对消息中间件消息发送状态进行跟踪,如果没有反馈或反馈失败,则通过重发机制,对交易记录再次进行重发,保证数据传输的有效性。
进一步地,所述金额判断模块包括预设次数子模块、金额判断子模块和次数判断子模块,其中:
预设次数子模块,用于预设一个核验次数值;
金额判断子模块,用于判断解析后的数据信息中的金额信息是否正确,如果是,则账务处理模块工作;如果否,则记录判断的次数,次数判断子模块工作;
次数判断子模块,用于判断记录的判断次数是否超过预设的核验次数值,如果是,则止付模块工作;如果否,则金额判断子模块工作。
利用会计核算原则,对异步获取的每笔交易金额进行平衡检验,如果校验不通过则会通过重试机制,对账户金额进行重新核算和校验,尝试指定次数后,仍然校验不通过,则会激活特定目标锁定功能,触发消息中间件向支付系统发送止付指令,对指定账户进行锁定,直到金额核对成功。满足系统对数据强一致性的需求。
本发明的有益效果是:
1、通过消息中间件完成从支付到核算子系统的单向的数据交换,实现高可用、高并发、热插拔等功能;
2、基于kafka的分布式消息中间件,具有高性能、持久化、横向扩展能力好等优点,对会计核算与交易起到解耦、削峰、异步处理的作用;
3、采用消息补偿算法,为数据传输提供双重保障;
4、对异步获取的每笔交易金额进行校验核算,若校验不通过,则会对指定账户进行锁定,同时对传输前后关键信息加解密处理,保证账户数据的准确性以及安全性。
附图说明
图1为本发明实施例一种基于消息中间件的异步会计核算与交易分离方法的流程图;
图2为本发明实施例一种基于消息中间件的异步会计核算与交易分离系统的原理图。
附图标记说明:
10、客户交易模块;101、交易获取子模块;102、交易判断子模块;103、信息发送子模块;20、交易场景模块;201、场景获取子模块;202、场景发送子模块;203、场景判断子模块;30、场景解析模块;40、合法判断模块;50、金额判断模块;501、预设次数子模块;502、金额判断子模块;503、次数判断子模块;60、止付模块;70、账务处理模块。
具体实施方式
下面结合附图对本发明的实施例进行详细说明。
实施例
如图1所示,一种基于消息中间件的异步会计核算与交易分离方法,包括以下步骤:
s1、获取客户交易信息,并将获取的基于国密的交易信息发送至交易场景数据库;
s2、通过消息中间件获取交易场景数据库中的实时交易场景信息,并以队列方式定时向会计系统发送实时交易场景信息;
s3、将接收到的实时交易场景信息进行数据解密,并进行解析;
s4、判断解析后的数据信息是否合法,如果是,则进入步骤s5;如果否,则进入步骤s6;
s5、判断解析后的数据信息中的金额信息是否正确,如果是,则进入步骤s7;如果否,则进入步骤s6;
s6、向账务系统发送止付指令;
s7、将解析后的数据信息以会计分录的方式进行账务处理,并将处理后的信息发送至总账数据库。
获取客户的交易信息,并判断是否为成功交易信息,将成功交易信息发送至交易场景数据库中,通过消息中间件获取交易场景数据库中的实时交易场景信息,并以队列方式定时向会计系统发送实时交易场景信息,会计系统接收到该实时交易场景信息后对该信息进行解析,同时检验数据的合法性和金额的正确性;若数据合法且金额正确,则表明校验通过,将解析的数据以会计分录的方式进行账务处理并记入总账;若数据不合法或金额不正确,则表明校验不通过,则激活特定目标锁定功能,向账务系统发出止付指令。
基于kafka的分布式消息中间件,在支付交易处理成功后每记入一条交易场景记录,消息中间件就会将监听到的记录反馈给kafka,同时创建一条记录,在对应的文件append写,记录中要指定对应的topic和value,key和partition可选。先序列化,然后按照topic和partition,放进对应的发送队列中。produce都是批量请求,会积攒一批,然后一起发送,不是立刻进行网络发包。具有高性能、持久化、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。对会计核算与交易起到解耦、削峰、异步处理的作用。
本方法主要用于将支付系统有关会计核算内容整体剥离,剥离到会计核算子系统,将交易处理和会计核算完全分离。在线交易记录交易场景,将交易场景利用消息中间件传递给会计核算子系统,会计核算子系统会计引擎模块根据会计分录生成规则生成会计分录,会计引擎系统自动对整套交易分录进行借贷平衡检查,分户账系统根据交易分录修改分户余额,总账模块根据分录入当日入总账。通过消息中间件完成从支付到核算子系统的单向的数据交换。实现高可用,高并发、热插拔。
在其中一个实施例中,步骤s1包括以下步骤:
s11、获取客户交易信息;
s12、判断获取的客户交易信息是否为成功交易信息,如果是,则进入步骤s13;如果否,则告警提示,并进入步骤s11;
s13、将成功交易信息发送至交易场景数据库。
对获取的客户交易信息进行一个判断,判断是否为成功交易信息,保证后续工作的有效性。
在其中一个实施例中,步骤s2包括以下步骤:
s21、通过消息中间件获取交易场景数据库中的实时交易场景信息;
s22、以队列方式定时向会计系统发送实时交易场景信息;
s23、判断交易场景信息是否发送成功,如果是,则进入步骤s3;如果否,则进入步骤s21。
采用消息补偿算法,为数据传输提供双重保障。消息补偿算法是基于kafka和自研算法的一种算法,kafka维护了一个ar列表,包括所有的分区的副本,ar又分为isr和osr,也就是多副本同步方式。为保证数据的强一致性,有效防止数据丢失,设置kafka参数acks为-1,即等到isr里所有机器同步成功后,才能够返回成功。其中延时取决于最慢的机器,这里isr列表中的机器是会变化的,根据配置replica.lag.time.max.ms,多久没同步,就会从isr列表中剔除。此时自研算法开始发挥作用,支付系统交易场景会对消息中间件消息发送状态进行跟踪,如果没有反馈或反馈失败,则通过重发机制,对交易记录再次进行重发。
在其中一个实施例中,步骤s5包括以下步骤:
s51、预设一个核验次数值;
s52、判断解析后的数据信息中的金额信息是否正确,如果是,则进入步骤s7;如果否,则记录判断的次数,并进入步骤s53;
s53、判断记录的判断次数是否超过预设的核验次数值,如果是,则进入步骤s6;如果否,则进入步骤s52。
会计系统是为了内部核算管理的需要而设立的,与支付交易相互依赖。但是交易与会计核算分离之后势必会导致两个独立系统错记漏记问题,不能满足系统对数据强一致性的需求,交易错误止付特定目标技术就是为了满足这个需求应用而生的。交易错误止付特定目标技术是指利用会计核算原则,对异步获取的每笔交易金额进行平衡检验,如果校验不通过则会通过重试机制,对账户金额进行重新核算和校验,尝试指定次数后,仍然校验不通过,则会激活特定目标锁定功能,触发消息中间件向支付系统发送止付指令,对指定账户进行锁定,直到金额核对成功,满足系统对数据强一致性的需求。
如图2所示,一种基于消息中间件的异步会计核算与交易分离系统,包括客户交易模块10、交易场景模块20、场景解析模块30、合法判断模块40、金额判断模块50、止付模块60和账务处理模块70,其中:
客户交易模块10,用于获取客户交易信息,并将获取的基于国密的交易信息发送至交易场景数据库;
交易场景模块20,用于通过消息中间件获取交易场景数据库中的实时交易场景信息,并以队列方式定时向会计系统发送实时交易场景信息;
场景解析模块30,用于将接收到的实时交易场景信息进行数据解密,并进行解析;
合法判断模块40,用于判断解析后的数据信息是否合法,如果是,则金额判断模块50工作;如果否,则止付模块60工作;
金额判断模块50,用于判断解析后的数据信息中的金额信息是否正确,如果是,则账务处理模块70工作;如果否,则止付模块60工作;
止付模块60,用于向账务系统发送止付指令;
账务处理模块70,用于将解析后的数据信息以会计分录的方式进行账务处理,并将处理后的信息发送至总账数据库。
通过客户交易模块10获取客户的交易信息,并判断是否为成功交易信息,将成功交易信息发送至交易场景数据库中,交易场景模块20通过消息中间件获取交易场景数据库中的实时交易场景信息,并以队列方式定时向会计系统发送实时交易场景信息,会计系统接收到该实时交易场景信息后通过场景解析模块30对该信息进行解析,同时通过合法判断模块40和金额判断模块50分别检验数据的合法性和金额的正确性;若数据合法且金额正确,则表明校验通过,账务处理模块70将解析的数据以会计分录的方式进行账务处理并记入总账;若数据不合法或金额不正确,则表明校验不通过,则激活特定目标锁定功能,止付模块60向账务系统发出止付指令。
本系统主要用于将支付系统有关会计核算内容整体剥离,剥离到会计核算子系统,将交易处理和会计核算完全分离。在线交易记录交易场景,将交易场景利用消息中间件传递给会计核算子系统,会计核算子系统会计引擎模块根据会计分录生成规则生成会计分录,会计引擎系统自动对整套交易分录进行借贷平衡检查,分户账系统根据交易分录修改分户余额,总账模块根据分录入当日入总账。通过消息中间件完成从支付到核算子系统的单向的数据交换。实现高可用,高并发、热插拔。将交易与会计核算进行分离,以提高交易处理性能和效率,从而有针对性的分块解决复杂业务逻辑;采用消息补偿算法,为数据传输提供双重保障;对异步获取的每笔交易金额进行校验核算,若校验不通过,则会对指定账户进行锁定,保证账户数据的准确性以及安全性;同时对传输前后关键信息加解密处理,保证数据传输的安全性。
在其中一个实施例中,所述客户交易模块10包括交易获取子模块101、交易判断子模块102和信息发送子模块103,其中:
交易获取子模块101,用于获取客户交易信息;
交易判断子模块102,用于判断获取的客户交易信息是否为成功交易信息,如果是,则信息发送子模块103;如果否,则告警提示,交易获取子模块101工作;
信息发送子模块103,用于将成功交易信息发送至交易场景数据库。
对获取的客户交易信息进行一个判断,判断是否为成功交易信息,保证后续工作的有效性。
在其中一个实施例中,所述交易场景模块20包括场景获取子模块201、场景发送子模块202和场景判断子模块203,其中:
场景获取子模块201,用于通过消息中间件获取交易场景数据库中的实时交易场景信息;
场景发送子模块202,用于以队列方式定时向会计系统发送实时交易场景信息;
场景判断子模块203,用于判断交易场景信息是否发送成功,如果是,则场景解析模块30工作;如果否,则场景发送子模块202工作。
支付系统交易场景会对消息中间件消息发送状态进行跟踪,如果没有反馈或反馈失败,则通过重发机制,对交易记录再次进行重发,保证数据传输的有效性。
在其中一个实施例中,所述金额判断模块50包括预设次数子模块501、金额判断子模块502和次数判断子模块503,其中:
预设次数子模块501,用于预设一个核验次数值;
金额判断子模块502,用于判断解析后的数据信息中的金额信息是否正确,如果是,则账务处理模块70工作;如果否,则记录判断的次数,次数判断子模块503工作;
次数判断子模块503,用于判断记录的判断次数是否超过预设的核验次数值,如果是,则止付模块60工作;如果否,则金额判断子模块502工作。
利用会计核算原则,对异步获取的每笔交易金额进行平衡检验,如果校验不通过则会通过重试机制,对账户金额进行重新核算和校验,尝试指定次数后,仍然校验不通过,则会激活特定目标锁定功能,触发消息中间件向支付系统发送止付指令,对指定账户进行锁定,直到金额核对成功。满足系统对数据强一致性的需求。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。