生成账号状态的方法以及生成账号状态的装置与流程

文档序号:14390494阅读:221来源:国知局
生成账号状态的方法以及生成账号状态的装置与流程

本申请涉及数据处理领域,更具体地,涉及处理计算广告需求方平台(demand-sideplatform,dsp)上广告主的账号实时状态所需的数据。



背景技术:

广告需求方平台,简称dsp,其是实时竞价(real-timebidding,rtb)的核心。传统的互联网广告生态链一般最多只有三方,分别是广告主、广告代理商(即广告公司)以及互联网媒体。而在rtb广告交易模式中,原有的广告生态链发生了变化,整个生态链包括广告主、dsp、广告交易平台以及互联网媒体四个主体。广告主将自己的广告需求放到dsp平台上,互联网媒体将自己的广告流量资源放到广告交易平台,dsp通过与广告交易平台的技术对接完成竞价购买。

由于广告的实时性,对应于广告主的账号的状态(下文称账号状态)也实时地发生变化。账号状态可包括账号实时余额、账号每日预算余额、账号对应的广告的实时花费等。这样,广告主、dsp、广告交易平台以及互联网媒体中的任何一方可能会需要了解账号状态。例如广告主需要了解账号的实时余额以控制广告活动,dsp可能需要了解账号的实时余额来确定广告主是否能够参与实时竞价以及账号的中短期控制,dsp可能还需要了解账号每日预算余额以控制账号当日的广告活动。

由于在广告展示过程中,产生的主要数据分为曝光数据和点击数据,曝光数据的产生速度及数据量远大于点击数据,因此传统的数据处理方式需要处理器在短时间内进行大量的数据处理。现有大多采用单机的方式来生成账号状态,从广告打点接口接收广告的曝光和点击数据,实时计算账号和活动的实时花费,并触发控量逻辑。很显然,单机的解决方案会影响整个广告曝光和点击的每秒吞吐量,并成为业务的瓶颈。而通过http请求与响应的方式进行数据处理对网络的稳定性要求会更加依赖,同时,也会消耗更多的服务器资源,例如:大量的网络连接等。因此需要一种能够在数据量持续快速增加的情况下处理数据以生成账号状态的方法和装置。



技术实现要素:

针对rtb中存在的至少一个问题,本申请提出了一种至少能部分地扩展数据处理能力的、生成账号状态的方法和系统。

本申请的一方面涉及一种生成账号状态的方法,可包括:以消息队列形式采集与账号对应的第一主题数据和第二主题数据;缓存第一主题数据并且每隔第一预定时间将第一主题数据发送至控制器;读取第二主题数据并将第二主题数据发送至控制器;每隔第二预定时间获取与账号对应的物料信息;以及基于物料信息改变而更新缓存中的物料信息并产生计算指令,并将计算指令发送至控制器,其中,控制器响应于接收到第一主题数据、第二主题数据或指令生成账号状态。

在一个实施方式中,生成账号状态的方法例如可包括通过异步交互的方式每隔第三预定时间存储账号状态。

在一个实施方式中,生成账号状态的方法还可包括由redis存储系统通过异步交互的方式每隔第三预定时间存储账号状态。

在一个实施方式中,生成账号状态的方法还可包括基于所存储的账号状态控制账号的活动。

在一个实施方式中,生成账号状态的方法还可包括将账号状态传输至第三方控制端。第三方控制端可为广告投放平台。

在一个实施方式中,缓存第一主题数据并且每隔第一预定时间将第一主题数据发送至控制器还可包括:对第一主题数据进行预处理以生成预处理数据;以及每隔第一预定时间将预处理数据发送至控制器。

在一个实施方式中,控制器还可响应于接收到预处理数据基于缓存中的物料信息生成账号状态。

