CN118264491A - 一种实时计费方法及装置 - Google Patents
一种实时计费方法及装置Info
- Publication number
- CN118264491A CN118264491A CN202410351987.5A CN202410351987A CN118264491A CN 118264491 A CN118264491 A CN 118264491A CN 202410351987 A CN202410351987 A CN 202410351987A CN 118264491 A CN118264491 A CN 118264491A
- Authority
- CN
- China
- Prior art keywords
- charging
- service
- target
- account
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000005096 rolling process Methods 0.000 claims abstract description 42
- 238000003860 storage Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 5
- 238000009826 distribution Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 8
- 238000005192 partition Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 239000000047 product Substances 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Abstract
本发明公开了一种实时计费方法及装置,涉及云服务计费处理技术领域,主要目的在于实现在高并发情况下,提高计费精准度和计费效率以及降低延时高。本发明技术方案至少为:从消息队列中实时获取至少一个账户的至少一次服务数据;对于所述至少一账户的任一目标账户,分配所述目标账户的至少一所述服务数据到所述目标账户对应的至少一滚动窗口;在到达每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量;基于所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据。本发明用于云服务计费。
Description
技术领域
本发明涉及云服务计费处理技术领域,尤其涉及一种实时计费方法及装置。
背景技术
随着云计算技术的发展,云服务逐步成为企业间服务的常态。云服务具有请求量大,产品复杂多样的特点,因此,大多数云服务厂商选择将计费模块独立,通过日志分析的方式来实现计费。随着业务的发展,传统的基于批处理的计费服务已很难满足业务的需要。因此,基于流处理实时计算的计费方式得到了快速发展。
相关方案提供一种典型的基于批处理的计费方法,包括:获取目标账户对应的服务数据,即获取所述目标服务的历史使用日志,解析所述历史使用日志,得到所述目标账户对应的服务数据;服务数据包括目标服务对应的至少一个计费指标中每一计费指标的计费指标数据;获取目标账户对于目标服务的计费规则;根据计费规则和每一计费指标的计费指标数据生成服务数据对应的计费数据。
但是,上述计费方法采用文件方式收集日志,在并发比较高的情况下,会导致日志的丢失和延迟,进一步导致计费精准度低、延时高、计费效率低等问题。
发明内容
鉴于上述问题,本发明提供一种实时计费方法及装置,主要目的是为了实现在高并发情况下,提高计费精准度和计费效率以及降低延时。
为解决上述技术问题,本发明提出以下方案:
第一方面,本发明提供一种实时计费方法,包括:
从消息队列中实时获取至少一个账户的至少一次服务数据;其中,所述一次服务数据是所述账户请求一次服务产生的数据;
对于所述至少一账户的任一目标账户,分配所述目标账户的至少一所述服务数据到所述目标账户对应的至少一滚动窗口;其中,对于所述至少一滚动窗口的任一目标窗口,被分配到所述目标窗口的所述服务数据对应同一目标账户的同一业务,且所述目标窗口的窗口大小对应所述业务的计费周期;
在到达每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量;
基于所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据。
第二方面,发明提供一种实时计费装置,包括:
获取单元,用于从消息队列中实时获取至少一个账户的至少一次服务数据;其中,所述一次服务数据是所述账户请求一次服务产生的数据;
分配单元,用于对于所述至少一账户的任一目标账户,分配所述目标账户的至少一所述服务数据到所述目标账户对应的至少一滚动窗口;其中,对于所述至少一滚动窗口的任一目标窗口,被分配到所述目标窗口的所述服务数据对应同一目标账户的同一业务,且所述目标窗口的窗口大小对应所述业务的计费周期;
第一计算单元,用于在到达每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量;
第二计算单元,用于基于所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据。
为了实现上述目的,根据本发明的第三方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述第一方面所述实时计费方法。
为了实现上述目的,根据本发明的第四方面,提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第二方面所述用于实时计费装置的全部或部分步骤。
为了实现上述目的,根据本发明的第五方面,提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述第一方面所述实时计费方法的步骤。
借由上述技术方案,本发明提供的实时计费方法及装置,是由于目前用文件方式收集日志,在并发比较高的情况下,会导致日志的丢失和延迟,进一步导致计费精准度低、延时高、计费效率低等问题。为此,本发明通过从消息队列中实时获取至少一个账户的至少一次服务数据;其中,所述一次服务数据是所述账户请求一次服务产生的数据;对于所述至少一账户的任一目标账户,分配所述目标账户的至少一所述服务数据到所述目标账户对应的至少一滚动窗口;其中,对于所述至少一滚动窗口的任一目标窗口,被分配到所述目标窗口的所述服务数据对应同一目标账户的同一业务,且所述目标窗口的窗口大小对应所述业务的计费周期;在到达每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量;基于所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据。实现在高并发情况下,提高计费精准度和计费效率以及降低延时高。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种实时计费方法流程图;
图2示出了本发明实施例提供的另一种实时计费方法流程图;
图3示出了本发明实施例提供的一种实时计费方法对应的系统结构图;
图4示出了本发明实施例提供的一种实时计费装置的组成框图;
图5示出了本发明实施例提供的另一种实时计费装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
术语解释:
CDC是Change Data Capture(变更数据获取)的简称,用于监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。
对于目前用文件方式收集日志,在并发比较高的情况下,会导致日志的丢失和延迟,进一步导致计费精准度低、延时高、计费效率低等问题。发明人想到采用消息队列配合滚动窗口的方式,实现实时收集服务数据进行实时计费,用于克服上述问题。
为此,本发明实施例提供了一种实时计费方法,通过该方法实现在高并发情况下,提高计费精准度和计费效率以及降低延时高,其具体执行步骤如图1所示,执行主体为电子设备,至少包括S100-S400。
S100、从消息队列中实时获取至少一个账户的至少一次服务数据。
其中,所述一次服务数据是所述账户请求一次服务产生的数据;例如:账户标识、产品名称、命中状态等,本实施例不作具体限定。
其中,所述消息队列的服务数据与数据库的服务数据同步更新;所述账户是指被授权的客户的使用账户,可以使用云服务。
在SaaS云服务的场景下,计费种类繁多,不同的企业客户都希望服务方能提供有利于自身业务的计费方式。例如:A客户希望提供阶梯计费,B客户需要包年计费,C客户希望多产品打包计费等。在这些计费方式中,任何一种计费,如何计算出计费量是关键,得到计费量之后,结合价格信息,很方便的就可以计算出计费金额。以及对应的包年计费、阶梯计费、打包计费等都可以很方便的计算出。
业务系统的数据存储在各业务的数据库中,由于业务形态的差异,可能存在不同类型的数据库,例如:A系统采用MySQL数据库,B系统采用Oracle数据库,C系统采用SQLServer数据库。
通常情况下,业务系统会提供给所授权的客户进行访问以提供服务。具体为:客户携带其账户编号作为该客户的唯一标识,对业务系统进行访问。携带关键词和服务列表以http请求的方式对相应的服务进行查询,查询成功后,通过http协议获得查询结果;然后在各业务系统的数据库中,对客户的请求情况进行记录,形成服务数据。服务数据可以以日志表的形式记录。
再将对应业务系统中增加的服务数据,例如:日志表中的增量数据,发送到消息队列Pulsar中。当消息队列中出现更新的服务数据时,获取该服务数据作为数据源用于后续计费。
S200、对于至少一账户的任一目标账户,分配目标账户的至少一服务数据到目标账户对应的至少一滚动窗口。
其中,对于所述至少一滚动窗口的任一目标窗口,被分配到所述目标窗口的所述服务数据对应同一目标账户的同一业务,且所述目标窗口的窗口大小对应所述业务的计费周期。
从步骤S100获取目标账户的服务数据的过程中会有时间上的先后顺序,按照获取时间的先后顺序将该服务数据分配到对应的滚动窗口中。每个滚动窗口只放入一个目标账户的同一业务的服务数据,这样可以保证在计算该滚动窗口内的服务数据时,是针对一个目标账户的同一业务进行的,这样处理可以方便后续的统计。
例如:假设目标账户为A客户,对应的滚动窗口为A滚动窗口,同一业务为A业务,所述目标窗口“A滚动窗口”的窗口大小对应所述业务“A业务”的计费周期为30秒,那么表示A滚动窗口在30秒内加入A客户的A业务的n个服务数据,当过了这30秒开始基于这n个服务数据进行计算。
S300、在到达每一目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量。
其中,预设计费指标数据是指业务系统中依据与客户所签署的合同信息而转化过来的计费配置数据,至少包括账户标识、计费指标编号、服务列表、计费类别、统计类型等,本实施例不做具体限定。
从步骤S200之后,已经实时将获取到服务数据对应放入滚动窗口中,然后按照计算周期开始进行计算符合计费条件的服务数据有多少。计算周期可以根据业务需要设置,例如可根据业务需要的响应速度/实时性进行设置。一个实施例中,对于需要及时响应的业务(即实时性较高的业务),可以将计费周期设置到秒级,对于实时性不高的业务,可以将计费周期设置为分钟级。这样设置的优势是既不浪费计算资源,还能够保证及时响应计算,能够提高计算速度。
通过滚动窗口内的服务数据获取账户标识,然后基于该账户标识获取到对应的预设计费指标数据,由于该预设计费指标数据中通过设置服务名称和统计类型已经明确了服务的计费条件,如服务名称为A,统计类型为B“只计费命中状态的服务数据”,则计费条件为服务A在命中状态时需计费,因此,基于服务名称和统计类型,可以判断滚动窗口内的服务数据哪些需要计费,哪些不需要计费,将需要计费的服务数据的数量进行统计得到计费量。
S400、基于计费量和预设计费规则,确定目标账户对应目标业务的计费数据。
从步骤S300得到计费量之后,根据预设计费规则,计算目标账户对应目标业务的计费数据,即计费金额。所述预设计费规则包括计费类型和单价信息。该计费类型可以为阶梯计费、包月计费等,本实施例不做具体限定。
基于上述图1的实现方式可以看出,本发明提供一种实时计费方法,通过从消息队列中实时获取至少一个账户的至少一次服务数据;其中,所述一次服务数据是所述账户请求一次服务产生的数据;对于所述至少一账户的任一目标账户,分配所述目标账户的至少一所述服务数据到所述目标账户对应的至少一滚动窗口;其中,对于所述至少一滚动窗口的任一目标窗口,被分配到所述目标窗口的所述服务数据对应同一目标账户的同一业务,且所述目标窗口的窗口大小对应所述业务的计费周期;该步骤实时分配服务数据可以避免现有技术采用文件方式收集日志,在并发比较高的情况下,会导致日志的丢失和延迟的问题;在到达每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量;基于所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据,可以提升高并发海量日志场景下计费的效率,实现更高效的计费。
为了确定计费量,本申请实施例提供的方法步骤S300,包括S301-S302。
S301、基于目标窗口对应的目标账户和目标业务,查询预设计费指标数据表,获取对应的计费指标和统计类型。
其中,所述预设计费指标数据表包括所述账户、所述计费指标、所述业务和统计类型的对应关系,所述统计类型为只有命中状态计费或任何状态都计费。
S302、基于统计类型,统计在对应目标窗口中需要计费的服务数据的次数,确定目标账户对应目标业务的计费指标的计费量。
例如:A滚动窗口有A客户的A服务的3个服务数据,分别为1号服务数据(命中状态类型为命中)、2号服务数据(命中状态类型为未命中)和3号服务数据(命中状态类型为命中状态),假设对应的预设计费指标数据中A服务的A计费指标的统计类型为“只有命中状态计费”,即计算命中状态的服务数据“1号服务数据”和“3号服务数据”,不计算未命中状态的服务数据“3号服务数据”,那么该滚动窗口计算的结果为A客户的A计费指标的计费量为2。
本实施例可以通过滚动窗口和预设计费指标数据表配合实现计算目标账户对应目标业务的计费指标的计费量。
由于客户的计费需求不同,有的需要去重计费,有的不需要去重计费,为了满足客户需求的多样性,提供具体的计费方法,实现快速计费。因此,本申请实施例提供的方法步骤S400,如图2所示,包括S401-S405。
S401、将计费量储存到目标数据库的对应预设计费表中。
所述预设计费表至少包括账户标识、计费指标编号、服务唯一标识、计费量和计费日期,其中,所述账户标识、所述计费指标编号和所述服务唯一标识形成的对应关系具备唯一性。
所述目标数据库具有写操作不阻塞读的特性,在计算的同时数据也在实时对外服务,不影响线上服务可用性。
经过步骤S300得到计费量之后,将该计费量在写入TiDB数据库的过程中,需要判断目标账户以账户标识、计费指标编号、服务唯一标识三个字段为主键所对应的计费量是否在目标数据库中存在数据,若存在,则在对应的所述预设计费表中更新,增加计费量;若不存在,则在所述预设计费表中写入目标账户的账户标识、计费指标编号、服务唯一标识、计费日期和计费量。
由于所述账户标识、所述计费指标编号、所述服务唯一标识和所述计费日期对应的数据不允许重复,因此,可以保证在该目标数据库中对于一个账户标识的一个服务的一个计费指标的记录不会出现重复,保证了计费的准确性。
S402、当计费指标为去重计费时,则基于预设计费表,获取对应的去重计费量。
需要说明的是所述预设计费规则至少包括去重计费和非去重计费。
当计费指标为去重计费时,则基于从步骤S401得到的预设计费表,可以利用预设去重SQL语句获取对应的去重计费量。
例如:预设去重SQL语句:select count(1)from计费表where account=“指定的account”and jf_id=“指定的jf_id”and jf_date=“指定的日期”。
S403、基于去重计费量,计算目标账户的计费数据。从步骤S402得到计费量之后,可以利用计费单价,计算目标账户的计费数据,即计费金额。
S404、当计费指标为非去重计费时,则基于预设计费表,获取对应的非去重计费量。
当计费指标为非去重计费时,则基于从步骤S401得到的预设计费表,可以利用预设非去重SQL语句获取对应的去重计费量。
例如:预设非去重SQL语句:select sum(jf_sum)from计费表where account=“指定的account”and jf_id=“指定的jf_id”and jf_date=“指定的日期”。
S405、基于非去重计费量,计算目标账户的计费数据。
从步骤S404得到计费量之后,可以利用计费单价,计算目标账户的计费数据,即计费金额。
本实施例通过将计费量储存到目标数据库,可以保证读取通畅;并且设置了预设计费表,保证了数据的唯一性,减少了计费错误的可能性;并且通过预设去重SQL语句和预设非去重SQL语句可以获取到去重数据和非去重数据,实现了去重计费和非去重计费,满足客户计费需求的多样性。
进一步的,对本申请实施例提供的方法步骤S301进行细化及扩展,所述步骤S301包括S3011-S3013。
S3011、从目标窗口的服务数据中获取目标账户的账户标识、业务名称和命中状态。
其中,所述命中状态类型包括命中和未命中,可以用数值表示,例如:命中状态类型“1”表示命中,命中状态类型“2”表示未命中。
S3012、基于账户标识获取对应的预设计费指标数据表。
其中,所述预设计费指标数据表中的预设计费指标数据至少包括账户标识、计费指标编号、业务列表和统计类型。
从步骤S3011得到账户标识之后,利用该账户标识调取预先设置的也包括该账户标识的预设计费指标数据表。
S3013、基于目标账户对应的业务名称,遍历预设计费指标数据表对应的业务列表,获取业务名称对应的计费指标编号和统计类型。
其中,所述统计类型为只有命中状态计费或任何状态都计费;可以利用数值来表示,例如:统计类型“1”,表示只有命中状态计费;统计类型“2”,表示任何状态都计费。
从步骤S3011得到目标账户对应的服务名称之后,遍历预设计费指标数据对应的产品列表,该产品列表至少包括一个服务名称,找到与该目标账户的服务名称,然后获取其对应的计费指标编号和统计类型。
本实施例可以实现利用目标窗口中服务数据的信息和预设计费指标数据表,获取目标账户对应的计费指标和统计类型,用于后续计算目标账户对应该计费指标的计费量。
进一步的,对本申请实施例提供的方法步骤S302进行细化及扩展,所述步骤S302包括S3021-S3022。
S3021、基于统计类型,在对应目标窗口中筛选出符合计费条件的服务数据。
例如:假设统计类型“1”即表示只有命中状态计费,筛选出目标窗口中命中状态为命中的服务数据,则该服务数据就是符合计费条件的服务数据。
S3022、基于目标账户的账户标识、计费指标编号、业务名称和符合计费条件的服务数据,得到目标账户对应业务的计费指标的计费量。
从步骤3021得到符合计费条件的服务数据之后,再根据目标账户的账户标识、计费指标编号、业务名称和符合计费条件的服务数据,得到目标账户对应业务的计费指标的计费量。
例如:目标账户的账户标识“111”、计费指标编号“aaa”、业务名称“A服务”和符合计费条件的服务数据为“第1号服务数据”和“第2号服务数据”,假设账户标识“111”对应的客户是A客户,计费指标编号“aaa”对应的计费指标为A指标,那么结果为A客户的A服务的A指标的计费量为2。
本实施例可以实现利用所述统计类型筛选出目标窗口中需要计费的服务数据,计算其次数,将该次数确定为计费量,用于后续计算目标账户的计费数据。
为了避免重复计算的错误发生,需要确保每条服务数据只在滚动窗口中出现一次。因此,本申请实施例提供的方法步骤S200,包括S201-S202。
S201、基于目标账户的服务数据,按照预设规则构建数据队列。
其中,所述预设规则可以是根据时间先后顺序进行设置的规则。
为了使同一个账户产生的服务数据能够集中存放,方便调用该服务数据进行计算,提高计费速度。基于消息队列的预设哈希分区,利用目标账户的账户标识作为分区键调用哈希函数生成对应的哈希值;利用哈希值将目标账户对应的服务数据添加到对应的预设哈希分区。这样处理可以确保同一个目标账户的服务数据都分配在同一分区以实现消息的顺序性。这样使得不同业务系统产生的服务数据都会按目标账户分区并顺序写入消息队列Pulsar中,方便后续的调取使用,提高计费效率。
S202、将数据队列中的每个服务数据,按照业务类型依次分配到对应的目标窗口。
其中,所述目标窗口的计费周期根据对应的所述服务数据所需的响应速度进行设置,且所述目标窗口不重叠。
例如:A账户的A业务的服务数据按照时间顺序依次分配到对应A窗口。
本实施例可以实现将同一账户的同一业务的服务数据实时分配到同一滚动窗口。
此外,随着SaaS云服务的进一步发展,对SaaS服务计费的时效性要求进一步增加,大多数客户希望在费用达到一定阈值时出发预警机制,对客户进行提醒。而对于部分信用度低的客户,业务上也希望其账户余额用尽之后采取一定的阻断措施,例如:关闭调用权限来避免云服务企业的损失。因此传统的基于批处理的计费手段具有很大的局限性。因此,本申请实施例提供的方法,在步骤S400之后,还包括如下步骤:
S500、基于目标账户的储存金额和计费金额,计算剩余储存金额。
S600、当剩余储存金额满足第一预设条件时,则向目标账户对应客户发送报警信息。
例如:所述第一预设条件为500元,那么当客户的账户里剩余的储存金额不足500元时,则触发报警机制,通过客户预留联络方式向其报警,提示其进行补充金额。例如:发邮件或者发短信等,本实施例不做具体限定。
S700、当剩余储存金额满足第二预设条件时,则关闭目标账户对应客户的使用权限。
例如:所述第二预设条件为0元,那么当客户的账户里剩余的储存金额为0元时,则关闭该客户的使用权限,避免损失。
本实施例可以基于实际计算的计费金额结合客户剩余储存金额设置预警条件和阻断条件,及时提醒客户充值和控制客户权限,降低风险。
为能更好地解释本申请实施例提供的方案,以下举例说明。
如图3所示,本发明包括业务系统、消息队列、实时计算子系统和计费系统,其中,所述业务系统包括3种类型的数据库,分别为A系统采用MySQL数据库,B系统采用Oracle数据库,C系统采用SQL Server数据库;实时计算子系统包括flink-source组件、Flink计算组件和flink-sink组件;计费系统采用TiDB数据库。其中,业务系统会提供给所授权的客户进行访问以提供服务。所述消息队列设置有预设哈希分区用于储存同一账户的服务数据;储存原理是利用账户编号作为分区键调用哈希函数生成对应的哈希值,利用哈希值将该账户对应的服务数据添加到对应的预设哈希分区。
具体步骤如下:
(1)用户A通过终端设备以http请求的方式向业务系统发送对于服务的访问请求,该访问请求中包括该用户的账户编号account作为该用户的唯一标识,该访问请求还携带key和products,从而在业务系统中对相应的服务进行查询。查询成功后,用户A通过终端设备获得查询结果。
在业务系统的数据库中,对用户的请求情况进行记录,用户的账户编号对应的请求行为被记录在日志表A中,如表1所示,该日志表的主要字段如下:
表1
(2)业务系统实时将日志表A中的账户编号account作为分区键调用哈希函数生成一个哈希值,根据该哈希值将该日志表A中目标字段信息写入消息队列Pulsar的哈希分区中,得到日志表A-1。该目标字段信息如表2所示。
表2
(3)实时计算子系统将消息队列Pulsar的哈希分区中记录的日志表A-1,按照时间顺序加入数据队列中,再按照业务类型将该日志表A-1分配到对应的滚动窗口A,该滚动窗口A的计费周期为n秒。
需要说明的是在n秒内该滚动窗口A中储存A用户的服务数据可以有多个,例如:日志表A-1、日志表A-2…日志表A-n。
(4)实时计算子系统从滚动窗口A中的日志表A-1、日志表A-2…日志表A-n中获取用户A的账户编号account、业务A和滚动窗口A中每个日志表的命中状态status。
(5)实时计算子系统基于所述账户编号account获取用户A对应的预设计费指标数据表,如表3所示。
表3
(6)实时计算子系统基于业务A,遍历所述预设计费指标数据表对应的业务列表,获取所述业务A对应的计费指标编号jf_id和统计类型status_type,例如:计费指标编号为计费指标1,对应的统计类型为1,即表示status为1才计算费用。
(7)实时计算子系统基于所述统计类型status_type,在对应所述滚动窗口A的日志表A-1、日志表A-2…日志表A-n中筛选出符合status为1的日志表为m个,m为用户A的业务A的计费指标1的计费量。
(8)实时计算子系统将所述计费量加入输出日志表中(如表4所示),基于输出日志表将所述计费量储存到目标数据库的对应预设计费表中,所述预设计费表至少包括账户编号、计费指标编号、服务唯一标识、计费量和计费日期,其中,所述账户编号、所述计费指标编号和所述服务唯一标识形成的对应关系具备唯一性;所述预设计费规则至少包括去重计费和非去重计费。
将表4中的数据写入到目标数据库的对应预设计费表中;具体写入过程为:在目标数据库中,存储计费数据的计费表采用account、jf_id、key、jf_date四个字段作为联合主键,该主键对应的数据不允许重复。首先进行insert操作,如果insert失败,说明表4中的account、jf_id和key的数据在TiDB数据库中存在,则在对应的计费表中更新jf_sum的值,即将本次insert的数据的jf_sum字段的值增加到数据库中对应数据的jf_sum字段上。
如表4所示,包括如下字段:
表4
(9)通过上述操作,预设计费表可以方便的统计出去重之后的计费量和非去重的计费量。
计费系统查询某个计费指标的去重计费量可以使用如下SQL:
select count(1)from计费表where account=“指定的account”and jf_id=“指定的jf_id”and jf_date=“指定的日期”;
计费系统查询某个计费指标的非去重计费量可以使用如下SQL:
select sum(jf_sum)from计费表where account=“指定的account”and jf_id=“指定的jf_id”and jf_date=“指定的日期”;
(10)计费系统在得到计费量之后,依据计费单价信息,可以快速获得该计费指标的具体金额。
(11)计费系统依据该计费金额和客户的账户剩余金额做差额,与预设的报警金额X元和关闭权限的金额Y元进行对比,当差额少于X元时,说明账户金额不足,向客户发出报警;当差额少于Y元时,则关闭该账户的权限。
本申请实施例提供的方法,主要解决在SaaS云服务场景下,传统批处理计费出现的计费精准度低、延时高等问题。实现灵活计费方式,并对去重进行支持。提升高并发海量日志场景下计费的效率,实现更高效的计费。并依据计费的及时性,实现精准的费用预警以及阻断措施。
进一步的,作为对上述图1所示方法的实现,本发明实施例还提供了一种实时计费装置,用于对上述图1所示的方法进行实现。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。如图4所示,该装置包括:
获取单元31,用于从消息队列中实时获取至少一个账户的至少一次服务数据;其中,所述一次服务数据是所述账户请求一次服务产生的数据;
分配单元32,用于对于所述至少一账户的任一目标账户,分配所述目标账户的至少一从所述获取单元31得到的所述服务数据到所述目标账户对应的至少一滚动窗口;其中,对于所述至少一滚动窗口的任一目标窗口,被分配到所述目标窗口的所述服务数据对应同一目标账户的同一业务,且所述目标窗口的窗口大小对应所述业务的计费周期;
第一计算单元33,用于在到达从所述分配单元32得到的每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量;
第二计算单元34,用于基于从所述第一计算单元33得到的所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据。
进一步的,作为对上述图2所示方法的实现,本发明实施例还提供了另一种实时计费装置,用于对上述图2所示的方法进行实现。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。如图5所示,该装置包括:
获取单元31,用于从消息队列中实时获取至少一个账户的至少一次服务数据;其中,所述一次服务数据是所述账户请求一次服务产生的数据;
分配单元32,用于对于所述至少一账户的任一目标账户,分配所述目标账户的至少一从所述获取单元31得到的所述服务数据到所述目标账户对应的至少一滚动窗口;其中,对于所述至少一滚动窗口的任一目标窗口,被分配到所述目标窗口的所述服务数据对应同一目标账户的同一业务,且所述目标窗口的窗口大小对应所述业务的计费周期;
第一计算单元33,用于在到达从所述分配单元32得到的每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量;
第二计算单元34,用于基于从所述第一计算单元33得到的所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据;
进一步的,所述第一计算单元33,包括:
查询模块331,用于基于所述目标窗口对应的所述目标账户和所述目标业务,查询预设计费指标数据表,获取对应的计费指标和统计类型;
统计模块332,用于基于从所述查询模块331得到的所述统计类型,统计在对应所述目标窗口中需要计费的服务数据的次数,确定所述目标账户对应所述目标业务的所述计费指标的计费量。
进一步的,所述预设计费规则至少包括去重计费和非去重计费,所述第二计算单元34,包括:
储存模块341,用于将所述计费量储存到目标数据库的对应预设计费表中,所述预设计费表至少包括账户标识、计费指标编号、服务唯一标识、计费量和计费日期,其中,所述账户标识、所述计费指标编号和所述服务唯一标识形成的对应关系具备唯一性;
第一获取模块342,用于当所述计费指标为去重计费时,则基于从所述储存模块341得到的所述预设计费表,获取对应的去重计费量;
第一计算模块343,用于基于从所述第一获取模块342得到的所述去重计费量,计算所述目标账户的计费数据。
第二获取模块344,用于当所述计费指标为非去重计费时,则基于从所述储存模块341得到的所述预设计费表,获取对应的非去重计费量;
第二计算模块345,用于基于从所述第二获取模块344得到的所述非去重计费量,计算所述目标账户的计费数据。
进一步的,所述查询模块331,包括:
第一获取子模块3311,用于从所述目标窗口的服务数据中获取所述目标账户的账户标识、业务名称和命中状态;其中,所述命中状态包括命中和未命中;
第二获取子模块3312,用于基于从所述第一获取子模块3311得到的所述账户标识获取对应的预设计费指标数据表;其中,所述预设计费指标数据至少包括账户标识、计费指标编号、业务列表、和统计类型;
第三获取子模块3313,用于基于所述目标账户对应的业务名称,遍历从所述第二获取子模块3312得到的所述预设计费指标数据表对应的业务列表,获取所述业务名称对应的计费指标编号和统计类型。
进一步的,所述统计模块332,包括:
筛选子模块3321,用于基于所述统计类型,在对应所述目标窗口中筛选出符合计费条件的服务数据;
计算子模块3322,用于基于所述目标账户的账户标识、计费指标编号、所述业务名称和从所述筛选子模块3321得到的所述符合计费条件的服务数据,得到所述目标账户对应所述业务的所述计费指标的计费量。
进一步的,所述分配单元32,包括:
构建模块321,用于基于所述目标账户的服务数据,按照预设规则构建数据队列;
分配模块322,用于将从所述构建模块321得到的所述数据队列中的每个服务数据,按照业务类型依次分配到对应的所述目标窗口;其中,所述目标窗口的计费周期根据对应的所述服务数据所需的响应速度进行设置,且所述目标窗口不重叠。
进一步的,本发明实施例还提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述图1-2中所述的实时计费方法。
进一步的,本发明实施例还提供一种存储介质,所述存储介质用于存储计算机程序,其中,所述计算机程序运行时控制所述存储介质所在设备执行上述图1-2中所述的实时计费方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
此外,存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (11)
1.一种实时计费方法,其特征在于,所述方法包括:
从消息队列中实时获取至少一个账户的至少一次服务数据;其中,所述一次服务数据是所述账户请求一次服务产生的数据;
对于所述至少一账户的任一目标账户,分配所述目标账户的至少一所述服务数据到所述目标账户对应的至少一滚动窗口;其中,对于所述至少一滚动窗口的任一目标窗口,被分配到所述目标窗口的所述服务数据对应同一目标账户的同一业务,且所述目标窗口的窗口大小对应所述业务的计费周期;
在到达每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量;
基于所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据。
2.根据权利要求1所述的方法,其特征在于,所述在到达每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量,包括:
基于所述目标窗口对应的所述目标账户和所述目标业务,查询预设计费指标数据表,获取对应的计费指标和统计类型;
基于所述统计类型,统计在对应所述目标窗口中需要计费的服务数据的次数,确定所述目标账户对应所述目标业务的所述计费指标的计费量。
3.根据权利要求2所述的方法,其特征在于,所述预设计费规则至少包括去重计费和非去重计费;
所述基于所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据,包括:
将所述计费量储存到目标数据库的对应预设计费表中,所述预设计费表至少包括账户标识、计费指标编号、服务唯一标识、计费量和计费日期,其中,所述账户标识、所述计费指标编号和所述服务唯一标识形成的对应关系具备唯一性;
当所述计费指标为去重计费时,则基于所述预设计费表,获取对应的去重计费量;
基于所述去重计费量,计算所述目标账户的计费数据。
4.根据权利要求3所述的方法,其特征在于,在将所述计费量储存到目标数据库的对应预设计费表中之后,所述方法还包括:
当所述计费指标为非去重计费时,则基于所述预设计费表,获取对应的非去重计费量;
基于所述非去重计费量,计算所述目标账户的计费数据。
5.根据权利要求2-4任一项所述的方法,其特征在于,所述基于所述目标窗口对应的所述目标账户和所述目标业务,查询预设计费指标数据表,获取对应的计费指标和统计类型,包括:
从所述目标窗口的服务数据中获取所述目标账户的账户标识、业务名称和命中状态;其中,所述命中状态包括命中和未命中;
基于所述账户标识获取对应的预设计费指标数据表;其中,所述预设计费指标数据至少包括账户标识、计费指标编号、业务列表、和统计类型;
基于所述目标账户对应的业务名称,遍历所述预设计费指标数据表对应的业务列表,获取所述业务名称对应的计费指标编号和统计类型。
6.根据权利要求5所述的方法,其特征在于,所述基于所述统计类型,统计在对应所述目标窗口中需要计费的服务数据的次数,确定所述目标账户对应所述业务的所述计费指标的计费量,包括:
基于所述统计类型,在对应所述目标窗口中筛选出符合计费条件的服务数据;
基于所述目标账户的账户标识、计费指标编号、所述业务名称和所述符合计费条件的服务数据,得到所述目标账户对应所述业务的所述计费指标的计费量。
7.根据权利要求6所述的方法,其特征在于,所述对于所述至少一账户的任一目标账户,分配所述目标账户的至少一所述服务数据到所述目标账户对应的至少一滚动窗口,包括:
基于所述目标账户的服务数据,按照预设规则构建数据队列;
将所述数据队列中的每个服务数据,按照业务类型依次分配到对应的所述目标窗口;其中,所述目标窗口的计费周期根据对应的所述服务数据所需的响应速度进行设置,且所述目标窗口不重叠。
8.一种实时计费装置,其特征在于,包括:
获取单元,用于从消息队列中实时获取至少一个账户的至少一次服务数据;其中,所述一次服务数据是所述账户请求一次服务产生的数据;
分配单元,用于对于所述至少一账户的任一目标账户,分配所述目标账户的至少一所述服务数据到所述目标账户对应的至少一滚动窗口;其中,对于所述至少一滚动窗口的任一目标窗口,被分配到所述目标窗口的所述服务数据对应同一目标账户的同一业务,且所述目标窗口的窗口大小对应所述业务的计费周期;第一计算单元,用于在到达每一所述目标窗口的所述计费周期时,利用预设计费指标数据,确定目标业务对应的计费指标的计费量;
第二计算单元,用于基于所述计费量和预设计费规则,确定所述目标账户对应所述目标业务的计费数据。
9.一种存储介质,所述存储介质包括存储的程序,其特征在于,在所述程序运行时控制所述存储介质所在设备执行权利要求1至权利要求7中任一项所述实时计费方法。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至权利要求7中任一项所述实时计费方法。
11.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至权利要求7中任一项所述方法的步骤。
Publications (1)
Publication Number | Publication Date |
---|---|
CN118264491A true CN118264491A (zh) | 2024-06-28 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108009236B (zh) | 一种大数据查询方法、系统、计算机及存储介质 | |
CN109087055B (zh) | 业务请求的控制方法和装置 | |
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
US20200012602A1 (en) | Cache allocation method, and apparatus | |
CN106537345A (zh) | 在多进程计算环境中精确跟踪内存使用 | |
US11163735B2 (en) | Database capacity estimation for database sizing | |
CN110888774B (zh) | 基于hbase的大数据报表处理方法及装置 | |
CN108134944B (zh) | 一种收入异常主播用户的识别方法、装置及电子设备 | |
CN109981702B (zh) | 一种文件存储方法及系统 | |
TWI677210B (zh) | 一種企業物件的資訊加載方法和裝置 | |
CN111382182A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113946552A (zh) | 数据处理方法及电子装置 | |
CN113177050A (zh) | 一种数据均衡的方法、装置、查询系统及存储介质 | |
CN110489418B (zh) | 一种数据聚合方法和系统 | |
CN110825943B (zh) | 一种生成用户访问路径树数据的方法、系统及设备 | |
CN117194445A (zh) | 物化视图的更新方法及电子设备 | |
CN118264491A (zh) | 一种实时计费方法及装置 | |
CN108536759B (zh) | 一种样本回放数据存取方法及装置 | |
CN116010450A (zh) | 资源分配的方法、装置、电子设备和计算机可读介质 | |
CN110688350B (zh) | 一种存储日志的方法、装置 | |
CN110874268B (zh) | 数据处理方法、装置和设备 | |
CN114706671B (zh) | 一种多处理器调度优化方法与系统 | |
CN116703184B (zh) | 数据处理方法、数据处理装置、电子设备及可读存储介质 | |
CN114880662B (zh) | 一种基于进程的数据库审计处理方法和装置 | |
US20220027251A1 (en) | System for monitoring activity in a process and method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |