数据处理方法及系统与流程

文档序号:11286488阅读:324来源:国知局
数据处理方法及系统与流程

本发明涉及计算机技术领域,尤其涉及一种数据处理方法及系统



背景技术:

要实现海量数据的实时计算,目前很多应用场合采用商用的cep(complexeventprocessing,复杂事件处理)产品,如:oraclecep或sap/sybaseesp,有些场合使用开源项目sparkstreaming或apachestorm框架等。流式数据处理是cep的一个核心技术,要达到对数据的实时计算,需要在数据接收之后就要立即对其进行处理,而不是等数据积累到一定数量后再进行批量处理。

但是,海量的数据造成了存储速度慢,维护成本高的问题。



技术实现要素:

本发明实施例提供了一种数据处理方法及系统。已解决在进行海量数据的分析时,存储速度慢,维护成本高的问题。

为实现上述目的,本发明提供了一种数据处理系统。包括:

采集分发模块,用于接收文件,所述文件根据信令以及数据生成;

分布式流计算模块,用于根据接收的所述文件进行实时计算,得到基础指标值;

一级缓存模块,用于存储所述基础指标值,所述一级缓存模块采用分布式内存数据库实现,且数据缓存时长不大于48小时;

分布式数据汇聚模块,用于根据所述基础指标值计算得到性能指标值;

二级缓存模块,用于存储所述性能指标值,所述二级缓存模块采用分布式内存数据库实现,且数据缓存时长不大于72小时。

可选地,所述分布式流计算模块通过storm集群(storm集群结构是有一个主节点(nimbus)和多个工作节点(supervisor)组成的主从结构)实现;所述一级缓存模块通过redis集群(是一个key-value存储系统)实现;所述二级缓存模块通过redis集群实现。

可选地,还包括:

历史数据存储模块,用于根据要计算的数据的粒度和维度,按照所述粒度和维度保存所述性能指标值;所述历史数据存储模块采用分布式、面向列的数据库实现,且数据缓存时长大于所述二级缓存模块的数据缓存时长。

可选地,所述历史数据存储模块通过hbase集群(一种存储系统)实现。

可选地,还包括:

查询服务模块,用于为应用程序提供所述性能指标值的查询服务。

可选地,所述查询服务模块通过所述二级缓存模块获取所述性能指标值;

或者,当所述查询服务模块访问所述二级缓存模块失败的情况下,所述查询服务模块通过所述历史数据存储模块获取所述性能指标值。

可选地,所述性能指标包括关键业绩指标(keyperformanceindicators,kpi)和/或关键质量指标(keyqualityindicators,kqi)。

本发明实施例提供了一种数据处理方法。包括:

接收文件,所述文件根据信令以及数据生成;

通过分布式流计算的方式,对所述文件进行实时计算,得到基础指标值;

采用分布式内存数据库的形式,对所述基础指标值进行缓存,且缓存时长不大于48小时;

通过分布式汇聚的方式,对所述基础指标值计算得到性能指标值;

采用分布式内存数据库的形式,对所述性能指标值进行缓存,且缓存时长不大于72小时。

可选地,还包括:

根据要计算的数据的粒度和维度,按照所述粒度和维度备份所述性能指标值,且备份时长大于一个月。

可选的,还包括:

为应用程序提供所述性能指标值的查询服务;其中,通过所述缓存的所述性能指标值提供查询服务;

或者,当所述缓存的所述性能指标值查询失败时,通过备份的性能指标值提供查询服务。

通过本发明实施例提供的实时采集、分析和快速查询的架构,将海量信令xdr数据通过采集落地并消息通知的方式,结合流计算集群和分级的内存缓存集群进行实时的数据处理,缩短数据处理的时长,同时提供数据实时查询的能力和历史数据持久化的能力。实现了现海量数据的采集、实时数据计算和汇聚、历史海量数据存储以及实时/历史数据的快速查询。

附图说明

图1为本发明实施例提供的一种数据处理系统的结构示意图;

图2为本发明实施例提供的一种数据处理方法的流程图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

