一种业务处理方法及系统与流程

文档序号:14325062阅读:173来源:国知局

本发明涉及数据处理技术领域,特别涉及一种业务处理方法及系统。



背景技术:

在web系统中,应用数据量在不断增长,由于系统业务的复杂性和多样性,经常需要对一条业务数据的多种业务形态进行跟踪处理,或者是根据数据的状态变化做后续的业务判断,因此,对于数据的实时性,一致性和准确性的要求越来越高,开发的成本也在逐渐增大。

现有的业务处理方法,方案可以是:

s1、业务应用子系统根据接收到的业务请求进行业务处理,根据处理之后的数据对数据库进行更改操作,如果判断更改操作成功则执行步骤s2;如果判断更改操作未成功则进行数据回滚,直至判断更改操作成功;

s2、业务应用子系统向消息队列子系统发送数据库更改内容,如果发送成功则执行步骤s3;如果发送失败,则进行数据回滚,直至发送成功;

s3、在应用子系统向消息队列子系统发送数据库更改内容消息成功后,才在数据库进行更改操作;

s4、消息队列子系统将接收到的数据库更改内容发送给消息订阅者。

由上述可以看出,现有技术中业务应用子系统对数据库进行更改操作的逻辑和业务应用子系统向消息队列子系统发送数据库更改内容消息的逻辑融合在一起,使业务代码不够清晰,另外对于异常的处理判断较为复杂,当业务应用子系统对数据库进行更改操作的逻辑或者业务应用子系统向消息队列子系统发送数据库更改内容消息的逻辑发生异常时均要进行数据的回滚,在业务应用子系统发送消息操作失败时,会进行数据回滚,无法对数据库进行更改操作,直至步骤s2中消息发送成功才能在对数据库进行更改操作。



技术实现要素:

本发明的目的在于提供一种业务处理方法及系统,能够确保对数据库进行更改操作不受向消息队列子系统发送数据库更改内容消息操作的影响。

为实现上述发明目的,本发明提供了一种业务处理方法,该方法包括:业务应用子系统根据接收到的业务请求进行业务处理,根据处理之后的数据对数据库进行更改操作,在更改操作成功后形成数据库的二进制日志文件;所述二进制日志文件记录了对数据库的更改操作,所述二进制日志文件包括:有数据变化的数据库表名,有数据变化的字段名称及字段值,对数据库的操作类型;数据监控子系统实时监控抽取所述二进制日志文件,对所述二进制日志文件进行解析,获取数据库更改内容,并发送给消息队列子系统;消息队列子系统将接收到的数据库更改内容发送给消息订阅者。

为实现上述发明目的,本发明还提供了一种业务处理系统,该系统包括:业务应用子系统,根据接收到的业务请求进行业务处理,根据处理之后的数据对数据库进行更改操作,在更改操作成功后形成数据库的二进制日志文件;所述二进制日志文件记录了对数据库的更改操作,所述二进制日志文件包括:有数据变化的数据库表名,有数据变化的字段名称及字段值,对数据库的操作类型;数据监控子系统,实时监控抽取所述二进制日志文件,对所述二进制日志文件进行解析,获取数据库更改内容,并发送给消息队列子系统;消息队列子系统,将接收到的数据库更改内容发送给消息订阅者。

综上所述,本发明提供的业务处理方法及系统,业务应用子系统根据接收到的业务请求进行业务处理,根据处理之后的数据对数据库进行更改操作,在更改操作成功后形成数据库的二进制日志文件;所述二进制日志文件记录了对数据库的更改操作;数据监控子系统实时监控抽取所述二进制日志文件,对所述二进制日志文件进行解析,获取数据库更改内容,并发送给消息队列子系统;消息队列子系统将接收到的数据库更改内容发送给消息订阅者。因此,本发明的方案与现有技术相比,通过在整个业务处理系统中,增加数据监控子系统,当数据库发生数据变动时,通过数据监控子系统获取二进制日志文件,进行数据解析,向消息队列子系统发送数据库更改内容消息。如此,将对数据库进行更改操作与向消息队列子系统发送数据库更改内容消息的操作独立,对数据库进行更改操作成功后才会写入二进制日志文件,向消息队列子系统发送数据库更改内容消息的操作在对数据库进行更改操作之后进行,不影响对数据库进行更改操作。