根据本申请的另一方面,提供了一种生成账号状态的装置,本装置包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行计算机程序时执行以下步骤:以消息队列形式采集与账号对应的第一主题数据和第二主题数据;缓存第一主题数据;每隔第一预定时间将第一主题数据发送至控制器;读取第二主题数据并将第二主题数据发送至控制器;每隔第二预定时间获取与账号对应的物料信息;以及基于物料信息改变而更新缓存中的物料信息并产生计算指令,并将计算指令发送至控制器,其中,控制器响应于接收到第一主题数据、第二主题数据或指令生成账号状态。

根据本申请的又一方面,提供了生成账号状态的装置,该装置包括:流式收集模块,以消息队列形式采集与账号对应的第一主题数据和第二主题数据;storm模块,storm模块包括:controlbolt组件;impsout组件和cachebolt组件,impsout组件从流式收集模块读取第一主题数据并将第一主题数据发送至cachebolt组件;clickspout组件,clickspout组件从流式收集模块读取第二主题数据,并将第二主题数据发送至controlbolt组件;infospout组件,每隔第二预定时间获取与账号对应的物料信息;dbbolt组件,dbbolt组件同步由infospout组件获取的物料信息,基于物料信息改变而更新缓存中的物料信息并产生计算指令,并将计算指令发送至controlbolt组件;以及flushspout组件,flushspout每隔第一预定时间产生发送指令,cachebolt组件响应于发送指令将第一主题数据发送至controlbolt组件,其中,controlbolt组件响应于接收到第一主题数据、第二主题数据或计算指令生成账号状态。

在一个实施方式中,装置还可包括存储模块,存储模块通过异步交互的方式存储账号状态。存储模块可以为redis存储系统。

在一个实施方式中,流式收集模块可包括kafka消息队列系统、activemq消息队列系统或rabbitmq消息队列系统。

在一个实施方式中,流式收集模块可包括kafka消息队列系统,impsout组件和clickspout组件与kafka消息队列系统的主题的分区数保持一致。

在一个实施方式中,根据本申请的装置还包括账号管理模块,账号管理模块基于存储模块中存储的账号状态控制账号的活动。账号管理模块还可配置为将账号状态传输至第三方控制端。

在一个实施方式中,cachebolt组件还可配置为对第一主题数据进行预处理以生成预处理数据并且响应于发送指令将预处理数据发送至controlbolt组件。

在一个实施方式中,controlbolt组件还响应于接收到预处理数据基于缓存中的物料信息生成账号状态。

根据本申请的再一方面,提供生成账号状态的装置,包括:以消息队列形式采集与账号对应的第一主题数据和第二主题数据;以及通过storm模块中的组件执行的以下操作:通过impsout组件从流式收集模块读取第一主题数据,并将第一主题数据发送至cachebolt组件;通过clickspout组件从流式收集模块读取第二主题数据,并将第二主题数据发送至controlbolt组件;通过flushspout组件每隔第一预定时间产生发送指令并将发送指令发送至cachebolt组件,由cachebolt组件响应于发送指令将第一主题数据发送至controlbolt组件;通过infospout组件每隔第二预定时间获取与账号对应的物料信息;通过dbbolt组件同步由infospout组件获取的物料信息,基于物料信息改变而更新缓存中的物料信息并产生计算指令,并将计算指令发送至controlbolt组件;以及通过controlbolt组件响应于接收到第一主题数据、第二主题数据或计算指令基于缓存中的物料信息生成账号状态。

在一个实施方式中,根据本申请的方法还可包括:通过异步交互的方式每隔第三预定时间存储账号状态。可由redis存储系统通过异步交互的方式每隔第三预定时间存储账号状态。

在一个实施方式中,根据本申请的方法还可包括基于所存储的账号状态控制账号的活动。

在一个实施方式中,根据本申请的方法还可包括将所存储的账号状态传输至第三方控制端。

在一个实施方式中,生成账号状态的方法还可包括:通过cachebolt组件对第一主题数据进行预处理以生成预处理数据;以及通过cachebolt组件响应于发送指令将预处理数据发送至controlbolt组件。

在一个实施方式中,生成账号状态的方法还可包括:响应于接收到预处理数据通过controlbolt组件基于缓存中的物料信息生成账号状态。

