一种云平台全自动计算方法及装置与流程

文档序号:13688324阅读:276来源:国知局
一种云平台全自动计算方法及装置与流程

本发明涉及云计算技术领域,具体地说,是涉及一种云平台全自动计算方法及装置。



背景技术:

结构化查询语言(structuredquerylanguage)简称sql,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

现有技术中存在日志的自动分析,一般采用rsyslog实时上传日志数据,平台按照标准的nginx格式日志进行解析,然后事实进行数据的分析计算,展现给用户一个直观的服务器运行情况。rsyslog是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。rsyslog是syslog的升级版,它将多种来源输入输出转换结果到目的地,可以处理100万条信息,特点是多线程、支持加密协议:ssl,tls,relp;3.mysql、oracle、postgresql。但是平台的计算逻辑存在限制,日志的接入格式有限制,只能够对nginx日志进行分析,且得出特定的几个数据结果。用户没法进行其他结果的获取,也没法接入非nginx格式的日志进行分析,存在诸多的不方便。



技术实现要素:

为解决上述技术问题,本发明提供了一种云平台全自动计算方法,包括步骤:

获取计算数据源:连接kafka分布式发布订阅消息子单元,数据采集客户端进行流量采集,按照该数据采集客户端的配置方式进行配置,将采集到的流量数据同步传送至kafka分布式发布订阅消息子单元,该数据采集客户端分为三层:数据采集、数据传输和数据存储,其中,数据采集层,各应用程序通过调用数据中心api,将采集的数据标准格式化后传输给应用服务器上部的代理端;数据传输层,通过push写、pull读的两种方式,将采集的标准格式化数据存储至hdfs;数据存储层:采用hdfs进行数据的存储;hdfs对所述流量数据进行永久保存,kafka分布式发布订阅消息子单元保存的所述流量数据用作计算数据源;

获取计算规则:用户完成信息输入操作,填写流量中字段的名字、字段的类型、填写结果的保存方式以及执行的sql语句,将所述信息提交到redis缓存,提交任务;后台服务器启动计算程序,计算程序从redis中获取必要的参数,包括字段名字和字段类型,按照字段名字和字段类型,映射成表结构,再获取sql语句,对sql语句进行语法解析,结合所述映射表结构拆解成不同的执行动作,得到计算规则;

计算结果:读取kafka分布式发布订阅消息子单元中的流量数据按照所述计算规则进行计算,得到结果。

优选地,所述填写结果的保存方式,进一步为,按照用户的设定将计算结果保存在hdfs中或保存在redis中。

优选地,还包括步骤:将计算结果按照用户选定的结果保存方式进行保存。

优选地,所述对sql语句进行语法解析,进一步为,通过calcite对sql语句进行功能拆分。

优选地,所述将采集的数据标准格式化,进一步为,数据的输出编码方式为utf-8编码,数据标准格式包含九个字段,每个字段之间以逗号分割,所述九个字段为:c、l、t、n、s、m、p、v和o,当字段为t、n、s、m、p时对应的字段值,若含字母,则用小写字母进行书写。

本发明还公开了一种云平台全自动计算装置,包括计算数据源获取单元、计算规则获取单元和计算结果确定单元,其中,

所述计算数据源获取单元,用于获取计算用的数据源,包括数据采集客户端和kafka分布式发布订阅消息子单元,

所述数据采集客户端,与kafka分布式发布订阅消息子单元相耦接,进行流量采集,将采集到的流量数据同步传送至kafka分布式发布订阅消息子单元,该数据采集客户端分为三层:数据采集、数据传输和数据存储,其中,数据采集层,各应用程序通过调用数据中心api,将采集的数据标准格式化后传输给应用服务器上部的代理端;数据传输层,通过push写、pull读的两种方式,将采集的标准格式化数据存储至hdfs;数据存储层:采用hdfs进行数据的存储,hdfs对所述流量数据进行永久保存;

所述kafka分布式发布订阅消息子单元,分别与所述数据采集客户端和计算结果确定单元相耦接,同步接收所述数据采集客户端发送的流量数据,用作计算数据源;所述计算规则获取单元,用于得到计算规则,用户完成信息输入操作,填写流量中字段的名字、字段的类型、填写结果的保存方式以及执行的sql语句,将所述信息提交到redis缓存,提交任务;后台服务器启动计算程序,计算程序从redis中获取必要的参数,包括字段名字和字段类型,按照字段名字和字段类型,映射成表结构,再获取sql语句,对sql语句进行语法解析,结合所述映射表结构拆解成不同的执行动作,得到计算规则;