附图说明

图1为本发明业务处理方法的流程示意图。

图2为本发明业务处理系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。

本发明业务处理过程将对数据库进行更改操作与向消息队列子系统发送数据库更改内容消息的操作独立,对数据库进行更改操作成功后才会写入二进制日志文件,向消息队列子系统发送数据库更改内容消息的操作在对数据库进行更改操作之后进行,不影响对数据库进行更改操作。本发明数据库采用mysql数据库,mysql数据库有各种不同类型的日志文件:错误日志、二进制日志、查询日志、慢查询日志、redo日志等,根据这些日志可以查询mysql数据库执行的操作以及状态等信息,对于mysql数据库的管理和维护来说,这些日志文件都是不可或缺的。其中,二进制日志(binlog),记录了对mysql数据库的更改操作,例如:创建数据库或表(create)、插入操作(insert)、更新操作(update)、删除操作(delete)等操作类型,每个更改操作都以一条记录的形式写入二进制日志文件中,每条记录中都包含了当前记录更新的时间戳、该记录在当前二进制日志文件中的位置(即:偏移量)以及与数据库更改操作相关的其他信息。mysql数据库通常有一个或者多个二进制日志文件,不同的二进制日志文件通过文件扩展名采用不同的数字编号形式加以区分,例如:mysql-bin.00001。使用上述二进制日志文件,一方面可以实现mysql数据库的数据恢复功能,另一方面可以通过主备复制实现mysql主备数据库的数据一致性。

本发明业务处理方法流程示意图如图1所示:

步骤11、业务应用子系统根据接收到的业务请求进行业务处理,根据处理之后的数据对数据库进行更改操作,在更改操作成功后形成数据库的二进制日志文件;所述二进制日志文件记录了对数据库的更改操作;

业务应用子系统根据处理之后的数据对数据库进行更改操作时,如果更改操作未成功,则进行数据回滚,直至更改操作成功。

步骤12、数据监控子系统实时监控抽取所述二进制日志文件,对所述二进制日志文件进行解析,获取数据库更改内容,并发送给消息队列子系统。

其中,数据库中可以有多张业务表,进一步地,根据具体应用,数据监控子系统预设有要监控的数据库表名;数据监控子系统根据预设的数据库表名实时监控抽取该数据库表名对应的二进制日志文件。

对所述二进制日志文件进行解析可以得到:有数据变化的数据库表名,有数据变化的字段名称及字段值,对数据库的操作类型。进一步地,数据监控子系统根据解析得到的二进制日志文件获取数据库更改内容包括:有数据变化的字段名称及字段值。

数据监控子系统可以通过消息队列(mq)将数据库更改内容发送给消息队列子系统,当发送给消息队列子系统失败时,进行数据回滚,直至发送成功。或者,数据监控子系统也可以根据具体应用场景将数据库更改内容通过邮件或者短信的形式发送给消息队列子系统,以进行邮件或者短信提醒。

消息队列(mq)是一种应用程序对应用程序的通信方法。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。所以本发明数据监控子系统和消息队列子系统间的通信通过mq进行,mq具有高可用、高性能,无须担心调用失败或者处理超时等问题。

步骤13、消息队列子系统将接收到的数据库更改内容发送给消息订阅者。

基于同样的发明构思,本发明还提供了一种业务处理系统,结构示意图如图2所示,该系统包括:

业务应用子系统201,根据接收到的业务请求进行业务处理,根据处理之后的数据对数据库进行更改操作,在更改操作成功后形成数据库的二进制日志文件;所述二进制日志文件记录了对数据库的更改操作,所述二进制日志文件包括:有数据变化的数据库表名,有数据变化的字段名称及字段值,对数据库的操作类型;

数据监控子系统202,实时监控抽取所述二进制日志文件,对所述二进制日志文件进行解析,获取数据库更改内容,并发送给消息队列子系统;

消息队列子系统203,将接收到的数据库更改内容发送给消息订阅者。

所述业务应用子系统201,根据处理之后的数据对数据库进行更改操作时,如果更改操作未成功,则进行数据回滚,直至更改操作成功。