附图说明

通过参考附图详细描述本发明的示例性实施方式,本发明的上述及其他方面和特征将变得更加明显,在附图中:

图1是根据本申请实施方式生成账号状态的方法的流程图;

图2是示意性地示出根据本申请实施方式的生成账号状态的装置的框图;

图3是示意性地示出根据本申请另一实施方式的生成账号状态的装置的框图;

图4示出根据本申请实施方式的storm模块中的组件的分布式拓扑结构;以及

图5示出根据本申请的一个实施方式的生成账号状态的装置在生成账号状态时与外部机构形成的分布式拓扑结构。

具体实施方式

现在,将在下文中参照示出各实施方式的附图更充分地描述本发明。然而,本发明能以诸多不同的形式来实现,而不应解释为局限于本文阐述的实施方式。相反,提供这些实施方式,使得本公开将是透彻和完整的,并且将向本领域技术人员充分传达本发明的范围。相同的附图标记始终表示相同的元件。

将理解,当元件被称为处于另一元件“上”时,它可直接地处于该另一元件上,或者其间可存在中间元件。相反,当元件被称为直接在另一元件上时,不存在中间元件。

将理解,虽然可在本文中使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开。因此,在没有脱离本文的教导的情况下,下面讨论的第一元件、组件、区域、层或部分可被称为第二元件、组件、区域、层或部分。

本文使用的术语仅是出于描述具体实施方式的目的,而并非旨在进行限制。如本文所使用的那样,除非内容清楚地另行指出,否则单数形式“一”、“一个”和“所述”旨在包括复数形式,包括“至少一个”。“或”是指“和/或”。如本文所使用的那样,术语“和/或”包括相关所列项目中的一个或多个的任何和全部组合。还将理解,当措辞“包括”在本说明书中使用时指出所阐述的特征、区域、整体、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、区域、整体、步骤、操作、元件、组件和/或其群组的存在或添加。

此外,在本文中可使用诸如“下”或“底部”以及“上”或“顶部”的相对术语来描述如附图中所示的一个元件与另一元件的关系。将理解,除了附图中所描绘的定向之外,相对术语还旨在涵盖设备的不同定向。例如,如果附图之一中的设备翻转,则描述为在其他元件的“下”侧上的元件于是将定向成在所述其他元件的“上”侧。示例性术语“下”因此可根据附图的具体定向涵盖下和上两个定向。类似地,如果附图之一中的设备翻转,则描述为在其他元件“下方”或“下面”的元件于是将定向在所述其他元件的“上方”。示例性术语“下方”或“下面”因此可涵盖上方和下方两个定向。

如本文所使用的,“约”或“近似”包括所阐述的值以及在对于特定值的如由本领域普通技术人员在考虑正在进行的测量和与特定量的测量相关的误差(即,测量系统的局限性)所确定的可接受偏差范围内的平均值。

除非另行限定,否则本文所使用的全部术语(包括技术术语和科学术语)具有与由本公开所属领域的普通技术人员通常所理解的含义相同的含义。还将理解,术语,诸如通常使用的词典中所定义的术语,应解释为具有与它们在相关技术的上下文和本公开中的含义相一致的含义,并且将不在理想化或过于正式的意义上进行解释,除非本文明确地限定成这样。

图1是根据本申请实施方式生成账号状态的方法的流程图。

参照图1,生成账号状态的方法1000包括以消息队列形式采集与账号对应的第一主题数据和第二主题数据(s1110)。由于将第一主题数据和第二主题数据存储在消息队列中,因此可根据数据的产生方式(例如曝光数据因广告被广告受众看到而产生,点击数据因广告被广告受众点击而产生)、每种数据的产生速度(例如单位时间并发的量)等对数据进行划分,但是本申请不限于此。第一主题数据可例如对应于因广告曝光(即广告被广告受众看到)而产生的曝光日志,例如广告被曝光一次,随即更新曝光日志。第二主题数据可对应于广告点击(即广告被广告受众点击)而产生的点击日志,例如广告被点击一次,随即更新点击日志。可通过诸如kafka、activemq或rabbitmq的消息队列系统采集第一主题数据和第二主题数据,从而以消息列队形式存储产生的、与第一主题数据或第二主题数据对应的每一条新数据。这样,数据可暂时存放在消息队列中,数据处理方(即,订阅数据方,例如下文将描述的storm模块)可根据自身的负载处理能力控制处理消息的处理速度,减小数据大量并发时访问的压力。