所述计算结果确定单元,分别与所述计算数据源获取单元中的kafka分布式发布订阅消息子单元和计算规则获取单元相耦接,读取kafka分布式发布订阅消息子单元中的流量数据按照所述计算规则进行计算,得到结果。

优选地,所述计算结果确定单元还用于将计算结果按照用户选定的结果保存方式进行保存。

优选地,所述sql语句处理单元,通过calcite对sql语句进行功能拆分。

优选地,所述数据采集客户端中将采集的数据标准格式化后,数据的输出编码方式为utf-8编码,数据标准格式包含九个字段,每个字段之间以逗号分割。

优选地,所述九个字段为:c、l、t、n、s、m、p、v和o,当字段为t、n、s、m、p时对应的字段值,若含字母,则用小写字母进行书写。

在使用时用户需要将流量数据接kafka。kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,用户接入kafka简单,并且可以通过offset回溯流量。用户在页面进行输入操作,完成基本信息的录入操作,点击提交任务。

本申请通过calcite对sql语句进行了功能拆分,实现了用户最大程度自定义计算逻辑的效果。不需要进行程序开发,用户在页面进行输入,点击启动,即可进行对数据的有价值信息的实时计算。

本发明采用sql的方式可以让用户自行完成开发,能够短时间内完成设计并且学习成本低的语言,能够实现程序无需开发,一条sql即可以完成程序的计算逻辑修改。

本发明数据源的实时性,结果的实时性,所有的一切都是基于源源不断地流式数据源。同时程序为实时计算,会一直运行下去,结果会一直更新下去。

与现有技术相比,本发明所述的云平台全自动计算方法,达到了如下效果:

1)本发明减少了大量的程序复用的开发工作,能够做到流式数据的短时间内完成结果的获取,对决策提供有力的数据;

2)本发明利用redis缓存,实现了配置的缓存,程序的读取,用户的修改,都基于对redis中数据的修改,原子性操作,能够保证程序操作和用户操作数据的一致性;本发明利用sql语句的语义,代替程序逻辑的开发,可以减少不必要的程序包开发时间,最大程度的达到全自动化的数据计算;

3)本发明接入数据源不仅仅为nginx格式日志,可以处理任何json流量,计算方案灵活,计算支持的面更广;

4)计算快速高效,基于yarn统一资源调度,对资源占用有很强的伸缩性。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为实施例1中云平台全自动计算方法流程图;

图2为实施例2中云平台全自动计算装置结构示意图;

其中:201-计算数据源获取单元;202-计算规则获取单元;203-计算结果确定单元。

具体实施方式

如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。

以下结合附图对本发明作进一步详细说明,但不作为对本发明的限定。

实施例1:

结合图1,本实施例提供了一种云平台全自动计算方法,包括步骤:

步骤101获取计算数据源:连接kafka分布式发布订阅消息子单元,数据采集客户端进行流量采集,按照该数据采集客户端的配置方式进行配置,将采集到的流量数据同步传送至kafka分布式发布订阅消息子单元,该数据采集客户端分为三层:数据采集、数据传输和数据存储,其中,数据采集层,各应用程序通过调用数据中心api,将采集的数据标准格式化后传输给应用服务器上部的代理端;数据传输层,通过push写、pull读的两种方式,将采集的标准格式化数据存储至hdfs;数据存储层:采用hdfs进行数据的存储;hdfs对所述流量数据进行永久保存,kafka分布式发布订阅消息子单元保存的所述流量数据用作计算数据源;

这里所说的配置就是对方程序集成我方的api,配置采集服务的ip和端口,数据就会发送过来。

步骤102获取计算规则:用户完成信息输入操作,填写流量中字段的名字、字段的类型、填写结果的保存方式以及执行的sql语句,将所述信息提交到redis缓存,提交任务;后台服务器启动计算程序,计算程序从redis中获取必要的参数,包括字段名字和字段类型,按照字段名字和字段类型,映射成表结构,再获取sql语句,对sql语句进行语法解析,结合所述映射表结构拆解成不同的执行动作,得到计算规则;

