本发明涉及云平台服务计费,具体为云平台服务账单处理方法及系统。
背景技术:
1、在云平台服务能力及功能日趋强大和多样的今天,越来越多的公司企业、政府、卫生、医疗单位选择购买云服务器、云硬盘、云数据库等云服务产品来搭建自己的网站门户、办公程序。
2、现有技术中,云平台一般会提供了两类计费方式,一类是预付费(即包年包月),一类是后付费(即按需计费),后付费方式中有一种按小时计费方式,即每小时会批量产生一次账单。
3、但是,随着用户购买的按需服务产品越来越多,账单量随之成倍增加,作为云平台运营环节中设计账户金额交易的一个环节,就需要一套高效高可用、严谨的后台处理逻辑。
技术实现思路
1、本发明的目的在于提供云平台服务账单处理方法及系统,以解决上述背景技术中提出的问题。
2、为实现上述目的,本发明提供如下技术方案:云平台服务账单处理方法,该处理方法包括以下步骤:
3、计量数据放入redis服务器、发送mq;
4、逐条计算订单本期账单的费用;
5、逐条生成账单数据存到业务表中;
6、获取用户账单业务表中未支付的账单列表,进行逐条扣款。
7、优选的,定时任务微服务每小时整点触发,先获已购买取按小时计费服务的用户,然后以用户为单位获取其需本次生成账单的所有订单信息列表,每1000条拆成一组数据,设置唯一的key,比如“本次账单编号”+“用户id”+“第几组”,把订单数据存入redis数据库中,数据过期时间为30分钟;以此key为mq的message发送到queue_1中。
8、优选的,以message作为redis的key获取用户订单信息列表,逐条计算订单本期账单的费用后,再set到redis数据库中,然后以此key为mq的message发送到queue_2中。
9、优选的,以message作为redis的key获取已含费用的用户订单信息列表,逐条生成账单数据存到业务表中,然后以此key为mq的message发送到queue_3中。
10、优选的,获取message后解析出其中的userid,然后通过userid获取该用户账单业务表中未支付的账单列表,进行逐条扣款;若账户余额充足,则本组数据业务流程结束;若账户余额不足以扣除全部的账单,则向订单模块发送欠费停服mq,停服后不再产生账单。
11、一种云平台服务账单处理系统,该系统由定时任务模块、产品模块、账单模块以及账户模块构成;
12、定时任务模块,用于计量数据放入redis服务器、发送mq;
13、产品模块,用于逐条计算订单本期账单的费用;
14、账单模块,用于逐条生成账单数据存到业务表中;
15、账户模块,用于获取用户账单业务表中未支付的账单列表,进行逐条扣款。
16、优选的,所述定时任务模块中,定时任务微服务每小时整点触发,先获已购买取按小时计费服务的用户,然后以用户为单位获取其需本次生成账单的所有订单信息列表,每1000条拆成一组数据,设置唯一的key,比如“本次账单编号”+“用户id”+“第几组”,把订单数据存入redis数据库中,数据过期时间为30分钟;以此key为mq的message发送到queue_1中。
17、优选的,所述产品模块中,以message作为redis的key获取用户订单信息列表,逐条计算订单本期账单的费用后,再set到redis数据库中,然后以此key为mq的message发送到queue_2中。
18、优选的,所述账单模块中,以message作为redis的key获取已含费用的用户订单信息列表,逐条生成账单数据存到业务表中,然后以此key为mq的message发送到queue_3中。
19、优选的,所述账户模块中,获取message后解析出其中的userid,然后通过userid获取该用户账单业务表中未支付的账单列表,进行逐条扣款;若账户余额充足,则本组数据业务流程结束;若账户余额不足以扣除全部的账单,则向订单模块发送欠费停服mq,停服后不再产生账单。
20、与现有技术相比,本发明的有益效果是:
21、本发明提出的云平台服务账单处理方法及系统通过多微服务模块多节点的设计方式,使业务梳理起来更加清晰,有效的降低程序的业务耦合度和复杂度,当数据量更高的时候,只需要增加服务模块的节点即可,提高了系统扩展能力。使用基于消息队列的方式后,系统间调用的问题会减少很多,比如账户模块因为发生故障,需要几分钟来修复。在这几分钟的时间里,账户模块要处理的内存被缓存在消息队列中,账户模块恢复后,继续处理账单信息,可以显著提高系统可靠性,运行平稳性。
1.云平台服务账单处理方法,其特征在于,该处理方法包括以下步骤:
2.根据权利要求1所述的云平台服务账单处理方法,其特征在于:定时任务微服务每小时整点触发,先获已购买取按小时计费服务的用户,然后以用户为单位获取其需本次生成账单的所有订单信息列表,每1000条拆成一组数据,设置唯一的key,比如“本次账单编号”+“用户id”+“第几组”,把订单数据存入redis数据库中,数据过期时间为30分钟;以此key为mq的message发送到queue_1中。
3.根据权利要求1所述的云平台服务账单处理方法,其特征在于:以message作为redis的key获取用户订单信息列表,逐条计算订单本期账单的费用后,再set到redis数据库中,然后以此key为mq的message发送到queue_2中。
4.根据权利要求1所述的云平台服务账单处理方法,其特征在于:以message作为redis的key获取已含费用的用户订单信息列表,逐条生成账单数据存到业务表中,然后以此key为mq的message发送到queue_3中。
5.根据权利要求1所述的云平台服务账单处理方法,其特征在于:获取message后解析出其中的userid,然后通过userid获取该用户账单业务表中未支付的账单列表,进行逐条扣款;若账户余额充足,则本组数据业务流程结束;若账户余额不足以扣除全部的账单,则向订单模块发送欠费停服mq,停服后不再产生账单。
6.一种如上述权利要求1-5任意一项所述的云平台服务账单处理系统,其特征在于:该系统由定时任务模块、产品模块、账单模块以及账户模块构成;
7.根据权利要求6所述的云平台服务账单处理系统,其特征在于:所述定时任务模块中,定时任务微服务每小时整点触发,先获已购买取按小时计费服务的用户,然后以用户为单位获取其需本次生成账单的所有订单信息列表,每1000条拆成一组数据,设置唯一的key,比如“本次账单编号”+“用户id”+“第几组”,把订单数据存入redis数据库中,数据过期时间为30分钟;以此key为mq的message发送到queue_1中。
8.根据权利要求6所述的云平台服务账单处理系统,其特征在于:所述产品模块中,以message作为redis的key获取用户订单信息列表,逐条计算订单本期账单的费用后,再set到redis数据库中,然后以此key为mq的message发送到queue_2中。
9.根据权利要求6所述的云平台服务账单处理系统,其特征在于:所述账单模块中,以message作为redis的key获取已含费用的用户订单信息列表,逐条生成账单数据存到业务表中,然后以此key为mq的message发送到queue_3中。
10.根据权利要求6所述的云平台服务账单处理系统,其特征在于:所述账户模块中,获取message后解析出其中的userid,然后通过userid获取该用户账单业务表中未支付的账单列表,进行逐条扣款;若账户余额充足,则本组数据业务流程结束;若账户余额不足以扣除全部的账单,则向订单模块发送欠费停服mq,停服后不再产生账单。