根据本申请实施方式,生成账号状态的方法1000还包括:缓存第一主题数据并且每隔第一预定时间将第一主题数据发送至控制器(s1120)。生成账号状态的方法1000中的步骤s1120还可包括:对第一主题数据进行预处理以生成预处理数据并且每隔第一预定时间间隔将预处理数据发送至控制器。例如,步骤s1120可包括基于缓存的第一主题数据和缓存中的物料信息来生成预处理数据,但本申请的实施方式不限于此。通过步骤s1120,例如可基于第一预定时间内的曝光量和缓存中的物料信息针对广告活动和账号维度进行汇总与计算,以生成缓存金额,例如第一预定时间内曝光量所花费的金额。通过对快速并发数据的缓存与预处理可极大减少控制器的处理量,进而提高数据处理能力。

接下来,读取第二主题数据并将第二主题数据发送至控制器(s1130)。如上所述,第二主题数据被存放在消息队列中,因此步骤s1130的第二数据读取过程中,会节省服务器成本并且降低数据丢失的风险。

接下来,每隔第二预定时间获取与账号对应的物料信息(s1140)。与账号对应的物料信息可为广告库中投放的物料信息。物料信息可为广告单价,广告中账号、活动、组和创意的映射关系以及广告离线报表分小时花费等,物料信息还可包括广告主在广告投放过程中存入与提取金额的信息。

接下来,基于物料信息改变而更新缓存中的物料信息并产生计算指令,并将计算指令发送至控制器(s1150)。缓存中的物料信息可用于生成账号状态,并且还可用于对第一主题数据的预处理。可基于缓存中的物料信息针对第一预定时间内接收的第一主题数据进行汇总与计算。例如,在步骤s1120中,可基于第一预定时间内的曝光量和缓存中的物料信息针对广告活动和账号维度进行汇总与计算,以生成缓存金额,例如第一预定时间内曝光量所花费的金额。通过该操作,可实时地更新缓存中的物料信息,从而可在物料信息改变的情况下对重新生成账号状态,同时更新其他工作节点进行计算所需的物料信息。因此,在物料信息改变时,产生发送至控制器的计算指令以基于更新的物料信息重新生成账号状态。这样进一步保证了数据处理的实时性。

控制器响应于接收到第一主题数据、第二主题数据或计算指令基于缓存中的物料信息生成账号状态(s1160)。另外,控制器还可响应于接收到预处理数据基于缓存中的物料信息生成账号状态。

当第一主题数据是曝光日志且第二主题数据是点击日志时,由于单位时间内广告曝光次数远大于点击次数,因此单位时间内产生的曝光数据量远大于单位时间内产生的点击数据量。如果按曝光一次,即生成新的账号状态,则数据处理能力会因曝光次数增加而遇到瓶颈。数据处理方则可在横向上对数据进行划分(例如,将数据划分为第一主题数据和第二主题数据)并且在纵向上划分的数据进行区别处理,最终传送至数据结算方以生成账号状态。

因此,方法1000通过以消息队列形式采集数据实现对数据的划分,并且通过不同的工作节点分别读取第一主题数据和第二主题数据,从而第一主题数据和第二主题数据因为被不同的工作节点读取而可分别被不同地处理。例如,通过第一工作节点读取第一主题数据,通过第二工作节点读取第二主题数据,第一工作节点将第一数据发送给其下游的工作节点,第二工作节点将第二数据发送给其下游的工作节点,从而实现数据的分布式处理。