本方法提供了实现一个分布式海量数据实时计算、存储甚至查询的一体化的数据处理方法及系统,通过采集分发模块、分布式流计算模块、一级缓存模块、分布式数据汇聚模块、二级缓存模块、以及历史数据数据存储模块、查询服务模块,实现了海量数据的实时计算以及历史数据的快速存储和查询,降低了海量数据实时计算的成本,也实现了用户要求的海量数据实时计算、历史数据存储、数据查询呈现的需求。

图1为本发明实施例提供的一种数据处理系统的结构示意图。如图1所示,该系统包括:

采集分发模块101,用于接收文件,所述文件根据信令以及数据生成。

具体地,数据源(信令xdr(externaldatarepresentation,外部数据表示)文件)每隔设定时间(例如,每五分钟)或文件达到设定大小(例如,500mb)时输出一个文件到指定的ftp服务器目录下,通过采集分发模块101,每分钟轮询ftp(filetransferprotocol,文件传输协议)服务器文件状态,将检测到的文件通过ftp/sftp(securefiletransferprotocol,安全文件传送协议)等方式采集接口数据缓存模块,在文件写入完成后,采集分发模块101发送消息通知分布式流计算模块102(例如,storm集群)对数据进行实时处理。

例如,采集分发模块101可以使用redis消息队列作为通知消息的通道,通过单独部署的主备redis的方式进行消息队列的可靠性保障。

接口数据缓存模块可以将采集的信令xdr文件在本地以hdfs(hadoopdistributedfilesystem,分布式文件系统)的方式进行分布式存储,作为分布式流计算模块102实时计算的数据源,每次文件采集完成后即通知分布式流计算模块102进行实时计算。采用分布式hdfs方式存储接口数据既可以实现接口数据的快速存储,也方便对接口数据的质量进行核查,接口缓存数据可存储设定的时间(例如,3天),超过设定时间的数据按照系统的删除策略(例如,直接删除或者删除并备份等等)进行删除。

分布式流计算模块102,用于根据接收的所述文件进行实时计算,得到基础指标值.

具体地,分布式流计算模块102,对采集的信令xdr数据通过流计算框架(apachestorm集群,简称,storm集群)实现海量数据的实时计算,流计算集群由一个主节点和多个工作节点组成,主节点采用主备方式进行部署,主节点的守护进程用于分配代码、布置任务及故障检测,每个工作节点的守护进程用于监听工作,开始并终止工作进程,由zookeeper来实现两者的协调工作。信令xdr数据包含的是每个请求/响应所产生的用户上网明细数据,提供计算性能指标值(例如,kqi值/kpi值)所需要的原始字段。

本发明实施例可以依据需求所确定的计算内容根据计算的时间粒度(例如,1分钟或5分钟)以及其他汇聚维度(地市、小区、网元、业务等),计算基础指标值。

在一个示例中,分布式流计算模块102通过spout(计算机指令)在集群内分发信令xdr数据,通过bolt来处理数据,将原始字段合并成kqi/kpi所需的一个计算因子(即基础指标值,如:小区5分钟内的附着请求次数等),计算所得的结果数据实时输出给一级缓存模块103进行数据缓存。

一级缓存模块103,用于存储所述基础指标值,其中,一级缓存模块103采用分布式内存数据库实现,且数据缓存时长不大于48小时。

一级缓存模块103使用分布式内存数据库(例如,redis集群)的方式进行实现,redis是一个基于内存的高性能的key-value形式的数据库,存储实时计算后的基础指标值,数据计算时,在每一个计算的时间周期内,将统计的基础指标以key-value的形式保存在redis中,对于累加计算的基础指标,直接对value进行更新,在计算需要去重的基础指标时,取出对应的key-value,将value进行变更后再存入redis中,替换原先的key-value值。缓存的基础指标供后续计算性能指标值等数据时使用,数据缓存时长建议最大为48小时,超过时限的数据将从一级缓存模块103中清除。

分布式数据汇聚模块104,用于根据所述基础指标值计算得到性能指标值。

