一种高可用的账单系统及账单生成处理方法技术方案

技术编号:18575967 阅读:31 留言:0更新日期:2018-08-01 10:59
本发明专利技术公开了一种高可用的账单系统及账单生成处理方法,方法包括:账单即时生成:在批量生成账单之前,调用BillGenSDK中的API即时生成账单,推送账单即时生成消息到消息队列,在Redis数据库中缓存即时生成的账单;账单批量生成:调用BillGenSDK中的API批量生成账单,并存储到Mysql数据库中;且对于已经缓存在Redis数据库中的即时生成的账单,通过消费消息的方式,持久化存储到MySQL数据库中。本发明专利技术减少了对账单生成模块的强依赖,提高了账单展示的可用性;同时,实现即时生成账单的缓存和持久化,避免重复生成账单,提高生成效率;降低查询响应时间;保证账单正常展示,提高账单系统可用性,提升用户体验。

A highly available billing system and bill generation processing method

The invention discloses a highly available billing system and billing generation processing method. The method includes: billing real-time generation: invoking API real-time generating bills in BillGenSDK before batch generating bills, pushing bills to generate messages to message queues immediately, caching immediate generated bills in the Redis database; billing batches. Volume generation: the API batch generation bill in BillGenSDK is generated and stored in the Mysql database; and the bills that have been cached in the Redis database are persisted to the MySQL database through the consumption message. The invention reduces the strong dependence on the bill generation module and improves the availability of the bill display; at the same time, it realizes the cache and persistence of the immediate generation of bills, avoids the repeated generation of bills, improves the generation efficiency, reduces the response time of the query, ensures the normal presentation of the bill, improves the availability of the bill system, and improves the user experience.

【技术实现步骤摘要】
一种高可用的账单系统及账单生成处理方法
本专利技术涉及金融交易控制领域,具体涉及一种高可用的账单系统及账单生成处理方法。
技术介绍
目前账单系统的主要功能在于用户账单的展示,通常高度依赖于用户交易汇总数据,现有的解决方案是:定时任务模块通过定时任务在用户的账单日定时生成月账单和个人账单,并持久化到mySQL数据库,账单系统再以用户和账单年月等维度进行查询,这种解决方案的实现方式比较直观、简单,账单生成系统和交易系统以及账单系统的耦合度较低。但是,随着用户数量的快速增长,账单的生成时间会不断增加,将会导致出账所需时间不断延长,同时,异常账单和交易的发生几率也会增加,在用户生成账单的过程中,如果发生还款、退款等交易行为,则需要进行特殊处理;当用户进行查询操作时,账单系统的当月账单查询功能也会处于长时间的不可用状态,可用性较差,严重影响到用户体验。
技术实现思路
本专利技术所要解决的技术问题是现有的账单系统发生异常账单和交易的几率较高,可用性较差,严重影响到用户体验的问题。为了解决上述技术问题,本专利技术所采用的技术方案是提供一种高可用的账单系统,包括:账单即时生成模块,在批量生成账单之前,调用BillGenSDK中的API即时生成账单,并进行消息推送和缓存;Redis数据库,存储所述账单即时生成模块即时生成的账单和已经持久化的账单;消息推送模块,推送账单即时生成消息到消息队列;缓存账单获取模块,根据接收到的所述消息推送模块推送的账单即时生成消息,获取所述Redis数据库中的缓存账单并持久化;账单批量生成模块,通过任务的方式,调用BillGenSDK中的API批量生成账单,并存储到Mysql数据库中;同时,对于已经缓存在Redis数据库中的即时生成的账单,通过消费消息的方式,持久化存储到MySQL数据库中。在上述技术方案中,还包括MySQL数据库,存储所述账单即时生成模块即时生成的账单和所述账单生成模块已经持久化的账单。本专利技术还提供了一种高可用的账单生成处理方法,包括以下步骤:账单即时生成:在批量生成账单之前,调用BillGenSDK中的API即时生成账单,推送账单即时生成消息到消息队列,并在Redis数据库中缓存即时生成的账单;账单批量生成:通过任务的方式,调用BillGenSDK中的API批量生成账单,并存储到Mysql数据库中;同时,对于已经缓存在Redis数据库中的即时生成的账单,通过消费消息的方式,持久化存储到MySQL数据库中。在上述技术方案中,还包括以下步骤:步骤一、对账单进行查询;步骤二、判断安全校验是否通过,若校验已通过,则转步骤三;否则,返回查询结果;步骤三、判断用户是否已经批量生成了持久化存储在MySQL数据库中的月账单,如果有,转步骤四;否则,非完整账单生成,并返回查询结果;步骤四、判断账单是否已生成,如果是,则查询缓存账单;否则,调用BillGenSDK中的API即时生成账单。在上述技术方案中,将即时生成的账单和已经持久化的账单存储到MySQL数据库中。本专利技术提出了一种高可用的账单系统及账单生成处理方法,该方法包括:账单即时生成:在批量生成账单之前,调用BillGenSDK中的API即时生成账单,推送账单即时生成消息到消息队列,并在Redis数据库中缓存即时生成的账单;账单批量生成:通过任务的方式,调用BillGenSDK中的API批量生成账单,并存储到Mysql数据库中;同时,对于已经缓存在Redis数据库中的即时生成的账单,通过消费消息的方式,持久化存储到MySQL数据库中。本专利技术通过抽象出公用的账单生成逻辑BillGenSDK,减少对账单生成模块的强依赖,提高账单展示的可用性。同时,利用Redis缓存和消息队列,实现即时生成账单的缓存和持久化,避免重复生成账单,提高生成效率;此外,Redis缓存还用于缓存用户高频查询的账单,从而降低查询响应时间;保证账单的7*24正常展示,提高账单系统可用性,提升用户体验。附图说明图1为本专利技术中一种高可用的账单生成处理方法流程图;图2为本专利技术中高可用的账单系统结构示意图。具体实施方式为了解决现有的账单系统随着用户数量的快速增长,账单的生成时间不断增加,导致出账所需时间不断延长,同时,异常账单和交易的发生几率也会增加,在用户生成账单的过程中,如果发生还款、退款等交易行为,需要进行特殊处理;当用户进行查询操作时,账单系统的当月账单查询功能也会处于长时间的不可用状态,发生异常账单和交易的几率较高,可用性差,严重影响到用户体验的问题。本专利技术提出了一种高可用的账单系统及账单生成处理方法,该方法包括:账单即时生成:在批量生成账单之前,调用BillGenSDK中的API即时生成账单,推送账单即时生成消息到消息队列,并在Redis数据库中缓存即时生成的账单;账单批量生成:通过任务的方式,调用BillGenSDK中的API批量生成账单,并存储到Mysql数据库中;同时,对于已经缓存在Redis数据库中的即时生成的账单,通过消费消息的方式,持久化存储到MySQL数据库中。本专利技术通过抽象出公用的账单生成逻辑BillGenSDK,减少对账单生成模块的强依赖,提高账单展示的可用性。同时,利用Redis缓存和消息队列,实现即时生成账单的缓存和持久化,避免重复生成账单,提高生成效率;此外,Redis缓存还用于缓存用户高频查询的账单,从而降低查询响应时间;保证账单的7*24正常展示,提高账单系统可用性,提升用户体验。下面结合说明书附图和具体实施方式对本专利技术做出详细的说明。本专利技术实施例提供了一种高可用的账单生成处理方法,如图1所示,包括以下步骤:账单即时生成:S1、对账单进行查询。S2、判断安全校验是否通过,若校验已通过,转S3;否则;转S8。S3、判断用户是否已经批量生成了持久化存储在MySQL数据库中的月账单,如果有,转S4;否则,转S9。S4、判断账单是否已生成,如果是,转S10;否则,转S5。S5、调用BillGenSDK中的API即时生成账单。S6、推送账单即时生成消息到消息队列,转S7。S7、缓存即时生成的账单,并存储在Redis数据库中。S8、返回查询结果。S9、非完整账单生成,转S8。非完整账单生成,表示批量任务正在生成,包括生成完毕的状态和处于生成中的状态。S10、查询用户的缓存账单。S11、判断用户的缓存账单是否已经在Redis数据库中,如果是,转S8;否则,转S12。S12、查询MySQL数据库中的账单,转S8。如果用户的账单已经在Redis数据库中了,则直接到Redis数据库中去读取,不再查询MySQL数据库。账单生成:S13、根据获取到的消息队列中的账单即时生成消息,获取Redis数据库中的缓存账单。S14、将缓存账单持久化到MySQL数据库中。S15、调用BillGenSDK中的API生成账单,并将生成的账单持久化到MySQL数据库中。本专利技术实施例还提供了一种高可用的账单系统,如图2所示,包括:账单即时生成模块10,在批量生成账单之前,调用BillGenSDK中的API即时生成账单,并进行消息推送和缓存;Redis数据库20,存储账单即时生成模块10即时生成的账单和已经持久化的账单;消息推送模块30,推送账单即时生成消息到消息队列;缓存账单获取模块4本文档来自技高网...