由于每隔第一预定时间将缓存的第一主题数据发送至控制器以使得控制器生成账号状态,所以并非第一主题数据更新即重新生成账号状态,而是每隔第一预定时间基于产生的第一主题数据的量来生成账号状态。第一预定时间决定了曝光数据处理的延时性,也是程序能无限扩展处理能力的关键,例如第一预定时间可设置为500ms。针对账号状态相对于第一主题数据(曝光日志)改变,控制器每500ms进行一次计算,且第一主题数据已经被预处理,这样既降低了控制器的计算频率又减少了控制器的计算量。通过这种方式,能够在短时间内并发大量的第一主题数据情况下生成账号状态,同时消耗更少的网络及服务器资源。

由于以并行的方式对第一主题数据、第二主题数据和物料信息进行处理,同时通过缓存和/或预处理第一数据来减少控制器负荷,从而可实现数据处理能力的扩展。本发明不限于对三种数据进行处理,并且还可对四种及以上的数据进行并行处理,并且可选择其中的至少一种数据进行缓存和预处理。例如,可针对单位时间并发量多的一种或几种数据进行缓存和预处理。

根据本申请的实施方式,方法1000还可包括通过异步交互的方式每隔第三预定时间存储账号状态。由于采用异步交互的方式,因此在不影响控制器处理逻辑的前提下,对账号状态进行定时存储。例如,可由redis存储系统通过异步交互的方式每隔第三预定时间存储账号状态。由于每隔第三预定时间来存储账号状态,所以可查看由第三预定时间划分的时间节点处的账号状态,便于与账号状态对应数据的回踩和再利用。所存储的账号状态用于程序重启的数据回踩、实时花费数据、账户余额的可视化。

根据本申请的实施方式,方法1000还可包括根据存储的账号状态控制账号的活动。例如可根据与账号状态对应的账号余额控制账号状态活动,当账号余额不足以支付广告活动时,可针对该账号终止广告活动;当账号状态在广告主对广告账号投入金额后改变时,可针对账号开启广告活动。

根据本申请的实施方式,方法1000还可包括将账号状态传输至第三方控制端。第三方控制端例如可为广告投放平台。

图2是示意性地示出根据本申请实施方式的生成账号状态的装置的框图。

参照图2,根据本申请示例性实施方式的生成账号状态的装置100包括存储器110和处理器120,存储器110上存储有计算机程序,所述计算机程序可在处理器120上运行,所述处理器120执行存储器110上存储的计算机程序时执行以下步骤:以消息队列形式采集所述账号对应的第一主题数据和第二主题数据;缓存第一主题数据并且每隔第一预定时间将第一主题数据发送至控制器;读取第二主题数据并将所述第二主题数据发送至控制器;每隔第二预定时间获取与账号对应的物料信息;基于物料信息改变而更新缓存中的物料信息并产生计算指令,并将计算指令发送至控制器;以及控制器响应于接收到第一主题数据、第二主题数据或指令生成账号状态。

装置100能够以并行的方式对第一主题数据、第二主题数据以及物料信息进行处理,并且可缓存的第一主题数据进行预处理,从而实现数据处理能力的扩展。例如可基于第一预定时间内的曝光量和缓存中的物料信息针对广告活动和账号维度进行汇总与计算,以生成缓存金额,例如第一预定时间内曝光量所花费的金额。

处理器120执行存储器110上存储的计算机程序时还可执行以下步骤:对第一主题数据进行预处理以生成预处理数据;以及每隔第一预定时间将预处理数据发送至控制器。控制器还可响应于接收到预处理数据基于缓存中的物料信息生成账号状态。

图3是示意性地示出根据本申请另一实施方式的生成账号状态的装置的框图。

生成账号状态的装置200包括流式收集模块210和storm模块220。流式收集模块210以消息队列形式采集账号对应的第一主题数据和第二主题数据。