经过实时计算后的指标只是对原始的xdr详单数据做了简单的实时计算,如:按照1分钟/5分钟粒度计算用户的http访问次数、计算小区的附着请求次数等,而要计算更复杂和更高粒度的kqi/kpi指标数据,需要在一级缓存数据的基础上采用分布式数据汇聚模块104继续进行二次汇聚,如:1分钟/5分钟粒度的小区附着成功率、小时粒度的最大附着用户数等。对指标汇聚后的数据将写入到二级缓存模块105中进行缓存,还可以同时输出给历史数据存储模块106进行历史数据持久化存储(备份)。

二级缓存模块105,用于存储所述性能指标值,其中,二级缓存模块105采用分布式内存数据库实现,且数据缓存时长不大于72小时。

通过指标汇聚程序,将一级缓存中的基础指标值,根据需求提供的算法规则实时计算对应的kqi/kpi指标等数据,将计算后的数据存储在二级缓存模块105中。

二级缓存模块105可采用redis作为内存数据库,在数据量小的时候可以采用主备模式,数据量大的情况下采用集群模式进行部署。

另外,由于一级缓存在处理实时数据时已经非常繁忙且非常消耗内存,因此采用一级缓存和二级缓存分开部署的方式,以避免相互影响,二级缓存的数据缓存时长最大建议为72小时,超过时限的数据将从内存数据库中清除

历史数据存储模块106,用于根据要计算的数据的粒度和维度,按照所述粒度和维度保存所述性能指标值;历史数据存储模块106采用分布式、面向列的数据库实现,且数据缓存时长大于所述二级缓存模块的数据缓存时长。

历史数据存储模块106中存储的数据,可以是根据所要计算的数据的粒度和维度,全量保存设定时间(例如,1分钟或5分钟)粒度的各个维度数据,数据记录数也非常庞大,对历史数据的查询需要支持大数据量情况下的快速查询能力,本发明实施例采用分布式数据库(hbase集群)来实现数据的持久化和快速查询。hbase是一个分布式的、面向列的开源数据库,能提供大数据量快速查询能力,同时基于key-value方式存储数据,与redis的存储格式相同,因此可以很方便的存储从二级缓存模块105同步发送过来的性能指标值等数据,对数据进行长时间存储(存储时长建议为一个月),满足数据持久化要求。

同时,历史数据存储模块106中实时同步的数据也能够在二级缓存模块105发生故障的时候,提供数据恢复的能力,例如,系统在查询二级缓存失败的时候,直接查询hbase集群中的数据。

查询服务模块107,用于为应用程序提供所述性能指标值的查询服务。

上层应用程序需要能够实时查询并展现从海量数据中计算出的性能指标值等数据,因此需要能够实时访问二级缓存模块105里面的数据,本发明实施例通过查询服务模块107将查询接口封装成restful(一种软件架构风格)的轻量级webservice方式实现对二级缓存模块105中实时数据的访问,在二级缓存模块105数据访问失败的情况下,将查询切换到历史数据存储模块106。

通过本发明实施例上层应用程序能够查询并展现性能指标值等数据,系统通过查询服务模块107实现对历史数据存储模块106中历史数据的访问。

通过本发明实施例提供的实时采集、分析和快速查询的架构,将海量信令xdr数据通过采集落地并消息通知的方式,结合流计算集群和分级的内存缓存集群进行实时的数据处理,缩短数据处理的时长,同时提供数据实时查询的能力和历史数据持久化的能力。实现了现海量数据的采集、实时数据计算和汇聚、历史海量数据存储以及实时/历史数据的快速查询。

接口数据落地:相比kafka/flume等数据分发方式,采用hdfs+消息通知方式落地接口数据,既能够提供相同的数据分发能力,还提供了对接口数据及时性、可靠性和完整性等进行验证的能力,便于对接口数据进行监控和质量分析。

