首页 > 其他 > 详细

加推时序系统RTS实现原理及应用简介

时间:2020-09-28 10:38:24      阅读:36      评论:0      收藏:0      [点我收藏+]
一、背景知识

1、什么是时序数据及分析目的?

时序数据是指时间序列数据。时间序列数据是同一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是【时期数】,也可以【时点数】。时间序列分析的目的是通过找出样本内时间序列的【统计特性】和【发展规律性】,构建时间序列模型,进行样本外【预测】。

——【定义来自百度】

Sky认为,更广义来说时序分析是一种数据挖掘:

通过“趋势、相关性、特征”,进行“整合、归纳、评估”。提升用户感知,优化用户体验,支持产品改进,加强业务管理水平。

2、涉及人群

本文主要目的是让研发人员理解时序分析和相关实现技术,同时适合以下人群:

决策层
通过了解时序分析的场景,推进分析指标的确定。制定解决问题的总体策略与方针

业务部门主管
给出专业的分析指标

数据分析师
解决业务问题,数据产生后,进行沟通,并对其发现进行深刻的分析

通过时序分析作为切入点,以此来全面思考数据驱动未来企业的方案。

二、基本原理

企业对于各端,都有埋点操作,而埋点获得的是一种时序行为数据,有用户行为,也有系统行为。大量的时序数据构成了我们的互联网时代,采用化整为零的思路实现之。

实现步骤如下:

定义时间盒子(时期数),常用的有:5min、1h、1d、1w、1m、1y
定义行为标签,每个行为标签包含<1>定义的时间盒子
时序数据到来,根据其时间戳,先放入相应的行为标签,再分别放入多个时间盒子。每个时间盒子都会进行计数+1操作
定义聚合操作盒子,每个时间盒子下有多个聚合操作盒子,常用有:sum、count、max、min、avg平均、med中位数、std标准方差
最终我们将原始的时序数据,按不同行为标签,存入不同时间盒子中并行放入其下的多个聚合操作盒子中
获取数据时,我们采用【行为数据标签】+【时间段】+【某个时间盒子】+【某种聚类盒子】或者【行为数据标签】+【某时间盒子的数量】+【某种聚合盒子】

例如:

本周,用户登录,每天登陆次数 (一个折线图),实际取数<=7个,速度极快
以现在向前24小时内的,App首页访问量 ,实际取数24个,速度极快
原理示意图如下:

三、方案选型及系统架构
本架构选择了Redis作为存储,有如下考虑

低成本
Redis项目本身接近100%代码覆盖率,故障率较低,运维成本低。但不支持分片和事务是其主要问题。

实时与高效
按经验来看,作为KV数据库使用,Redis的读写,4倍于传统数据库的读写性能。

稳定与可靠
内部队列,v2.6.5之后的管道PIPELINE,将多条命令一次性执行,单进程有可靠的原子操作保证,数据不串门。

丰富的基础算法
支持五种基本数据结构,对于需要唯一化人次的概念,实现便捷。并拥有HyperLogLog,海量数据基数计算解决方案,百度一下很多。

扩展性
集群使用,MasterSlave容易扩展。

聚合函数语言选择:LUA语言

Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。
整个Lua解析器,有2万行C代码完成,可以编译进182K的可执性文件,加载与运行兼得。
Redis原生支持对lua语言的解析,弥补了Redis不是很强大的计算能力,并具备原子性,此特性有助于Redis对并发数据一致性的支持。
系统架构图

整个RTS系统由14K的脚本实现,包括LUA语言部分。

Sky认为:一切数据都有时效性

有传统的大数据分析架构作为主要数据分析手段,因此本系统设计伊始,定位是一个强力辅助,依据新鲜数据更快的出统计更快的分析各行为指标。
有些场景的数据,可能不进入后台大数据服务,但也想快速出分析结果。按RTS的原理,可以完成一套物联网时序统计serveless系统,跑在类似树莓派嵌入式操作系统上!
实际性能指标:

最高峰值,每秒2万次API请求,不加队列中间件的情况下,稳定统计持续时间1小时。

下图某系统在日活10万+时候统计数据,紫色为中位数:

四、模块的操作使用

整个RTS系统使用Nodejs完成和redis的交互,使用require即可轻松使用

具体使用如下:

初始化实例:

以上为返回一个静态类,8个时间盒子,项目前缀为statsCenter,用以在Redis创建多实例统计系统

写入方法:

注意 上面是一个异步函数,在可以选择同步函数来写入数据。

除了常用的聚合函数,本方法还提供,dy:每年按每天在周中的统计,hm:每月按小时在天中的统计,等高级环比聚合统计值

另有recordUnique 函数配合做唯一化统计,主要使用Redis的集合数据结构完成

读取方法:

注意 上面是一个同步函数,在高并发下可以选择异步函数来获取图表。

下图为按小时取数据画图表:

整个RTS系统,只有2个对外API,一读一写,学习成本低,中级研发人员10分钟就可以完成初级时序统计前后台。

五、应用场景

1、金融证券

在证券图表中,会使用5m ,10m ,15m ,30m ,1h ,4h ,1d ,1w ,1m 等来构造K线图。在时间周期的基础上,延伸使用MACD、KDJ、CCI、Boll 、MDI等分析工具进行短期和长期的趋势分析。

特别指出:各个指标均建立在时序基础上。

金融数据以一个ticket作为一个时序包,大厂每200ms推送一次,数据量大,使用RTS后,将数据降维,实现了人们经常看到的K线图。

下图是Sky在2015年完成的自研K线图表(全原生实现)界面:

2、运营统计

比起繁杂的创业过程,互联网运营有许多确定的指标,是一个专业型较强的岗位。运营负责人通过对指标的鉴别制定出相应运营计划。

对于用户的行为,进行长期与短期分析,运营也需要深入到整个产品的生命周期,我们俗称拿数据说话,做相应的对策。

日活跃用户、周活跃用户、月活跃用户,仅各类活跃指标,结合RTS与产品功能矩阵进行比对,迅速迭代与修正。

加推在用户行为分析指标上,有独特的见解:

下一步就是聚类和客户细分环节了。

3、监控服务

监控的目的是为了,推断,预警,决策。

使用时序统计,将每小时,每天,API接口访问的,最大值、最小值、平均值进行统计,快速发现网络波动和接口异常。

使用RTS快速创建一个埋点大看板。

当有接口有超过1000ms的响应时,我们就要开始预警了。

4、多维度统计
数据挖掘是一门交叉科学,涉及统计学、机器学习、数据库、云计算、人工智能等。

通过数据挖掘分析架构,从明细级变为汇总级和分析级。形成数据立方体,辅助机器学习。

将多个时间盒子的数据进行,再分析。给出用户的时序行为特征,完成更深入的数据挖掘,解决企业核心数据分析,愉快的拥抱DT时代。

六、数据解决方案的方法论

最后给出一个,数据解决方案的方法论3步

研究、谈话理解业务活动(理解我们如何盈利,我的关键业务活动是什么)
头脑风暴(确定数据在业务上的作用,需要哪些数据)
设计与实施(评估模型,并试错)落地很重要!
我们的DT之路是星辰大海。

加推时序系统RTS实现原理及应用简介

原文:https://blog.51cto.com/13813353/2537991

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!