storm模块220可基于用于流式大数据处理的流式处理计算引擎,storm流式处理计算引擎通过spout节点和bolt节点构成的拓扑结构进行数据处理,其中,spout节点发送消息,负责以tuple元组的形式发送数据流;而bolt节点负责转换数据流,在bolt节点中可完成计算、过滤等操作,bolt节点也可将数据发送给其他bolt节点。由spout节点发送的tuple元组是不可变数组,对应着固定的键值对。

storm模块220包括infospout组件221、impsout组件222、cachebolt组件223、clickspout组件224、controlbolt组件225、dbbolt组件226和flushspout组件227。

impsout组件222从流式收集模块210读取第一主题数据并且将第一主题数据发送至cachebolt组件223。controlbolt组件225还可对第一主题数据进行预处理以生成预处理数据。

clickspout组件224从流式收集模块210读取第二主题数据,并将第二主题数据发送至controlbolt组件225。例如,impsout组件222和clickspout组件224分别从消息队列实时收集曝光日志和点击日志,解析后发送给各自的下游。由于广告点击量较少,根据本发明实施方式的装置200中未设置对第二主题数据进行缓存处理的下游组件,但是本申请不限于此。例如,可根据需要对某一组件设置多个下游组件。由于第一主题数据和第二主题数据以消息队列形式存储,因此在数据写入与读取过程中节省服务器成本并且降低数据丢失的风险。

flushspout组件227可全局唯一,启动一个定时器,定时(即每隔第一预定时间)向下游的cachebolt组件223发送将聚合结果发送到下游controlbolt组件225的指令。flushspout组件227可每隔第一预定时间产生发送指令,cachebolt组件223可响应于发送指令将第一主题数据发送至controlbolt组件225。例如,cachebolt组件223可响应于发送指令将预处理数据发送至controlbolt组件225。第一预定时间决定了曝光数据处理的延时性,也是程序能无限扩展处理能力的关键,可设置为500ms。

infospout组件221每隔第二预定时间获取与账号对应的物料信息。infospout组件221可全局唯一,用于从数据库中定时扫描广告库中投放的物料信息,每第二预定时间(例如1分钟)获取物料的变更状态,同步给下游的dbbolt组件226。

dbbolt组件226同步由infospout组件获取的物料信息,基于物料信息改变而更新缓存中的物料信息并产生计算指令,并将计算指令发送至controlbolt组件225。可在每一个工作节点设置一个dbbolt组件226,从而保证物料信息在每个工作节点都有一份完整镜像。dbbolt组件226用于缓存:广告单价、广告账号、活动、组和创意的映射关系;以及广告离线报表分小时花费等,当任何影响账号余额和活动预算的物料信息改变,dbbolt组件226即通知下游的controlbolt组件225,触发控量计算逻辑,并且可更新缓存中的物料信息。

另外,由于dbbolt组件226可实时地更新缓存中的物料信息,从而可在物料信息改变的情况下对重新生成账号状态,同时更新其他工作节点进行计算所需的物料信息。这样进一步保证了数据处理的实时性。

controlbolt组件225响应于接收到第一主题数据、第二主题数据或计算指令基于缓存中的物料信息生成账号状态。例如,controlbolt组件225中可存储有用于生成账号状态的控量计算逻辑,该控量计算逻辑可响应于controlbolt组件225接收到第一主题数据、第二主题数据和计算指令中的至少之一而触发,从而生成账号状态。

controlbolt组件225可响应于接收到预处理数据基于缓存中的物料信息生成账号状态。这样可进一步减少controlbolt组件225所需处理数据的量。

作为示例,controlbolt组件225例如可基于接收到的曝光日志基于缓存中的当前物料信息按照广告活动和账号维度进行汇总和计算以生成预处理数据。controlbolt组件225可全局唯一并且缓存当前的物料信息,例如缓存全局唯一的账号和广告活动分小时花费等。controlbolt组件225可响应于上游传送的消息(例如响应于接收到第一主题数据、第二主题数据或计算指令)基于缓存中的物料信息执行控量计算逻辑。

