一种基于分布式高并发条件下的计费方法
技术领域
本发明涉及技术领域,具体而言,涉及一种基于分布式高并发条件下的计费方法。
背景技术
目前在计算机程序领域,如需要对客户端发起的请求进行计数,通常做法有两种,一种是直接同步计数,另外一种是异步统计计数。但这两种方式在分布式高并发条件下都会有一些缺陷。如使用同步方式,客户端请求的性能会被计数影响,而计数如出现异常,整个请求也将会中止。如使用异步计数,则又会因为大并发瓶颈,造成计数丢失并且不准确。尤其是在计费领域,需要对计费数据进行采集,并对采集的数据进行计数,因此,研发一种高效、快速稳定的计费方法成为亟待解决的问题。
发明内容
鉴于上述现有技术存在的缺陷,本发明的目的是提出一种基于分布式高并发条件下的计费方法,解决现有技术出现异常计数终止、计数丢失不准确等问题。为实现前述发明目的,本发明采用的技术方案包括:
一种基于分布式高并发条件下的计费方法,包括下述步骤:
步骤一,用户发起服务请求;
步骤二,服务器单元接收所述用户发送的服务请求,对当前用户的信息以同步方式在分布式缓存单元中进行认证,认证成功后系统返回成功标识并计数在分布式缓存单元;
步骤三,分布式缓存单元与物理数据库间进行异步双向通信,当用户对当前服务进行充值时,物理数据库中的剩余量将根据计算相应增加,间隔预设时间读取分布式缓存单元数据,将相应的累加计数N更新回物理数据库;
步骤四,物理数据库将计数信息原数据存入备份区,根据备份区所存入的原数据判断物理数据库节点是否发生异常,并输出判断结果;
步骤五,当判断所述物理数据库节点正常时,物理数据库节点将收到的写请求存入目标地址;
步骤六,当判断所述物理数据库节点发生异常时,物理数据库节点将收到的写请求进行异常判断处理,将指令抛弃结束重新上电初始化。
本发明基于分布式高并发条件下的计费方法,进一步地,所述同步方式在分布式缓存单元中进行认证包括下述步骤:
⑴用户通过自带一个token参数对服务器发起请求。
⑵服务器单元接收到请求,将该用户token以及对应请求的服务名传到分布式缓存单元,分布式缓存单元将对用户信息进行认证,检查所请求的服务是否剩余量大于零。
⑶如用户信息不匹配或者剩余量小于等于零,返回“拒绝”指令。
⑷如果用户信息匹配通过并且剩余量大于零,系统返回“通过”指令,并且当前的计费器计数自动+1,剩余量自动-1。
本发明基于分布式高并发条件下的计费方法,进一步地,所述分布式缓存单元与物理数据库间进行异步双向通信包括下述步骤:
①每隔一分钟,系统自动读取分布式缓存,将相应的累加计数N更新至物理数据库。
②所述物理数据库所对应的剩余量=当前剩余量-N。
③系统再将所得的剩余量更新回分布式缓存单元中。
本发明基于分布式高并发条件下的计费方法,进一步地,当判断所述物理数据库节点正常时,先将计数信息数据备份,判断D1是否为第一预设值,
当D1为第一预设值时,或D1不为第一预设值但D1为第二预设值时,物理数据库节点将收到的写请求从而将计数信息新数据存入目标地址,计数完成,
当D1不为第一预设值,D1也不为第二预设值时,物理数据库节点将收到的写请求进行异常判断处理,将指令抛弃结束重新上电初始化。
本发明基于分布式高并发条件下的计费方法,更进一步地,设置D2等于D1,完成计数。
本发明基于分布式高并发条件下的计费方法,进一步地,重新上电初始化后,D1不等于D2不等于第一预设值、或D1不等于D2不等于第二预设值时,再进一步判断D1是否等于第一预设值或D1是否等于第一预设值,
D1等于第一预设值或D1等于第二预设值,物理数据库节点将收到的写请求从而将计数信息新数据存入目标地址,计数完成,
D1不等于第一预设值或D1不等于第二预设值,将指令抛弃开始其他事务处理。
本发明基于分布式高并发条件下的计费方法,进一步地,重新上电初始化后,当D1等于D2等于第一预设值、或D1等于D2等于第二预设值时,将指令抛弃开始其他事务处理。
本发明基于分布式高并发条件下的计费方法,进一步地,用户经云端向服务器单元发送读取请求。
本发明基于分布式高并发条件下的计费方法,进一步地,所述云端和服务器单元之间有防火墙。
本发明方法通过整合异步、同步两种方式,形成高效快速稳定的计费方法,避免了传统计数出现异常或计数丢失等现象出现。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
图1是本发明基于分布式高并发条件下的计费方法步骤流程图;
图2是本发明基于分布式高并发条件下的计费方法的部分流程示意图;
图3是本发明基于分布式高并发条件下的计费方法的另一部分流程示意图;
图4是本发明基于分布式高并发条件下的计费方法实施装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,不用来限制本发明的范围。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明要旨是通过整合异步,同步两种方式,打造一个高效,快速稳定的计数方式,主要包括用户发出请求、异步存入计数信息至分布式缓存、同步将分布式缓存数据写入数据库、判断是否出现异常的步骤。
【实施例一】基于分布式高并发条件下的计费方法
如图1所示,具体包括下述步骤:
步骤S1,用户发起服务请求;
步骤S2,服务器单元接收所述用户发送的服务请求,对当前用户的信息以同步方式在分布式缓存单元中进行认证,认证成功后系统返回成功标识并计数在分布式缓存单元。分布式缓存由一个服务端实现管理和控制,有多个客户端节点存储数据,可以进一步提高数据的读取速率。例如要读取某个数据的时候,如果挨个节点找,那效率低下。分布式缓存以数据D,节点总个数为基础,通过一致性哈希算法计算出数据D对应的哈希值,根据这个哈希值就可以找到对应的节点。一致性哈希算法的好处在于节点个数发生变化(减少或增加)时无需重新计算哈希值,保证数据储存或读取时可以正确、快速地找到对应的节点。
步骤S3,分布式缓存单元与物理数据库间进行异步双向通信,当用户对当前服务进行充值时,物理数据库中的剩余量将根据计算相应增加,间隔预设时间读取分布式缓存单元数据,将相应的累加计数N更新回物理数据库。物理数据库,其数据库物理设计包括设计数据库的物理结构,根据数据库的逻辑结构来选定RDBMS(如Oracle、Sybase等),并设计和实施数据库的存储结构、存取方式等。
步骤S4,物理数据库将计数信息原数据存入备份区,根据备份区所存入的原数据判断物理数据库节点是否发生异常,并输出判断结果;
步骤S5,当判断所述物理数据库节点正常时,物理数据库节点将收到的写请求存入目标地址;在判断所述物理数据库节点正常时,可先将计数信息数据备份,判断D1是否为第一预设值。
步骤S6,当判断所述物理数据库节点发生异常时,物理数据库节点将收到的写请求进行异常判断处理,将指令抛弃结束重新上电初始化。
【实施例二】同步方式在分布式缓存单元中进行认证的方法
具体包括下述步骤:
⑴用户通过自带一个token参数对服务器发起请求。
⑵服务器单元接收到请求,将该用户token以及对应请求的服务名传到分布式缓存单元,分布式缓存单元将对用户信息进行认证,检查所请求的服务是否剩余量大于零。
⑶如用户信息不匹配或者剩余量小于等于零,返回“拒绝”指令。
⑷如果用户信息匹配通过并且剩余量大于零,系统返回“通过”指令,并且当前的计费器计数自动+1,剩余量自动-1。这时候经过上述同步方式在分布式缓存单元中进行认证步骤以后,其增加的值,也会相应的同步进了缓存,这样整个系统就保持了一致。
【实施例三】分布式缓存单元与物理数据库间进行异步双向通信方法
具体包括下述步骤:
①每隔一分钟,系统自动读取分布式缓存,将相应的累加计数N更新至物理数据库。
②所述物理数据库所对应的剩余量=当前剩余量-N。
③系统再将所得的剩余量更新回分布式缓存单元中,该分布式缓存单元的剩余量只是供核对时检查使用,以物理数据库中为准。
【实施例四】判断所述物理数据库节点正常与否的方法
如图2所示,判断所述物理数据库节点正常:
当D1为第一预设值时,或D1不为第一预设值但D1为第二预设值时,物理数据库节点将收到的写请求从而将计数信息新数据存入目标地址,计数完成。
可设置D2等于D1,完成计数。
如图3所示,判断所述物理数据库节点不正常:。
当D1不为第一预设值,D1也不为第二预设值时,物理数据库节点将收到的写请求进行异常判断处理,将指令抛弃结束重新上电初始化。
重新上电初始化后,D1不等于D2不等于第一预设值、或D1不等于D2不等于第二预设值时,再进一步判断D1是否等于第一预设值或D1是否等于第一预设值。或是重新上电初始化后,当D1等于D2等于第一预设值、或D1等于D2等于第二预设值时,将指令抛弃开始其他事务处理。
D1等于第一预设值或D1等于第二预设值,物理数据库节点将收到的写请求从而将计数信息新数据存入目标地址,计数完成,
D1不等于第一预设值或D1不等于第二预设值,将指令抛弃开始其他事务处理。
【实施例五】基于分布式高并发条件下的计费装置
如图4所示,包括服务器单元1、分布式缓存单元2、物理数据库3,服务器单元1用于接收用户5发送的服务请求,优选地,用户5可以经云端6向服务器单元1发送服务请求。并且,可以在所述云端6和服务器单元1设置防火墙4,用于筛选服务请求。
本发明方法通过整合异步、同步两种方式,形成高效快速稳定的计费方法,避免了传统计数出现异常或计数丢失等现象出现。本发明尚有多种实施方式,凡采用等同变换或者等效变换而形成的所有技术方案,均落在本发明的保护范围之内。