GaussDB趋势预测

GaussDB趋势预测

趋势预测功能模块主要实现基于历史时序数据预测未来时序变化趋势。该模块框架解耦,可以实现不同预测算法的灵活替换,并且该模块功能可以实现不同特征时序的算法自动选择,支持线性特征时序预测LR回归算法和非线性特征预测ARIMA算法。

目前该模块可以覆盖线性时序、非线性时序和周期时序的准确预测。时序预测模块和异常检测模块作为自监控的两个核心组件,通过采集程序获取数据后,在检测器阶段进行时序预测及异常检测,数据流转的流程如下:

在这里插入图片描述
数据获取和数据分析是一个相对于数据库环境独立的工具组件,包括Agent、检测器等子模块。其中Agent是部署在数据库主机环境上的,用于采集数据库中的性能指标,并通过网络,将其传送给远端检测器模块,远端检测器模块负责对采集到的性能指标数据进行收集、存储与检测。Agent模块分为三个子模块,分别是Source、Channel以及Sink,各个组件之间可插拔、可扩展。

其中数据收集端Source,用于直接监控数据库系统,并从数据库系统中采集信息;数据缓存器Channel,可以理解为缓存区,用来保存Source处捕获的数据,是一个FIFO的队列。Source捕获的数据会Push到Channel中,而后Sink组件消费由Source产生的数据。

Channel缓存在内存中,为了防止OOM,具有容量上限,当超过容量上限时,过多的元素会被禁止放入队列。数据处理及外发Sink,负责从Channel消费数据,然后将数据从Channel中清除,以指定数据格式进行外发,将数据存储到外部存储系统。

在数据从Channel端到Sink端的过程中,加入了JSON wrapper 和flow controller两个中间件,分别对应了JSON格式封装、流量控制功能。其中,由于Agent架构对限流功能天然友好,Channel充当缓存功能,实现漏桶算法进行限流。Sink上支持类似这种pipeline模式,以便后续对上传过程进行控制,提供可扩展能力。从Agent发送到检测器的网络通信协议默认为https,默认证书在部署时由部署脚本生成。检测器主要包括三个部分,分别是存储模块、时序预测模块、异常检测模块。本章节重点描述时序预测模块,异常检测模块在后续单独描述。时序预测模块的执行流程如下:

在这里插入图片描述
时序预测模块提供了两种基本的预测模型,分别是线性模型和深度学习模型。另外系统给用户指定了三种预测模式,分别是decompose、ensemble、hybrid。Decompose代表分解预测模式,ensemble代表整体预测模式,hybrid代表混合预测模式,算法步骤为:

  1. 首先获取训练数据,算法会判断数据的线性相关系数是否大于指定的阈值(系统默认0.9),如果大于阈值,则会选择线性预测模型(linear regressor),否则会选择循环神经网络预测模型(RNN)。
  2. 如果用户选择decompose预测模式,系统会调用是时序分解算法将序列分解成周期项、趋势项、残差项,然后调用模型对趋势项进行训练,得到趋势的预测结果。对于周期不需要预测,可以根据周期性递推得到未来周期项。对于残差,系统基于统计学原理,取25%和75%分位作为残差项的上下限。最终预测结果为趋势项、周期项和残差项的和。
  3. 如果用户选择ensemble预测模式,系统会直接对数据进行训练,然后进行预测,得到预测结果和模型评分。
  4. 如果用户选择的hybrid模式,系统会串行的执行decompose和ensemble两种预测模式流程,同时根据它们最终模型评分的高低选择最优的预测结果。如果用户真实采集到的信息与时序预测的结果出现较大偏差(大于预设阈值),则认为当前情况出现异常,执行报警逻辑。
posted @ 2025-02-18 09:59  喜酱喜酱  阅读(2)  评论(0)    收藏  举报