装置200还包括存储模块230(参见图5),controlbolt组件225配置为每隔第三预定时间将账号状态以异步交互的方式存储在存储模块230中。存储模块230可为redis存储系统。通过装置200与存储模块230以异步传输的方式进行交互,可在不影响controlbolt组件225的处理逻辑的前提下,解决了程序重启的数据回踩以及核心实时花费数据的可视化等问题。由于每隔第三预定时间来存储账号状态,所以可查看由第三预定时间划分的时间节点处的账号状态,便于与账号状态对应的数据的回踩和再利用。

根据本申请的一个实施方式,流式收集模块220可包括kafka消息队列系统、activemq消息队列系统或rabbitmq消息队列系统。

根据本申请的一个实施方式,流式收集模块210可包括kafka消息队列系统,在这种情况下,impsout组件222和clickspout组件224与所述kafka消息队列系统的主题的分区数保持一致。这样,可进一步提高装置200进行数据处理时的吞吐量。

装置200还可包括账号管理模块(未示出),账号管理模块基于存储模块中存储的账号状态控制账号的活动。账号管理模块还配置为将账号状态传输至第三方控制端。第三方控制端例如可为广告投放平台。

图4示出根据本申请实施方式的storm模块中的组件的分布式拓扑结构。图5示出根据本申请的一个实施方式的生成账号状态的装置在生成账号状态时与外部机构形成的分布式拓扑结构。

生成账号状态的方法包括:以消息队列形式采集与账号对应的第一主题数据和第二主题数据;以及通过storm模块220中的组件执行的操作。

参照图4中示出的拓扑结构。通过storm模块220中的组件执行的操作包括:通过impsout组件222从流式收集模块210读取第一主题数据并将第一主题数据发送至cachebolt组件223;通过clickspout组件224从流式收集模块读取第二主题数据,并将第二主题数据发送至controlbolt组件225。例如,impsout组件222和clickspout组件224分别从消息队列实时收集曝光日志和点击日志,解析后发送给各自的下游。由于第一主题数据和第二主题数据以消息队列形式存储,因此在数据写入与读取过程中节省服务器成本并且降低数据丢失的风险。

通过storm模块220中的组件执行的操作还可包括:通过flushspout组件227每隔第一预定时间产生发送指令,cachebolt组件223响应于发送指令将第一主题数据发送至controlbolt组件225。其中,cachebolt组件223还可对第一主题数据进行预处理以生成预处理数据,并且响应于送指令将预处理数据controlbolt组件225。例如,可基于第一预定时间内的曝光量进行汇总与计算,以生成缓存金额(例如第一预定时间内曝光量所花费的金额)。通过对快速并发数据的缓存与预处理可极大减少控制器的处理量,进而提高数据处理能力。

通过storm模块220中的组件执行的操作还可包括:通过infospout221组件每隔第二预定时间获取与账号对应的物料信息。与账号对应的物料信息可为广告库中投放的物料信息。物料信息可为广告单价,广告中账号、活动、组和创意的映射关系以及广告离线报表分小时花费等,物料信息还可包括广告主在广告投放过程中存入与提取金额的信息。

通过storm模块220中的组件执行的操作还可包括:通过dbbolt组件226同步由infospout组件221获取的物料信息,基于物料信息改变而更新缓存中的物料信息,并将计算指令发送至controlbolt组件225。通过该操作,可实时地更新缓存中的物料信息,从而可在物料信息改变的情况下对重新生成账号状态,同时更新其他工作节点进行计算所需的物料信息。这样进一步保证了数据处理的实时性。

通过storm模块220中的组件执行的操作还可包括:通过controlbolt组件225响应于接收到第一主题数据、第二主题数据或计算指令基于缓存中的物料信息生成账号状态。

