IOTA架构下的数据采集

Wesley13
• 阅读 515

IOTA架构下的数据采集

导读

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

在之前文章中介绍过易观提出的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架构下的数据采集

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

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

IOTA架构下的数据采集

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这