所述数据监控子系统202,预设有要监控的数据库表名;所述数据监控子系统202,还用于根据预设的数据库表名实时监控抽取该数据库表名对应的二进制日志文件。

所述数据监控子系统202,获取数据库更改内容包括:有数据变化的字段名称及字段值。

所述数据监控子系统202,将数据库更改内容发送给消息队列子系统失败时,进行数据回滚,直至发送成功。

为清楚说明本发明,下面列举具体应用场景进行说明。本实施例中:

1)业务应用子系统接收到获取剩余库存量的业务请求,根据本次消耗的库存量以及当前库存量,将当前库存量减去本次消耗的库存量得到剩余库存量。

2)业务应用子系统对数据库进行更改操作,更新mysql数据库中库存表中的剩余库存量。

3)更新不成功,则进行数据回滚,直至更新成功。更新成功后,形成mysql数据库的二进制日志文件,该二进制日志文件包括:有数据变化的数据库表名为库存表,有数据变化的字段名称为剩余库存量,字段值为更新前后剩余库存量的值,对数据库的操作类型为更新。在数据库更新成功时,该二进制日志文件中还包括有更新成功的标志。

其中,数据回滚的方式有多种,可以是,给业务应用子系统提示,更新数据库未成功,则业务应用子系统重新根据业务请求进行业务处理,直至后续更新;也可以是,业务应用子系统重新向数据库发送更新请求。

4)数据库中可以有多张业务表,包括但不限于库存表,假设数据库中有10张业务表,可以预设数据监控子系统只监控库存表,当其他业务表也有数据变动形成二进制日志文件时,数据监控子系统可以不监控,只监控抽取库存表对应的二进制日志文件。

5)数据监控子系统对库存表对应的二进制日志文件进行解析,得到有数据变化的数据库表名为库存表,有数据变化的字段名称为剩余库存量,字段值为更新前后剩余库存量的值,对数据库的操作类型为更新。然后,数据监控子系统将该数据库更改内容通过java程序拼接成json字符串或封装成java对象通过mq发送给消息队列子系统。当发送给消息队列子系统失败时,进行数据回滚,直至发送成功。当然,数据监控子系统也可以根据具体应用场景将数据库更改内容通过邮件或者短信的形式发送给消息队列子系统,以进行邮件或者短信提醒。

6)订阅者通过消息队列子系统获取消息分析数据,进行数据的再处理或持久化。

由此,完成了本发明的业务处理方案。

由上述实施例可以看出,业务应用子系统对数据库进行更改操作失败时,自动进行数据回滚,就不会形成二进制日志文件,因而就不会触发数据监控子系统向消息队列子系统发送数据库更改内容消息的操作。只有业务应用子系统对数据库进行更改操作成功,才会写入二进制日志文件,进而触发数据监控子系统向消息队列子系统发送数据库更改内容消息的操作。也就是说,向消息队列子系统发送数据库更改内容消息的操作在对数据库进行更改操作之后进行,不影响对数据库进行更改操作。

需要说明的是,mysql数据库的binlog日志解析需要一定开发能力,可采用canal工具或其他框架。另外,消息队列子系统可以采用主流技术框架kafka,以保证实时性和准确性。

本发明的业务处理方法,会带来如下好处:

一、本发明的业务处理方法,对数据库进行更改操作的逻辑和向消息队列子系统发送数据库更改内容消息的逻辑两者是独立的,使代码程序逻辑更加清晰。而现有技术中对数据库进行更改操作的逻辑和向消息队列子系统发送数据库更改内容消息的逻辑融合在一起,业务代码不够清晰。而且现有技术只有业务应用子系统向消息队列子系统发送数据库更改内容成功才能在对数据库进行更改操作,影响数据库生产数据。

二、通过数据监控子系统统一获取的二进制日志文件进行数据库更改内容的发送,使业务处理更加迅速可靠。

三、本发明的方案,假设整个原始系统只有业务应用子系统,没有消息处理机制,则,可以在不修改原有业务应用子系统的基础上,增加数据监控子系统和消息队列子系统,数据监控子系统直接监控二进制日志文件,向消息队列子系统发送消息,对原有业务应用子系统的破坏性比较小,具有灵活的扩展性。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1