流计算引擎:当前系统的使用场景对实时计算的性能和及时性要求并不特别严苛,开源的流计算框架能够满足系统建设的要求,而商用的cep产品价格昂贵,产品部署方式和内部逻辑复杂,对服务器的性能要求高,开源的storm项目提供了基本的流计算框架,支持水平扩展,框架结构清晰,开发编程简单,研发人员可以根据业务逻辑灵活组织处理逻辑。

多级redis缓存:根据系统建设的要求,采用redis集群实现基于内存的计算,部署简单,对服务器资源要求低,采用key-value方式对数据进行缓存和计算,能够提高数据存储和计算的效率,而采用多级redis集群的方式,解决不同数据处理规则和数据量量下的性能要求。流计算输出的规则简单,但是缓存的数据量大,系统繁忙,需要部署一个较大规模的redis集群来实现,而指标汇聚的规则复杂,但是数据量小,系统压力相对较轻,可以部署一个较小规模的redis集群来实现,同时通过二级redis集群来支持应用层对统计数据的并发访问,降低对一级redis集群数据处理的影响。

持久化数据:基于海量信令xdr分析计算后的kqi/kpi指标等数据,需要支持对历史数据的查询,虽然历史数据的数据量并不一定是海量数据,但是由于分析的粒度小,需求较多,数据量也是非常大的,同时对历史数据存取效率要求也高,此时关系型数据库在存取效率方面的性能就比较差,而hdfs方式只是一个文件系统,查询使用很不方便,因此使用hbase进行分布式key-value方式存储,既可以将redis中的数据直接保存到hbase中,不需要进行格式转换,而且还可以实现对大量数据的快速存储和快速查询要求。

轻量级服务:相比于api或基于soap的webservice等查询接口方式,本方案采用restful的轻量级webservice可以降低开发的复杂度,提高系统的可伸缩性。

图2为本发明实施例提供的一种数据处理方法的流程图。本发明方法实施例与前述系统实施例对应,可参照进行理解。如图2所示,该方法包括:

s210,接收文件,所述文件根据信令以及数据生成。

根据用户对海量信令xdr数据实时计算业务的性能指标等数据的要求,实现信令xdr数据实时采集以及输出设定时间粒度(例如,1分钟或5分钟等)和各个业务维度的kqi/kpi指标等数据,同时能够保存这些细粒度的kqi/kpi指标等数据,实时数据存储不超过三天,历史数据存储不超过一个月。

数据源(信令dpi系统)按照5分钟或最大500mb输出一个xdr文件的规则,将所有信令xdr数据以文件形式实时输出到指定的ftp服务器,本方案需要实现从ftp服务器上将信令xdr文件实时采集到本地并通知处理模块进行实时数据处理。

s220,通过分布式流计算的方式,对所述文件进行实时计算,得到基础指标值。

本发明实施例实现实时将采集的信令xdr的明细数据按照预定义的分析规则进行实时过滤和计算,输出1分钟/5分钟时间粒度不同维度下的基础指标值。

s230,采用分布式内存数据库的形式,对所述基础指标值进行缓存,且缓存时长不大于48小时。

s240,通过分布式汇聚的方式,对所述基础指标值计算得到性能指标值。

本发明实施例实现基于实时输出的基础指标值,根据kqi/kpi指标算法对数据进行进一步的汇聚计算,输出对应的kqi/kpi指标,再将这些指标数据封装成接口方式供上层应用实时查询和呈现。

s250,采用分布式内存数据库的形式,对所述性能指标值进行缓存,且缓存时长不大于72小时。

本发明实施例还可以将实时计算输出的kqi/kpi指标进行持久化,能够查询这些细粒度的kqi/kpi指标历史数据,便于实现数据比对等功能。

具体还包括如下步骤:

s260,根据要计算的数据的粒度和维度,按照所述粒度和维度备份所述性能指标值,且备份时长大于一个月。

另外,在为应用程序提供为应用程序提供所述性能指标值的查询服务;其中,通过所述缓存的所述性能指标值提供查询服务;

或者,当所述缓存的所述性能指标值查询失败时,通过备份的性能指标值提供查询服务。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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