通过storm模块220中的组件执行的操作还可包括:通过cachebolt组件223对第一主题数据进行预处理以生成预处理数据;以及通过cachebolt组件223响应于发送指令将预处理数据发送至controlbolt组件225。例如,可基于缓存的第一主题数据和缓存中的物料信息来生成预处理数据,但本申请的实施方式不限于此。预处理数据可以是例如基于第一预定时间内的曝光量和缓存中的物料信息针对广告活动和账号维度进行汇总与计算而生成的缓存金额,例如第一预定时间内曝光量所花费的金额。

根据本申请的一个实施方式,生成账号状态的方法还可包括:响应于接收到预处理数据通过controlbolt组件225基于缓存中的物料信息生成账号状态。这样可进一步减少controlbolt组件225所需处理的数据量。通过对快速并发数据的缓存与预处理可极大减少控制器的处理量,进而提高数据处理能力。

通过图4中示出的拓扑结构实现的生成账号状态的方法通过横向扩展工作节点数以对不同数据进行并行处理以及通过纵向增加工作节点数以对一部分数据进行缓存与预处理,减少了用于最终生成账号状态的controlbolt组件225单位时间需要进行数据处理的量。

本方法还包括通过异步交互的方式每隔第三预定时间存储账号状态。例如可由redis存储系统通过异步交互的方式每隔第三预定时间存储账号状态。通过异步交互的方式,可在不影响通过controlbolt组件225生成账号状态前提下,每隔预定时间存储账号状态。存储的账号状态可用于程序重启的数据回踩以及核心实时花费数据的可视化等。由于每隔第三预定时间来存储账号状态,所以可查看由第三预定时间划分的时间节点处的账号状态,便于与账号状态对应的数据的回踩和再利用。

生成账号状态的方法还可包括基于存储模块中存储的账号状态控制账号的活动。例如可根据与账号状态对应的账号余额控制账号状态活动,当账号余额不足以支付广告活动时,可针对该账号终止广告活动;当广告主针对广告账号投入金额后,可针对账号开启广告活动。

账号状态的方法还可包括将存储模块230中账号状态传输至第三方控制端。第三方控制端可基于账号状态执行程序重启的数据回踩、实时花费数据、账户余额的可视化。第三方控制端可为广告供应平台。

图5中示出的分布式拓扑结构示出的外部机构可包括数据库以及kafka消息队列系统。其中,数据库可为mysql数据库管理系统(以下简称为“mysql”)。

infospout组件221从mysql定时或每隔第二预定时间间隔(例如每隔1分钟)扫描广告库中投放的物料信息。impsout组件222和clickspout组件224与kafka消息队列系统的topic的分区数保持一致,从消息队列实时收集曝光日志(例如,第一主题数据)和点击日志(例如第二主题数据)。除此之外,图5中所示的拓扑结构与图4相同,因此将省略重复的描述。

参照图4和图5描述的storm模块中的拓扑结构仅是示例性的,并且storm模块中的拓扑结构可根据数据类型的多少、数据产生的速度以及计算节点处需要完成计算等而在横向增加读取数据的工作节点以及在纵向增加对数据进行缓存与预处理的工作节点,从而实现数据处理能力的扩展。

根据本申请一方面的生成账号状态的方法及装置通过横向扩展工作节点数以对不同数据进行并行处理以及通过纵向增加工作节点数以对一部分数据进行缓存与预处理,减少了用于最终生成账号状态的控制器单位时间需要进行数据处理的量。这样可实现数据处理能力在空间和时间维度上的扩展。

根据本申请另一方面的生成账号状态方法及装置由于借助于storm流式计算框架,在提高数据处理能力的前提下,进一步提高生成账号状态的方法及装置可靠性和容错特性。另外以消息队列的方式进行数据采集,会节省服务器成本、提升服务整体的吞吐量以及减少数据丢失的风险。

然已经参考本申请的示例性实施方式具体示出和描述了本申请,但是将由本领域普通技术人员理解的是,在不脱离本申请的精神和范围的情况下,可在本发明中做出形式和细节上的各种改变,本申请的精神和范围如由所附权利要求限定。示例性实施方式应仅在描述性的意义上进行考虑,而不是出于限制的目的。

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