多云异构数据处理方法、装置及电子设备
技术领域
本发明实施例涉及数据处理
技术领域
,尤其涉及一种多云异构数据处理方法、装置及电子设备。背景技术
随着互联网技术的发展,云计算时代正式到来,经过多年的发展,云计算行业中涉及到的云商也越来越多。
现有技术中,客户在通过云商来实现业务时,尤其是涉及到监控告警方面的业务时,有可能会选择多家云商来共同实现该业务。一般的,常规化的监控告警功能的实现过程一般可以包括数据采集、数据处理、数据展示等模块,数据量小,数据格式单一。
然而,对于多云商海量异构监控数据来说,每个云商都会涉及到多种产品,每种产品又需要从很多维度进行监控,待处理的数据量大,且容易出现数据格式不统一等问题,现有技术中还无法实现对多云异构数据的统一监控,影响了业务的正常实现。
发明内容
本发明实施例提供一种多云异构数据处理方法、装置及电子设备,以实现对多云异构数据的统一监控,进而保证业务的正常实现。
第一方面,本发明实施例提供一种多云异构数据处理方法,包括:
每隔预设时长获取至少一适配对象的异构监控数据;
通过预设的适配单元从预设规则表中确定各适配对象对应的适配规则;
根据所述各适配对象对应的适配规则对所述各适配对象的异构监控数据进行转换处理,得到各适配对象的异构监控数据对应的标准化数据;
根据预设监控处理规则对所述各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果,并根据所述监控结果对所述各适配对象进行处理。
可选的,所述通过预设的适配单元从预设规则表中确定各适配对象对应的适配规则,包括:
通过预设的适配单元从预设规则表中确定各适配对象对应的自定义字段值、字段名称、字段类型、单位换算规则以及字段匹配优先级中的任意一种或多种适配规则。
可选的,所述每隔预设时长获取至少一适配对象的异构监控数据,包括:
每隔预设时长通过消息队列或表象性状态转变接口获取至少一适配对象的异构监控数据,其中,所述至少一适配对象包括不同种类的适配对象以及同一种类中不同维度的适配对象。
可选的,所述根据预设监控处理规则对所述各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果,包括:
根据统计指标算法、瞬时事件算法、连续事件算法、延时事件算法以及数据倾斜问题算法中的任意一种或多种对所述各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果。
可选的,所述根据所述监控结果对所述各适配对象进行处理,包括:
若所述监控结果为数据异常,则根据通用查询接口和/或通用聚合接口对异常的目标适配对象对应的目标监控数据进行查询,得到查询结果,并将所述查询结果发送至终端设备进行显示;
若所述监控结果为数据正常,则发送数据正常提示至所述终端设备。
可选的,在所述根据预设监控处理规则对所述各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果之后,还包括:
将所述监控结果存储至非关系型数据库中。
第二方面,本发明实施例提供一种多云异构数据处理装置,包括:
获取模块,用于每隔预设时长获取至少一适配对象的异构监控数据;
处理模块,用于通过预设的适配单元从预设规则表中确定各适配对象对应的适配规则;
所述处理模块,还用于根据所述各适配对象对应的适配规则对所述各适配对象的异构监控数据进行转换处理,得到各适配对象的异构监控数据对应的标准化数据;
所述处理模块,还用于根据预设监控处理规则对所述各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果,并根据所述监控结果对所述各适配对象进行处理。
第三方面,本发明实施例提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面任一项所述的多云异构数据处理方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面任一项所述的多云异构数据处理方法。
第五方面,本发明实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的多云异构数据处理方法。
本发明实施例提供了一种多云异构数据处理方法、装置及电子设备,采用上述方案后,可以每隔预设时长获取至少一适配对象的异构监控数据,然后通过预设的适配单元从预设规则表中确定各适配对象对应的适配规则,再根据各适配对象对应的适配规则对各适配对象的异构监控数据进行转换处理,得到各适配对象的异构监控数据对应的标准化数据,最后根据预设监控处理规则对各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果,并根据监控结果对各适配对象进行处理,通过基于适配单元对多云商的异构数据统一适配,进而生成标准化数据的方式,实现了对多云异构数据的统一监控,并保证了业务的正常实现。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的多云异构数据处理方法的原理示意图;
图2为本发明实施例提供的多云异构数据处理方法的流程示意图;
图3为本发明实施例提供的自动化运维管理的界面示意图;
图4为本发明实施例提供的多云异构数据处理装置的结构示意图;
图5为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例还能够包括除了图示或描述的那些实例以外的其他顺序实例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
现有技术中,客户在通过云商来实现业务时,尤其是涉及到监控告警方面的业务时,有可能会选择多家云商(例如A云商、B云商和C云商)来共同实现该业务。一般的,常规化的监控告警功能的实现过程一般可以包括数据采集、数据处理、数据展示等模块,数据量小,数据格式单一。然而,对于多云商海量异构监控数据来说,每个云商都会涉及到多种产品,每种产品又需要从很多维度(例如,需要从CPU、硬盘、内存等多个维度)进行监控,且各云商的监控告警数据的体量、质量、格式、单位等不尽相同,待处理的数据量大,且容易出现数据格式不统一等问题,现有技术中还无法实现对多云异构数据的统一监控,影响了业务的正常实现。
基于上述问题,本申请通过基于适配单元对多云商的异构数据统一适配,进而生成标准化数据的方式,既实现了对多云异构数据的统一监控又达到了保证各业务的正常实现的技术效果。
图1为本发明实施例提供的多云异构数据处理方法的原理示意图,如图1所示,在该实施例中,该多云异构数据处理方法的实现原理具体可以包括:多云监控采集:自研云通过数据采集工具telegraf或openstack采集监控数据sink到本地的开源流处理平台,示例性的,开源流处理平台可以为kafka。异构云通过restful(表象性状态转变)接口或者消息队列采集监控数据sink到本地kafka。异构数据:多云商监控数据未适配的数据都在这一层。适配:多云商未适配的数据在这一层通过通用适配程序(通用适配单元)以及预设规则表统一标准化:格式统一、单位统一。标准化数据:标准化之后的数据在这一层。监控告警:flink/spark通过消费标准化的原始监控数据计算生成监控告警信息。持久化:监控告警信息存储到非关系型数据库,示例性的,关系型数据库可以为mongodb数据库或elasticsearch数据库。API(Application Programming Interface,应用编程接口)层:通用查询接口和通用聚合接口满足预设阈值以上的单表查询和聚合业务,示例性的,预设阈值可以为90%。数据应用:通用接口的应用场景,可以供前端和后端研发人员直接调用,也可以加上认证暴露公共OpenApi(Open Application Programming Interface,公共应用编程接口)。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本发明实施例提供的多云异构数据处理方法的流程示意图,本实施例的方法可以由服务器执行。如图2所示,本实施例的方法,可以包括:
S201:每隔预设时长获取至少一适配对象的异构监控数据。
在本实施例中,在实现一业务时,可能涉及到多个适配对象,因此,可以每隔预设时长获取至少一与该业务对应的适配对象的异构监控数据。
其中,预设时长可以根据实际应用场景自定义进行设置,示例性的,预设时长可以为2-5秒中的任意值。
进一步的,所述每隔预设时长获取至少一适配对象的异构监控数据,具体可以包括:
每隔预设时长通过消息队列或表象性状态转变接口获取至少一适配对象的异构监控数据,其中,至少一适配对象包括不同种类的适配对象以及同一种类中不同维度的适配对象。
具体的,不同种类的适配对象可以为不同云商的适配对象,示例性的,可以为A云商、B云商或者C云商,而同一种类中不同维度的适配对象可以为同一云商中的不同硬件设备,示例性的,可以为CPU、硬盘或者内存等。
此外,适配对象可以包括自定义适配对象(例如,自研云)和现有适配对象(例如,异构云)。自定义适配对象可以通过telegraf或openstack采集监控数据sink到本地kafka,而现有适配对象可以通过restful接口或者消息队列采集监控数据sink到本地kafka。
S202:通过预设的适配单元从预设规则表中确定各适配对象对应的适配规则。
现有技术也有异构数据标准化的方法,例如:根据业务和行业经验预先制定一套转换规则,多种数据源根据规则转换成标准化的数据。而在本实施例中,可以根据业务和行业经验预先写一套适配程序,将该适配程序部署于内存特定位置处,得到适配单元,该适配单元会定时查询规则表,把源数据按照对应的适配规则解析成标准化数据,通过只设置一套适配程序,适配规则可以动态配置,源数据可以动态增加,显著减少了代码量。例如:多云商环境下有很多维度的指标,单说cpu这个维度,需要给A云商、B云商和C云商等分别配置一个适配规则,而运行同一套适配程序就可以分别把A云商、B云商和C云商的cpu维度的相关指标标准化,大大提高了数据接入层开发效率,缩短了开发时间,节省了人力资源。
此外,对于个别实在没办法使用通用适配程序标准化的监控数据,可以单独为这些异构数据设置适配程序。
进一步的,通过预设的适配单元从预设规则表中确定各适配对象对应的适配规则,具体可以包括:
通过预设的适配单元从预设规则表中确定各适配对象对应的自定义字段值、字段名称、字段类型、单位换算规则以及字段匹配优先级中的任意一种或多种适配规则。
具体的,每个云商的每个指标都需要配置一个json格式的适配规则,如果没有通用适配程序,那么可以给每个云商的每个指标写一套与之对应的标准化程序,工作量会随着多云商的加入越来越大。为了减少工作量,需要对整个适配过程抽取一些公共的逻辑封装成一套适配程序,然后再配置一些与源数据对应的适配规则即可。
对于一个云商的cpu指标的适配过程,适配程序会拿到源数据,解析json格式的适配规则,最终生成cpu维度的标准数据。适配规则中包含两部分,一个是define部分,可以自定义一些字段值加入到标准数据中;一个是math部分,match部分会规定标准化后的字段名称、字段类型等。如果有其他简单逻辑需要放在通用适配层处理的,也可以动态增加一些适配语法,如:单位换算,字段匹配优先级等。对于新的异构数据不需要再单独写程序标准化,只需要配置json格式的适配规则即可自动化完成适配,减少工作量,具体实现过程可以为:
A云商cpu对应的监控数据:
{
'cpuUsedRate":"0.9999175071716309*,
timestamp":"1606435560*,
"uuid":"ae84a94e-57a6-4bb6-a607-7338b75bef46"
+
A云商CPU对应的适配规则:
A云商CPU适配后对应的标准化数据:
{
"cloud":"huawei",
"cpuNum":"cpu-total",
"dateTime":1606435560,
"resourceUuid":"ae84a94e-57a6-4bb6--a607--7338b75bef46"
"usage":0.9999175071716309
}
S203:根据各适配对象对应的适配规则对各适配对象的异构监控数据进行转换处理,得到各适配对象的异构监控数据对应的标准化数据。
在本实施例中,消费时序数据时,凡是需要前后两条数据做比较才能确定输出的场景都需要缓存状态完成,即都需要状态管理。状态管理的本质就是操作状态,包括:
状态初始化:第一条数据来的时候需要初始化状态。状态更新:从第二条数据开始,都需要对状态进行更新。状态销毁:一直没有数据进来,可以设置超时时间销毁状态。
其中,可以通过spark或flink分布式内存计算框架来实现监控告警功能。spark和flink状态管理都有mapWithSate算子,区别在于:spark中的mapWithSate算子可以设置超时时间销毁状态;flink中的mapWithSate算子只能对状态进行初始化和更新,不能设置超时时间销毁状态,如果非要设置超时时间处理状态,需要继承KeyedProcessFunction类,复写onTimer函数操作状态。示例性的,可以通过spark来确定异构监控数据中的最大值、最小值和平均值,具体实现过程可以为:
还可以通过flink来确定异构监控数据中的最大值、最小值和平均值,具体实现过程可以为:
//内存实例
case class Mem(uuid:String,maxMem:Double,minMem:Double,
totalMem:Double,countMem:Int)
//flink使用mapWithState算子做状态管理
val resultDStream=memDStream.mapWithState[Option[Mem],Mem]{(input:Mem,state:0ption[Mem])=>
statematch{
//2.状态更新:旧状态+数据=新状态
caseSome(s)=>{
valnewState=Some(Mem(
uuid=s.uuid,
maxMem=if(input.maxMem>s.maxMem)input.maxMemelses.maxlMem,
minMem=if(input.minlMem>s.minlMem)s.minlMemelseinput.minMem,
totalMem=input.totalMem+s.totalMem,
countMem=s.countMem+1
))
val out=newState
(out,newState)
//1.初始化状态
case None=>{
val newState=Some(Mem(uuid=input.uuid,maxMem=input.maxMem,minMem=input.minMem,
totalMem=input.totalMem,countMem=1))
val out=newState
(out,newState)
}
}.flatMap(f=>f)
进一步的,在确定出各适配对象对应的适配规则之后,可以根据各适配对象对应的适配规则对异构监控数据进行转换处理,转换成统一标准的标准化数据。
S204:根据预设监控处理规则对各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果,并根据监控结果对各适配对象进行处理。
在本实施例中,根据预设监控处理规则对各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果,具体可以包括:
根据统计指标算法、瞬时事件算法、连续事件算法、延时事件算法以及数据倾斜问题算法中的任意一种或多种对所述各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果。
在本实施例中,可能会涉及到以下几个场景:
统计指标算法,例如:指定间隔时间内的最大值、最小值、平均值等。
统计指标算法首先需要明确每个指标的数学公式,例如:最大值:max(x);最小值:min(x);平均值:(x1+x2+...+xn)/n。
然后确认定义哪些变量,如图5所示:最大值一个变量即可:maxMem,最小值一个变量即可:minMem,平均值需要两个变量:totalMem、countMem。最后入库之前由内存变量生成指标结果,例如:最大值:maxMem;最小值:minMem;平均值:totalMem/countMem。
此外,其他统计类指标,如:方差、标准差、中位数等也是类似的算法。
瞬时事件算法,例如:单条数据有没有命中某个阈值,该算法可以直接用指标值和阈值做个匹配即可,瞬时事件不涉及状态管理。
连续事件算法,例如:时序数据连续若干次命中算一次连续事件。
连续事件是由若干个瞬时事件组成的,需要用到状态管理,spark和flink的mapWithState算子都可以实现。
对于连续事件算法,每一条数据都和阈值做匹配,然后通过比较前后两条数据的匹配结果,计算出业务字段,即可以知道连续事件全生命周期的每一步细节,计算过程逻辑清晰,计算结果准确。具体的,连续事件算法的实现过程可以为:
//alarmMetric:状态中的字段
//info.monitorMetic:新数据中的字段
val(alarmTime,alarmDuration,alarmRecoveryTime)=(state,input)match{
case(true,true)=>
(alarmMetric.alarmTim,alarmMetric.alarmDuration+(info.monitorMetic.endTime-info.monitorMetic.beginTime),-1L)
case(true,false)=>
(a1armMetric.alarmTime,alarmMetric.alarmDuration,monitorMetic.endTime)
case(false,true)=>
(info.alarmMetric.alarmTime,(info.moni torMetic.endTime-info.monitorMetic.beginTime),-1L)
//默认:(false,false)
Case-=>
(-1L,0L,-1L)}
例如:监控数据每1分钟采集一次,需求:连续10次以上超过阈值则记为一次告警,需要计算出告警时间,告警持续时间以及告警恢复时间。
进一步的,每一条数据都可以和阈值做匹配,√:表示超过阈值,×:表示没有超过阈值,通过比较前后两条数据的匹配结果,计算告警时间,告警持续时间,告警恢复时间,实现了从连续事件全生命周期的角度记录连续事件,可以做到计算过程逻辑清晰,计算结果准确无误。
延时事件算法,例如:5分钟收不到监控数据,触发健康状态告警。延时事件算法首先针对特定场景定义一个计时器,延时超过规定的时间触发相关操作。
spark框架支持设置超时时间(timeout(Duration(5*60*1000)))),在状态操作的过程中判断状态是否超时(memState.isTimingOut()),即可触发业务操作。flink框架需要继承KeyedProcessFunction类,复写onTimer函数操作状态。
数据倾斜问题算法,例如:某个ID的数据偏多导致数据分布不均。数据倾斜问题多出现在批量离线计算的场景中,导致计算任务因出错而终止。首先排查数据倾斜是什么原因引起的,确定扎堆数据的ID;确定了造成数据巨大差异化的ID之后,分组计算时可以单独针对这些ID进一步细分,例如按照ID_日期分组,这样就把整个ID的数据分摊到ID_日期的分组上,数据分散了、不扎堆了,计算任务就可以正常完成了,最后可以把计算好的结果还原到整个ID上。
此外,根据监控结果对所述各适配对象进行处理,具体可以包括:
若监控结果为数据异常,则根据通用查询接口和/或通用聚合接口对异常的目标适配对象对应的目标监控数据进行查询,得到查询结果,并将查询结果发送至终端设备进行显示。
若监控结果为数据正常,则发送数据正常提示至终端设备。
具体的,通用接口的设计思路是传参即语法,接口传参直接定义数据库查询需要的条件,并且支持特定应用场景的可编程传参,监控告警后端提供数据只要两个通用接口:单表通用查询接口和单表通用聚合接口。例如:接口定义的参数包括:查那张表、等值查询、范围查询、不等查询、in查询、模糊查询,返回接口排序规则,分页字段,聚合字段。
示例性的,通用查询接口的具体传参实现方式可以为:
{"collection":"alarminfo_realtime",
"equalCondition":{
"orgCode":"202011097513977",
"projectId":"2243909563626381855”
},
"inCondition":{
"projectName":[
”测试项目1",
"测试项目2”
]
},
"rangeCondition":{
"alarmTime":[
1606752000000,
1607443200000
]
},
"likeCondition":{
"instanceName":"test"
},
"returnFields":{
"alarmDesc":”",
"orgName":"",
"projectName":"",
"alarmLvl":"",
"status":"1"
},
"orderField":{
"alarmTime":"desc"
},
"skip":0,
"limit":10}
通用聚合接口的具体传参实现方式可以为:
"collection":alarm info__detail",
"equalCondition":{
"orgCode":"202011097513977",
"projectId":"2243909563626381855",
"initAlarmStatus":1
},
"rangeCondition":{
"beginTime":[
1606924800000,
1607529599000},
"subQueryFields":{|
"projectId":{"existField":1},
"projectName":{"existField":1},
"info_sum":{"existField":0,"if":{"alarmLvl":"info"},"then":1,"else":0},
"groupFields":[
"projectId",
"projectName
"returnFields":{
"total_count":0,
"info_sum":0
},
"totalNumField":{
"totalNum":0
},
"skip":0,
"limit":10}
通用查询接口中传参列表有collection:需要查询mongodb集合;equalCondition:等值查询;inCondition:in查询;rangeCondition:范围查询;likeCondition:模糊查询;returnFields:查询返回字段,支持设置默认值;orderField:排序字段;skip、limit:分页字段。查询结果返回数据明细和命中数据总条数。
通用聚合查询接口传参中groupFields:分组字段,支持多级字段分组;subQueryFields:子查询字段,existField:1表示表中真实字段,existField:0表示表中不存在字段,可以设置if-esle条件自定义;totalNumField:命中数据总条数,0:关闭,不返回总条数,1:开启,返回总条数,建议不做分页选择关闭;returnFields:查询返回字段,需要注意的是,聚合接口会根据返回字段的名称匹配对应的统计算法,例如:字段中包含“min”关键字计算最小值,包含“max”关键字计算最大值,包含“sum”关键字计算累加值,包含“aver”关键字计算平均值,包含“count”关键字计算总个数。由于监控告警数据各个表数据量差异很大,在使用通用接口之前需要预先建好差异化的索引,提高查询聚合性能。对于多表关联查询的业务,可以增加双表关联查询通用接口或者在原表上冗余业务字段再查询单表通用接口实现。个别业务场景,通用接口实在无法满足需求,可以写个性化接口或者离线运行程序计算好数据等措施解决。
采用上述方案后,可以每隔预设时长获取至少一适配对象的异构监控数据,然后通过预设的适配单元从预设规则表中确定各适配对象对应的适配规则,再根据各适配对象对应的适配规则对各适配对象的异构监控数据进行转换处理,得到各适配对象的异构监控数据对应的标准化数据,最后根据预设监控处理规则对各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果,并根据监控结果对各适配对象进行处理,通过基于适配单元对多云商的异构数据统一适配,进而生成标准化数据的方式,实现了对多云异构数据的统一监控,并保证了业务的正常实现。
基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
此外,在另一实施例中,在S204之后,还可以包括:
将监控结果存储至非关系型数据库中。
在本实施例中,关系型数据库可以为mongodb数据库或elasticsearch数据库。其中,mongodb数据库和elasticsearch数据库为文档型非关系型数据库,可以存储比较复杂的数据类型,且支持的查询语言强大,可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
此外,在另一实施例中,前述实现监控告警过程的程序可以用spark、flink等分布式框架实现,且分布式程序开发完成之后需要运行在集群上,当前常用的集群部署方式有3种:
第一种:直接下载apache版本的安装包安装集群,手工配置参数,手动升级、手工维护组件之间的兼容性问题。
第二种:使用自动化运维工具Ambari,参数配置,版本升级,组件兼容性等问题不需要再考虑,适合大规模集群的安装和运维。
第三种:使用自动化运维工具Cloudera Manager,参数配置,版本升级,组件兼容性等问题不需要再考虑,适合大规模集群的安装和运维。
图3为本发明实施例提供的自动化运维管理的界面示意图,如图3所示,在该实施例中,应用的自动化运维工具为Cloudera Manager,Cloudera Manager具有集群自动化安装、中心化管理、集群监控、报警等功能。Cloudera Manager支持200~500个节点大规模集群的自动化安装运维部署,安装周期短,页面化运维更方便。另外监控告警相关的程序,可以统一提交到yarn组件,yarn配置Capacity Scheduler策略,对提交上来的spark、flink、hive等计算任务统一调度资源,提高了资源的利用率。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置,图4为本发明实施例提供的多云异构数据处理装置的结构示意图,如图4所示,可以包括:
获取模块401,用于每隔预设时长获取至少一适配对象的异构监控数据。
在本实施例中,所述获取模块401,还用于:
每隔预设时长通过消息队列或表象性状态转变接口获取至少一适配对象的异构监控数据,其中,所述至少一适配对象包括不同种类的适配对象以及同一种类中不同维度的适配对象。
处理模块402,用于通过预设的适配单元从预设规则表中确定各适配对象对应的适配规则。
在本实施例中,所述处理模块402,还用于:
通过预设的适配单元从预设规则表中确定各适配对象对应的自定义字段值、字段名称、字段类型、单位换算规则以及字段匹配优先级中的任意一种或多种适配规则。
所述处理模块402,还用于根据所述各适配对象对应的适配规则对所述各适配对象的异构监控数据进行转换处理,得到各适配对象的异构监控数据对应的标准化数据。
所述处理模块402,还用于根据预设监控处理规则对所述各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果,并根据所述监控结果对所述各适配对象进行处理。
在本实施例中,所述处理模块402,还用于:
根据统计指标算法、瞬时事件算法、连续事件算法、延时事件算法以及数据倾斜问题算法中的任意一种或多种对所述各适配对象的异构监控数据对应的标准化数据进行处理,得到监控结果。
进一步的,所述处理模块402,还用于:
若所述监控结果为数据异常,则根据通用查询接口和/或通用聚合接口对异常的目标适配对象对应的目标监控数据进行查询,得到查询结果,并将所述查询结果发送至终端设备进行显示。
若所述监控结果为数据正常,则发送数据正常提示至所述终端设备。
此外,在另一实施例中,所述处理模块402,还用于:
将所述监控结果存储至非关系型数据库中。
本发明实施例提供的装置,可以实现上述如图2所示的实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图5为本发明实施例提供的电子设备的硬件结构示意图,如图5所示,本实施例提供的设备500包括:至少一个处理器501和存储器502。其中,处理器501、存储器502通过总线503连接。
在具体实现过程中,至少一个处理器501执行所述存储器502存储的计算机执行指令,使得至少一个处理器501执行上述方法实施例中的方法。
处理器501的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图5所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述方法实施例的多云异构数据处理方法。
本发明实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的多云异构数据处理方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:传感器产品元数据符合性测试应用系统