一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据聚合方法、装置及介质与流程

2022-06-05 16:09:47 来源:中国专利 TAG:
1.本公开总体上涉及分布式环境下的数据聚合方法、装置及介质。
背景技术
::2.在分布式环境下,对整个大数据集群的监控告警与性能分析越来越受到业界重视。然而在大数据集群中,数据的量级处于tb级别以上,服务器数量少则上百台,多至上万台。如果想对整个集群的运行状态进行实时统计分析,利用人工去做这些事情,显得低效而不切实际。因此,需要有一种解决方案能收集集群中各台机器的性能参数。此外,在一些情况下,需要对收集起来的数据进行统计分析。技术实现要素:3.在下文中给出了关于本公开的简要概述,以便提供关于本公开的一些方面的基本理解。但是,应当理解,这个概述并不是关于本公开的穷举性概述。它并不是意图用来确定本公开的关键性部分或重要部分,也不是意图用来限定本公开的范围。其目的仅仅是以简化的形式给出关于本公开的某些概念,以此作为稍后给出的更详细描述的前序。4.根据本公开的一个方面,提供一种分布式环境下的数据聚合方法,包括:通过多个源数据流获取组件从外部数据源获取数据流;通过分布在不同节点上的多个数据分发组件从所述多个源数据流获取组件接收数据流;以及通过所述多个数据分发组件将所述数据流分发到分布在不同节点上的多个数据聚合组件。5.根据本公开的另一个方面,提供分布式环境下的数据聚合装置,包括:存储器,其上存储有指令;以及处理器,被配置为执行存储在所述存储器上的指令,以执行如上所述的方法。6.根据本公开的又一个方面,提供一种计算机可读存储介质,其包括计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行根据本公开的上述方面所述的方法。附图说明7.构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。8.参照附图,根据下面的详细描述,可以更清楚地理解本公开,其中:9.图1是示出根据本公开的一个实施例的分布式环境下的数据聚合方法的流程图。10.图2示出了storm和esper之间的架构图的一个示例。11.图3示出了storm和esper之间的架构的示例的简化表示。12.图4示出了可以实现根据本公开的实施例的计算设备的示例性配置。具体实施方式13.参考附图进行以下详细描述,并且提供以下详细描述以帮助全面理解本公开的各种示例实施例。以下描述包括各种细节以帮助理解,但是这些细节仅被认为是示例,而不是为了限制本公开,本公开是由随附权利要求及其等同内容限定的。在以下描述中使用的词语和短语仅用于能够清楚一致地理解本公开。另外,为了清楚和简洁起见,可能省略了对公知的结构、功能和配置的描述。本领域普通技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以对本文描述的示例进行各种改变和修改。14.如上所述,需要有一种解决方案能收集集群中各台机器的性能参数。此外,在一些情况下,需要对收集起来的数据进行统计分析。统计分析要建立在一定的业务规则之上,系统管理员以及开发人员只会对符合某些条件的数据进行统计分析。但是规则又是千变万化的,如何动态可扩展的建立起规则体系,并能准确无误的统计所需的数据,这是我们首先需要解决的问题。再者,数据的结构对应不同集群、不同组件也是千差万别的,如何识别这些数据结构,这也是需要我们考虑的问题。因此,需要在分布式环境下进行数据的聚合。此外,在一些情况下,还需要动态建立统计规则。此外,在一些情况下,还需要动态生成数据结构。15.为了解决上述技术问题中的一个或多个,提出了本公开。16.图1是示出根据本公开的一个实施例的分布式环境下的数据聚合方法100的流程图。方法100包括如下步骤:通过多个源数据流获取组件从外部数据源获取数据流(101);通过分布在不同节点上的多个数据分发组件从所述多个源数据流获取组件接收数据流(102);以及通过所述多个数据分发组件将所述数据流分发到分布在不同节点上的多个数据聚合组件(103)。17.在一些实施例中,源数据流获取组件、数据分发组件以及数据聚合组件是分布式实时计算系统中的组件,它们都可以分布在一个或多个节点上。分布式实时计算系统可以是诸如storm、jstorm、hadoop、s4(简单可扩展流系统)之类的系统。分布式实时计算系统包括多个节点。在一些系统中,节点可以包括工作节点(workernode)。18.在一些实施例中,外部数据源可以是诸如kafka、mq、rabbitmq、rocketmq之类的流处理平台或集群。19.在一些实施例中,仅仅作为示例,可以使用storm作为分布式实时计算系统。storm是一种实时流计算系统,它具备分布式、高容错性特点,同时编程模型基于spout和bolt,具备易用性及扩展性。在本方案中,storm可以对数据进行预处理和负载均衡。20.通过上述方法100,在分布式环境下,可以将高并发、大数据量的业务数据分发到不同的处理节点,从而增加了集群的可扩展性及稳定性,同时容易使各个处理节点的负载均衡。21.在一些实施例中,在步骤103中,多个数据分发组件可以将数据流中的满足预定条件的数据分发到同一节点上的一个或多个数据聚合组件。满足预定条件的数据是指具有某种共同性质的数据。通过该方法,不会将满足预定条件的数据分发到不同的节点。由此,可以将具有某种共同性质的数据聚合到同一节点,从而不会造成碎片数据的产生。这进而能够保证统计的完整性。22.在一些实施例中,所述预定条件例如可以包括以下中的一个或多个:数据具有特定属性的特定属性值;数据具有特定属性的特定属性值范围;以及数据具有特定属性。例如,假设数据是表示人的数据(person),所述特定属性是name(姓名)。在此情况下,预定条件例如可以是姓名为“json”,或者姓名为“j*”(*表示任意长度的通配符)。此外,预定条件甚至可以是具有name这个属性的数据。23.在一些实施例中,所述特定属性可以是统计规则中的分组属性。在此情况下,在步骤103中,例如,数据分发组件可以使用所获得的统计规则(或业务规则)中的分组字段作为分组属性。例如,在统计规则是事件处理语言(epl)的语句的情况下,分组字段例如可以是由语句中的groupby表示的字段(例如,person数据结构的name字段)。在一些实施例中,事件处理语言可以是类似于sql的语言。24.在一些实施例中,方法100还可以包括:分布在不同节点上的多个数据聚合组件将所聚合的数据输入给对应的事件处理引擎。由此,可以由事件处理引擎对数据进行诸如统计分析之类的处理。25.在一些实施例中,事件处理引擎可以是诸如esper、streaminsight、flink之类的引擎。26.在一些实施例中,可以使用esper作为事件处理引擎。esper是业界优秀的事件处理引擎,它可以包括事件流处理(esp)引擎和复杂事件处理(cep)引擎。esper主要针对事件数据流进行统计分析,同时具备类sql的语法结构,简单易学。对常用的求和、求平均值、统计数量等聚合操作有完整的支持,并且速度非常快。esper可以具有统计分析、注册配置信息等功能。27.图2示出了storm和esper之间的架构图的一个示例。在该示例中,以kafka作为外部数据源。图2中的kafkaspout可以对应于方法100中的源数据流获取组件,messagedistributionbolt可以对应于数据分发组件,messageintegrationbolt可以对应于数据聚合组件。28.在一些实施例中,在事件处理引擎正在运行时,可以将新的源数据的数据模型转换成事件处理引擎能够识别的映射,从而将数据模型注册到事件处理引擎中。由于通过映射(map)将数据模型注册到事件处理引擎中,可以对数据模型进行热加载。由此,不需要重新启动事件处理引擎,从而可以在事件处理引擎中实现数据结构的实时配置、实时加载以及实时生效。29.在一些实施例中,将新的源数据的数据模型转换成事件处理引擎能够识别的映射可以包括:通过数据模型的类型属性的值,利用反射机制获得对应的类元数据。由此,可以便于进行数据模型的动态加载。30.在一些实施例中,在事件处理引擎正在运行时,可以通过统计规则转换组件(未图示)将新的统计规则转换成事件处理引擎能够识别的事件处理语句,并将该事件处理语句注册到事件处理引擎中。由此,可以动态生成统计规则,从而可以在事件处理引擎中实现统计规则的实时配置、实时加载、实时生效。31.在一些实施例中,类似地,也可以将新的统计规则注册或输入到一个或多个数据分发组件。32.在一些实施例中,将新的统计规则转换成事件处理引擎能够识别的事件处理语句可以包括:将新的统计规则数据模型加载到统计规则转换组件中,并通过拼接统计规则数据模型中的多个属性的属性值,获得所述新的统计规则。由此,可以使用数据模型来表示统计规则,从而便于实现统计规则的动态生成和实时加载。33.图3示出了storm和esper之间的架构的示例的简化表示。例如,可以将数据模型和统计规则数据模型存储在图3中的右侧所示的数据库中,并从该数据库接收这些模型,经过转换后再注册到esper中。34.以下,更详细地描述本公开的一些技术细节的示例,这些示例仅仅是列举出的可能的实现方案,因此不是限制性的。以下描述中,作为示例,使用storm作为分布式实时计算系统,并使用esper作为事件处理引擎。显然,也可以使用任何其他分布式实时计算系统和事件处理引擎。35.分布式环境下基于动态规则数据聚合落地方案36.(1)定义源数据的数据模型37.从每个不同集群采集到的数据结构可能是不一样的,为了将这些数据反映到esper引擎中,需要建立一套完整的数据模型映射源数据的数据结构。作为示例,可以采用树状结构描述源数据,当前属性有对应的唯一标识号,以及父类实体的id,当前属性的名称及数据类型。通过这种模型可以支撑所有的数据结构,示例如下:[0038][0039]表一源数据描述数据模型[0040]json格式及示例:[0041]源数据名为person的数据结构,包含三个属性sex(字符串),name(字符串)和age(整型)。[0042][0043][0044](2)统计规则数据模型(cepcondition)[0045][0046]表二统计规则描述数据模型[0047][0048]表三esper统计规则数据模型[0049]英文名称描述信息数据类型filterfield过滤字段英文名字符串logicaloperator逻辑运算符,and,or字符串relationaloperator关系运算符,大于、小于、等于字符串targetvalue目标值字符串valuetype目标值类型字符串[0050]表四esper统计规则数据模型[0051]下面的json串描述了某个实体类里面的backendresponsecode=“404”的过滤条件。[0052][0053](3)加载源数据的数据结构至esper中[0054]该步骤主要是为了将(1)中建立的数据模型转换成esper可以识别的map映射,然后注册至esper引擎中。[0055]具体步骤如下:[0056]1、加载表一中的数据至列表list中,并对列表按照order字段进行升序排序,依次遍历list列表l,记列表中的某项为l(i),初始化head=0,logmapsize=l.size();[0057]2、如果head《logmapsize,创建列表sameparentlogmaps,该列表为同一源数据结构集合,获取当前实体l(i)的parentid,记为p(j),如果p(j)==“0”,则表示l(i)表示顶层类名,可以作为最终的esper类sql语句表名,即tablename=l(i).component,否则tablename=l(i).parentname,tail=head 1,执行步骤3;[0058]3、如果tail《logmapsize&&logmaps(tail).parentid==p(j)则sameparentlogmaps添加实体logmaps(tail),tail ,否则执行步骤4;[0059]4、定义onefield为映射map,map为fieldname与其class元数据信息,遍历sameparentlogmaps,记其某一项为s(k),属性名为fieldname=s(k).fieldname,加载s(i)的类信息,可以通过s(k).type利用反射机制得到其class元数据,然后放入《fieldname,class(k)》至map中,直到循环结束;[0060]5、将《parentname,onefield》通过esper的接口注册至esper引擎中,head=tail,继续步骤2。[0061](4)storm集群加载元数据并建立统计规则[0062]storm集群内部组件分布如图2,在storm集群启动的时候,步骤一和步骤二中的数据模型已经通过例如手工配置,存储在数据库中间件(例如,图3中的右侧的数据库)中。storm集群中的工作节点可以从数据库中加载这类信息至当前节点内存中,通过转换组件将其转化成esper能识别的事件处理语言(例如,类sql语句)。[0063]具体步骤示例如下:[0064]1、加载表二中的数据至列表list中,依次遍历list列表,初始化变量sql=””(表示最终结果),select=””(表示sql语句中select部分),from=””(),where=””(表示sql语句中where部分),groupby=””,执行步骤2;[0065]2、获取当前对象list(i),可以根据其属性component的值c(i)生成from=“fromc(i)”,根据cepcondition中的timeinterval值确定esper中的时间窗口,from=”fromc(i).win.time_batch(list(i).cepcondition.timeinterval)”,根据groupby属性g(i)可以生成groupby=”groupbyg(i)”,然后根据cepcondition中的aggtype值agg(i)拼接出聚合语句,select=“selectagg(i)(c(i)),g(i)”;[0066]3、遍历list(i)中的filterconditions,记为f,其中每一个实体f(j)的属性中,根据属性logicaloperator的值可以确定是用and或者是or逻辑运算符,同理根据filterfield可以确定属性值,根据relationaloperator可以确定关系运算符,根据targetvalue可以确定条件过滤的值,通过valuetype可以确定targetvalue的类型,在程序中进行相应的类型转换,因此可以得到单个where条件连接后的值[0067]由于where后面不能跟and和or,因此可以去掉第一个条件的and或者or字符串;[0068]4、拼接list(i),获得最终的esper语句r(i)=select “” from “” whrere “”groupby,注意中间的空格需要加上。最后将r(i)注册到esper中;[0069]5、遍历循环后退出。[0070](5)storm集群的数据分发规则[0071]由于storm集群是分布式的,在图2中可以看到,数据的分布是离散的,具有不确定性。但是,本方案采用表2中的分组属性(groupby字段)进行属性分组(fieldgrouping)。例如,在图2中的messageintegrationbolt组件中,分布在不同节点的messageintegrationbolt组件会从分布在不同节点的messagedistributionbolt产生的扩展信息中拉取业务消息(注意,图2中的messageextensionbolt不是必需的,即,messagedistributionbolt组件可以直接从kafkaspout组件获得数据)。在一个示例中,这些业务消息可以具有这样一种特征:业务消息中,groupby字段所指向的属性值是相同的。例如业务规则中,groupby字段为“name”,messagedistributionbolt组件产生的消息中,name=“json”的数据会分发到同一个节点的messageintegrationbolt组件中,它不会分发到其它节点,因此name=“json”的任何聚合操作都是在某一个节点完成的,不会造成碎片数据产生,这样就保证统计的完整性。[0072]上述方法可以适用于业务规则不断变化的场景,同时兼顾了业务数据不断变化的特点,一旦有业务规则变化,或者数据结构变化,可以动态配置,及时生效。[0073]此外,在本公开中,利用分布式环境处理高并发和大数据量的消息请求,能横向扩展集群,并且不需要改变业务代码。[0074]此外,上述方法可以很好地应用于电信行业的日志系统中,很适用于日志监控及告警功能,还可以推广到其他业务数据的监控及分析。[0075]在本公开中,建立的数据模型可以支持业务规则的实时配置、实时加载、实时生效。基于建立的数据模型动态生成esper内部数据结构并且生成动态业务规则的算法具有简单方便实用的优点,而且在分布式环境下,高并发、大数据量的业务数据分发到不同的处理节点,增加了集群的可扩展性及稳定性。[0076]本公开的技术非常适用于电信行业物理集群中的日志监控告警功能,在内部dcoos平台得到很好的应用。推而广之,对于其它业务场景,比如财务风险管控等,也可以得以应用。[0077]图4示出了能够实现根据本公开的实施例的计算设备1200的示例性配置。[0078]计算设备1200是能够应用本公开的上述方面的硬件设备的实例。计算设备1200可以是被配置为执行处理和/或计算的任何机器。计算设备1200可以是但不限制于工作站、服务器、台式计算机、膝上型计算机、平板计算机、个人数据助手(pda)、智能电话、车载计算机或以上组合。[0079]如图4所示,计算设备1200可以包括可以经由一个或多个接口与总线1202连接或通信的一个或多个元件。总线1202可以包括但不限于,工业标准架构(industrystandardarchitecture,isa)总线、微通道架构(microchannelarchitecture,mca)总线、增强isa(eisa)总线、视频电子标准协会(vesa)局部总线、以及外设组件互连(pci)总线等。计算设备1200可以包括例如一个或多个处理器1204、一个或多个输入设备1206以及一个或多个输出设备1208。一个或多个处理器1204可以是任何种类的处理器,并且可以包括但不限于一个或多个通用处理器或专用处理器(诸如专用处理芯片)。处理器1204例如可以被配置为实现如上所述的分布式环境下的数据聚合方法。输入设备1206可以是能够向计算设备输入信息的任何类型的输入设备,并且可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或远程控制器。输出设备1208可以是能够呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。[0080]计算设备1200还可以包括或被连接至非暂态存储设备1214,该非暂态存储设备1214可以是任何非暂态的并且可以实现数据存储的存储设备,并且可以包括但不限于盘驱动器、光存储设备、固态存储器、软盘、柔性盘、硬盘、磁带或任何其他磁性介质、压缩盘或任何其他光学介质、缓存存储器和/或任何其他存储芯片或模块、和/或计算机可以从其中读取数据、指令和/或代码的其他任何介质。计算设备1200还可以包括随机存取存储器(ram)1210和只读存储器(rom)1212。rom1212可以以非易失性方式存储待执行的程序、实用程序或进程。ram1210可提供易失性数据存储,并存储与计算设备1200的操作相关的指令。计算设备1200还可包括耦接至数据链路1218的网络/总线接口1216。网络/总线接口1216可以是能够启用与外部装置和/或网络通信的任何种类的设备或系统,并且可以包括但不限于调制解调器、网络卡、红外线通信设备、无线通信设备和/或芯片集(诸如蓝牙tm设备、802.11设备、wifi设备、wimax设备、蜂窝通信设施等)。[0081]本公开可以被实现为装置、系统、集成电路和非瞬时性计算机可读介质上的计算机程序的任何组合。可以将一个或多个处理器实现为执行本公开中描述的部分或全部功能的集成电路(ic)、专用集成电路(asic)或大规模集成电路(lsi)、系统lsi,超级lsi或超lsi组件。[0082]本公开包括软件、应用程序、计算机程序或算法的使用。可以将软件、应用程序、计算机程序或算法存储在非瞬时性计算机可读介质上,以使诸如一个或多个处理器的计算机执行上述步骤和附图中描述的步骤。例如,一个或多个存储器以可执行指令存储软件或算法,并且一个或多个处理器可以关联执行该软件或算法的一组指令,以根据本公开中描述的实施例提供各种功能。[0083]软件和计算机程序(也可以称为程序、软件应用程序、应用程序、组件或代码)包括用于可编程处理器的机器指令,并且可以以高级过程性语言、面向对象编程语言、功能性编程语言、逻辑编程语言或汇编语言或机器语言来实现。术语“计算机可读介质”是指用于向可编程数据处理器提供机器指令或数据的任何计算机程序产品、装置或设备,例如磁盘、光盘、固态存储设备、存储器和可编程逻辑设备(pld),包括将机器指令作为计算机可读信号来接收的计算机可读介质。[0084]举例来说,计算机可读介质可以包括动态随机存取存储器(dram)、随机存取存储器(ram)、只读存储器(rom)、电可擦只读存储器(eeprom)、紧凑盘只读存储器(cd-rom)或其他光盘存储设备、磁盘存储设备或其他磁性存储设备,或可以用于以指令或数据结构的形式携带或存储所需的计算机可读程序代码以及能够被通用或专用计算机或通用或专用处理器访问的任何其它介质。如本文中所使用的,磁盘或盘包括紧凑盘(cd)、激光盘、光盘、数字多功能盘(dvd)、软盘和蓝光盘,其中磁盘通常以磁性方式复制数据,而盘则通过激光以光学方式复制数据。上述的组合也包括在计算机可读介质的范围内。[0085]提供本公开的主题作为用于执行本公开中描述的特征的装置、系统、方法和程序的示例。但是,除了上述特征之外,还可以预期其他特征或变型。可以预期的是,可以用可能代替任何上述实现的技术的任何新出现的技术来完成本公开的部件和功能的实现。[0086]另外,以上描述提供了示例,而不限制权利要求中阐述的范围、适用性或配置。在不脱离本公开的精神和范围的情况下,可以对所讨论的元件的功能和布置进行改变。各种实施例可以适当地省略、替代或添加各种过程或部件。例如,关于某些实施例描述的特征可以在其他实施例中被结合。[0087]另外,在本公开的描述中,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性和顺序。[0088]类似地,虽然在附图中以特定次序描绘了操作,但是这不应该被理解为要求以所示的特定次序或者以顺序次序执行这样的操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献