【技术保护点】
1.一种高可用的账单系统,其特征在于,包括:账单即时生成模块,在批量生成账单之前,调用BillGenSDK中的API即时生成账单,并进行消息推送和缓存;Redis数据库,存储所述账单即时生成模块即时生成的账单和已经持久化的账单;消息推送模块,推送账单即时生成消息到消息队列;缓存账单获取模块,根据接收到的所述消息推送模块推送的账单即时生成消息,获取所述Redis数据库中的缓存账单并持久化;账单批量生成模块,通过任务的方式,调用BillGenSDK中的API批量生成账单,并存储到Mysql数据库中;同时,对于已经缓存在Redis数据库中的即时生成的账单,通过消费消息的方式,持久化存储到MySQL数据库中。

【技术特征摘要】
1.一种高可用的账单系统,其特征在于,包括:账单即时生成模块,在批量生成账单之前,调用BillGenSDK中的API即时生成账单,并进行消息推送和缓存;Redis数据库,存储所述账单即时生成模块即时生成的账单和已经持久化的账单;消息推送模块,推送账单即时生成消息到消息队列;缓存账单获取模块,根据接收到的所述消息推送模块推送的账单即时生成消息,获取所述Redis数据库中的缓存账单并持久化;账单批量生成模块,通过任务的方式,调用BillGenSDK中的API批量生成账单,并存储到Mysql数据库中;同时,对于已经缓存在Redis数据库中的即时生成的账单,通过消费消息的方式,持久化存储到MySQL数据库中。2.如权利要求1所述的高可用的账单系统,其特征在于,还包括MySQL数据库,存储所述账单即时生成模块即时生成的账单和所述账单生成模块已经持久化的账单。3.一种高可用的账单生成处理方法,其特征在于,包括以下步骤:账单即时生成:在批量生成账单之前,调用Bi...

【专利技术属性】
技术研发人员:彭雨姚艳豪孔之源
申请(专利权)人:广州品唯软件有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1