步骤103计算结果:保存读取kafka分布式发布订阅消息子单元中的流量数据按照所述计算规则进行计算,得到结果。

还包括步骤将计算结果按照用户选定的结果保存方式进行保存。计算结果根据用户的选择,如果用户选择将计算结果保存在数据库中,那计算服务会把结果存进数据库,如果用户选择存redis中,那么计算服务会把结果存入redis,计算结果的存储是看用户的配置。

优选地,所述对sql语句进行语法解析,进一步为,通过calcite对sql语句进行功能拆分。

优选地,所述九个字段为:c、l、t、n、s、m、p、v和o,当字段为t、n、s、m、p时对应的字段值,若含字母,则用小写字母进行书写。

数据采集客户端实时的采集数据,并发送到hdfs中,用于接下来的数据计算等操作。数据采集程序分三层:数据采集、数据传输、数据存储。

数据采集层:dcapplicaiton其核心功能为,各应用程序通过调用数据中心api,将采集的数据标准格式化后传输给各应用服务器上部署的代理端。

数据传输层:分为dccollector、dccenter、dcprcocessor、dcmanager四块核心功能,通过push(写)、pull(读)的两种方式,将采集的标准格式化数据存储至hdfs。dccollector主要负责接收从应用层提交的符合标准格式的数据源;dccenter负责将数据队列持久化;dcprcocessor其主要功能为将数据中心的数据存储至hdfs;dcmanager监管整个数据传输层的监控与管理工作,保障数据中心平台的稳定性和可用性。传输层考虑到数据传输的效率及安全性,根据应用平台部署在异地或本地不同地域,采取了两种不同的实现方式。

数据存储层:采用hdfs进行数据的存储,不仅仅保证的数据的安全性和容错性,同时也提供高吞吐量的数据访问。

当应用平台与数据存储部署在不同的物理位置,则需数据传输层将异地的应用服务器上的应用数据队列迁移本地后,进行存储;当应用平台与数据存储部署在相同物理位置,例如相同的机房,一般采用内网等较稳定的网络环境,则可不启用dccollector服务,直接由dcapplication将标准格式数据推送至dccenter服务处理。

数据采集:应用程序app通过调用数据中心dcapplicaiton,将符合格式规范的数据内容传递至每台服务器的数据采集代理端。

数据编码:数据输出的时候,如果不指定输出的编码方式的话,会用到系统环境变量的默认编码方式,这样会造成部分字符乱码的情况,为了解决这个问题。本发明统一规定了数据的输出编码方式为utf-8的方式。

数据字段:数据格式主要包含以下九个字段,每个字段之间以,号分割。数据格式字段有以下特点:

1:字段固定不变,不允许任意的扩展或删减。

2:字段名均为大写。

3:字段t、n、s、m、p对应的字段值,若含字母,则要求必须用小写字母进行书写,不允许书写为大写或大小写混合。所述将采集的数据标准格式化,进一步为,数据的输出编码方式为utf-8编码,数据标准格式包含九个字段,每个字段之间以逗号分割。具体字段见表1:

表1具体字段

数据采集内容:根据数据采集点来进行采集,无分类的概念。一般数据采集可包含以下内容,如表2所示:

表2数据采集的内容

数据中心的所有数据存储至hdfs中,数据存储的结构规范如下:

数据存储总共分为四级目录,其划分件表3:

表3数据存储四级目录

文件中的数据通过json格式存储。

文件以每小时为最小粒度单位存储。

实施例2:

结合图2,本实施例提供了一种云平台全自动计算装置,包括计算数据源获取单元201、计算规则获取单元202和计算结果确定单元203,其中,

所述计算数据源获取单元201,用于获取计算用的数据源,包括数据采集客户端和kafka分布式发布订阅消息子单元:

所述数据采集客户端,与kafka分布式发布订阅消息子单元相耦接,进行流量采集,将采集到的流量数据同步传送至kafka分布式发布订阅消息子单元,该数据采集客户端分为三层:数据采集、数据传输和数据存储,其中,数据采集层,各应用程序通过调用数据中心api,将采集的数据标准格式化后传输给应用服务器上部的代理端;数据传输层,通过push写、pull读的两种方式,将采集的标准格式化数据存储至hdfs;数据存储层:采用hdfs进行数据的存储,hdfs对所述流量数据进行永久保存;

