IOTA架构下的数据采集

导读

IOTA架构是基于IOTA和AI时代背景下的大数据架构模式,其整体技术结构的核心是贯穿于整体业务始终的数据模型,具有提高整体的预算效率的作用。IOTA架构这一概念由易观首次提出,并将其应用于最新研发的精细化运营工具中。

在之前文章中介绍过易观提出的IOTA架构,相信很多同学已经对整体有了一个了解。本文将介绍IOTA架构下的数据采集。

通过上图可以看出,在IOTA架构下,在当下终端设备计算能力普通较强的情况下,SDK不仅承载着以往的基础功能,并且被赋予了边缘计算的角色。例如在设备端就开始做数据完整性和有效性的校验、将用户行为转化成为统一的数据模型,然后传送给服务端。

一个稳定的数据采集端需要有如下功能,存储、回数、控制、保护。

存储: 数据存储,校验当前存储数据合法性,及防止数据被第三方串改。

回数: 数据上报,加密上报数据,防止被第三方截取,保证不受HOOK等影响,防止DNS污染等。

控制: 控制发送策略,可以指定3G/4G/wifi 环境上传,可以调整上报时间频次、本地数据缓存规则全部可动态调整。

保护: 有自保护机制。不要影响用户的正常使用,减少因逆向导致的数据异常

显而易见,普通的采集端都具有这些功能。作为IOTA架构下的采集端进行了哪些优化呢?如下:

统一模型: 在IOTA架构下从数据采集到数据接收以及数据处理都是用一套数据模型。例如对于用户行为分析时会用到的模型中,我们可以抽象出以下几个基本要素: 发生行为主体 (who),行为发生的时间(when), 行为的发生地点(where),发送的事件(what)。在IOTA架构下也统称为Common Data Model。

聚合: 同样的数据进行边缘聚合计算,如某些用户访问路径可以直接由采集端来完成,生成对应类似漏斗的事件。一般这个计算是服务器下发策略来动态控制的,当然也可以随时做出调整,值得注意的是这是不可以逆的运算,并且这种模式只适用于适合间隔发送模式的数据。

校验: 数据的完整和有效性可以放到采集端处理,确保SDK给server的数据不是被修改的,产生的数据是合理的,这就要求采集端加入防作弊的功能。 这是一个成熟产品长期需要投入的项目,大部分公司的风控做的也有一部分这样的工作。典型的案例如防止Xposed拦截,防止反编译,防止二次打包。

实时: 数据实时上报给服务器,这样才能让用户感觉到零延迟,实时计算。如12306购票,要立即的进行查看结果,不能等得到次日才看到结果。同样的带来另一个问题,个人高频上报、用户高峰期大量用户上报需要进行区分,两者对收数服务器而言是一样的,那这个时候就需要收数服务器和采集端进行通讯,动态控制。

高可控: 高可控是对数据采集最基础,也是最重要的一个要求。不然面对攻击,服务器无法实时监控,动态调整,立即处理,可能会导致服务器的短时间无法正常工作(如数据处理延迟,严重的乃至宕机)。如图:

当然对于很多大数据架构中,数据采集端各不相同,这也是我们在支持大量用户后的一个分享。

总的来说,IOTA架构下的数据采集有如下特点:采用统一的数据模型,支持边缘计算、支持与服务器端动态交互的控制策略。这些已经在易观的数据产品中广泛使用,也欢迎大家试用易观方舟、易观千帆。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

IOTA架构下的数据采集 - HelloWorld