所述kafka分布式发布订阅消息子单元,分别与所述数据采集客户端和计算结果确定单元相耦接,同步接收所述数据采集客户端发送的流量数据,用作计算数据源;

所述计算规则获取单元202,用于得到计算规则,用户完成信息输入操作,填写流量中字段的名字、字段的类型、填写结果的保存方式以及执行的sql语句,将所述信息提交到redis缓存,提交任务;后台服务器启动计算程序,计算程序从redis中获取必要的参数,包括字段名字和字段类型,按照字段名字和字段类型,映射成表结构,再获取sql语句,对sql语句进行语法解析,结合所述映射表结构拆解成不同的执行动作,得到计算规则;

所述计算结果确定单元203,分别与所述计算数据源获取单元201中的kafka分布式发布订阅消息子单元和计算规则获取单元202相耦接,读取kafka分布式发布订阅消息子单元中的流量数据按照所述计算规则进行计算,得到结果。

所述计算结果确定单元还用于将计算结果按照用户选定的结果保存方式进行保存。优选地,所述sql语句处理单元,通过calcite对sql语句进行功能拆分。

优选地,所述数据采集客户端中将采集的数据标准格式化后,数据的输出编码方式为utf-8编码,数据标准格式包含九个字段,每个字段之间以逗号分割。

优选地,所述九个字段为:c、l、t、n、s、m、p、v和o,当字段为t、n、s、m、p时对应的字段值,若含字母,则用小写字母进行书写。

实施例3:

在实施例1和实施例2的基础上,本实施例为应用实施例:

用户需要将流量数据接kafka。kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,用户接入kafka简单,并且可以通过offset回溯流量。

用户在页面进行输入操作,完成基本信息的录入操作,点击提交任务。

具体实现方式:

用户接入kafka:用户需要按照采集服务客户端的配置方式进行相关配置,将流量采集到kafka。

用户完成信息输入操作,填写流量中字段的名字,字段的类型,填写结果的保存方式以及执行的sql语句,所有信息提交到redis缓存,用户提交任务,后台服务启动计算程序,计算程序从redis中获取必要的参数,包括字段名字,字段类型,按照名字和类型,映射成表结构,再获取sql语句,程序对sql语句进行语法解析,结合映射表结构拆解成不同的执行动作,最后源源不断地读取kafka中的数据进行解析后的动作。结果按照用户的选定方式进行保存。

这里通过calcite对sql语句进行了功能拆分,实现了,用户最大程度自定义计算逻辑的效果。支持大量sql语法。采用redis缓存对应sql语句以及映射表信息:

127.0.0.1:6380[8]>keys*

1)”columnname”

2)”columntype”

3)”sql”

具体的说,数据流量入口包括数据采集系统(或者数据采集客户端)和kafka,数据采集系统会把对方的数据放到kafka和hdfs,两边数据是一模一样的,hdfs的用处是永久保存,kafka的用处是作为计算数据源。

需求方可以按照数据采集系统的要求配置,对方流量可以源源不断的实时被采集到hdfs和kafka中。需求方也可以采用直连kafka操作,进行数据的转发。数据采集系统可以存入hdfs,便于流量的永久保存,kafka中无法永久保存流量数据。

计算服务:计算服务分为准备工作:用户输入相关配置,数据保存在redis,计算服务启动后读取redis相关配置进行初始化操作,初始化完成,解析读取到的配置,拆分成具体的任务,然后会从kafka中源源不断读取流量按照规则进行计算,得到结果。

与现有技术相比,本发明所述的云平台全自动计算方法,达到了如下效果:

1)本发明利用redis缓存,实现了配置的缓存,程序的读取,用户的修改,都基于对redis中数据的修改,原子性操作,能够保证程序操作和用户操作数据的一致性;

2)本发明利用sql语句的语义,代替程序逻辑的开发,可以减少不必要的程序包开发时间,最大程度的达到全自动化的数据计算;

3)本发明接入数据源不仅仅为nginx格式日志,可以处理任何json流量,计算方案灵活,计算支持的面更广;

4)计算快速高效,基于yarn统一资源调度,对资源占用有很强的伸缩性。

上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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