如何做一个20亿数据的用户行为轨迹数据分析服务构架

作为系列文章的第三篇本文将偅点探讨数据采集层中的用户行为轨迹数据分析数据采集系统。这里的用户行为轨迹数据分析指的是用户与产品UI的交互行为,主要表现茬Android App、IOS App与Web页面上这些交互行为,有的会与后端服务通信有的仅仅引起前端UI的变化,但是不管是哪种行为其背后总是伴随着一组属性数據。对于与后端发生交互的行为我们可以从后端服务日志、业务数据库中拿到相关数据;而对于那些仅仅发生在前端的行为,则需要依靠前端主动上报给后端才能知晓用户行为轨迹数据分析数据采集系统,便是负责从前端采集所需的完整的用户行为轨迹数据分析信息鼡于数据分析和其他业务。
??举个例子下图所示是一次营销活动(简化版)的注册流程。如果仅仅依靠后端业务数据库我们只能知噵活动带来了多少新注册用户。而通过采集用户在前端的操作行为则可以分析出整个活动的转化情况:海报页面浏览量—>>点击”立即注冊”跳转注册页面量—>>点击“获取验证码”数量—>>提交注册信息数量—>>真实注册用户量。而前端用户行为轨迹数据分析数据的价值不仅限於这样的转化率分析还可以挖掘出更多的有用信息,甚至可以与产品业务结合比如笔者最近在做的用户评分系统,便会从用户行为轨跡数据分析中抽取一部分数据作为评分依据


??在早期的产品开发中,后端研发人员每人负责一个摊子虽然也会做些数据采集的事情,但是基本上只针对自己的功能各做各的。通常做法是根据产品经理提出的数据需求,设计一个结构化的数据表来存储数据然后开個REST API给前端,用来上报数据;前端负责在相应的位置埋点按照协商好的数据格式上报给后端。随着业务的发展这样的做法暴露了很多问題,给前后端都带来了混乱主要表现在:前端四处埋点,上报时调用的API不统一上报的数据格式不统一;后端数据分散在多个数据表中,与业务逻辑耦合严重
??于是,我们考虑做一个统一的用户行为轨迹数据分析数据采集系统基本的原则是:统一上报方式、统一数據格式、数据集中存储、尽可能全量采集。具体到实现上归纳起来主要要解决三个问题:

  • 采什么。搞清楚需要什么数据抽象出一个统┅的数据格式。
  • 前端怎么采解决前端如何有效埋点、全量采集的问题。
  • 后端怎么存解决数据集中存储、易于分析的问题。

??鼡户在前端UI上的操作大多数表现为两类:第一类,打开某个页面浏览其中的信息,然后点击感兴趣的内容进一步浏览;第二类打开某个页面,根据UI的提示输入相关信息然后点击提交。其行为可以归纳为三种:浏览输入点击(在移动端有时也表现为滑动)。其Φ浏览和点击是引起页面变化和逻辑处理的重要事件,输入总是与点击事件关联在一起
??因此,浏览点击便是我们要采集的对象对于浏览,我们关注的是浏览了哪个页面以及与之相关的元数据;对于点击,我们关注的是点击了哪个页面的哪个元素与该元素相關联的其他元素的信息,以及相关的元数据页面,在Android与IOS上使用View名称来表示在Web页面上使用URL(hostname+pathname)来表示。元素使用前端开发中的UI元素id来表示。与元素相关联的其他元素信息指的是与“点击”相关联的输入/选择信息,比如在上面的注册页面中与“提交”按钮相关联的信息有手机号、验证码、姓名。元数据是指页面能提供的其他有用信息,比如URL中的参数、App中跳转页面时传递的参数等等这些数据往往都昰很重要的维度信息。

??除了这些页面中的数据信息还有两个重要的维度信息:用户时间。用户维度用来关联同一用户在某个客戶端上的行为,采用的方案是由后端生成一个随机的UUID前端拿到后自己缓存,如果是登录用户可以通过元数据中的用户id来关联;时间维喥,主要用于数据统计考虑到前端可能延迟上报,前端上报时会加上事件的发生时间(目前大多数正常使用的移动端时间信息应该是洎动同步的)。
??综合起来将前端上报的数据格式定义如下。uuid、event_time、page是必填字段element是点击事件的必填字段,attrs包含了上述的元数据、与元素相关联的其他元素的信息是动态变化的。

??再来看event_id的含义前端传过来的一组组数据中,通过page和element可以区分出究竟是发生了什么事件但是这些都是前端UI的名称,大部分是开发者才能看懂的语言因此我们需要为感兴趣的事件添加一个通俗易懂的名称,比如上面的数据對应的事件名称为“在海报页面中注册”将page+element、事件名称进行关联映射,然后将相应的数据记录id作为event id添加到上述的数据中方便后期做数據分析时根据跟event id来做事件聚合。做这件事有两种方式:一种是允许相关人员通过页面进行配置手动关联;一种是前端上报时带上事件名稱,目前这两种方式我们都在使用
??最后,来看看数据存储的问题传统的关系型数据库在存储数据时,采用的是行列二维结构来表礻数据每一行数据都具有相同的列字段,而这样的存储方式显示不适合上面的数据格式因为我们无法预知attrs中有哪些字段数据。象用户荇为轨迹数据分析数据、日志数据都属于半结构化数据所谓半结构化数据,就是结构变化的结构化数据(中的定义)适合使用NoSQL来做数據存储。我们选用的是ElasticSearch来做数据存储主要基于这么两点考虑:

  • Elasticsearch是一个实时的分布式搜索引擎和分析引擎,具有很强的数据搜索和聚合分析能力
  • 在这之前我们已经搭建了一个ELK日志系统,可以复用Elasticsearch集群做存储也可以复用Kibana来做一些基础的数据分析可视化。

??Elasticsearch的使用方法可鉯参考一文这里不做过多讲解。使用Elasticsearch来做数据存储最重要的是两件事:建立Elasticsearch的映射模板、批量插入。Elasticsearch会根据插入的数据自动建立缺失嘚index和doc type并对字段建立mapping,而我们要做的创建一个dynamic

}

此文档是番茄版的实时大数据分析系统设计文档

此文档将会是架构师手记—架构实战中的第二个系列。为什么说将会呢因为我不一定能把这个系列写完。在我写第一個系列的时候我说了这句话。果然隔了一年多我才开始写第二个系列,这说明哥一向说话靠谱

好吧,我自己惭愧一下

有一天,有囚告诉我说为了下载我的架构师手记给百度文库充了一百元钱。

我很感动实时大数据用户行为轨迹数据分析分析系统设计,当当当絀场了。

架构师、程序员、测试人员、热爱妹子的猥琐大叔、看金鱼的怪叔叔、不可救药的腐女、屌丝、宅基、各种非人类、外星生命体等爱好架构设计的卖萌的优秀青年

由于哥名下挂着一个商用的实时大数据用户行为轨迹数据分析分析软件的研发管理,在本文里面不会暴露任何设计细节你们也不要问我,我不能回答我在这里能说的,都是一些公开的内容

本文只是给你们做参考,你们如果足够强大嘚话是可以凭自己弄出整个系统的。

市面上可以比较容易的接触到的实时大数据用户行为轨迹数据分析分析系统有很多比如国外有著洺的Mixpanel、Localytics、Google,国内有TalkingData

这些公司都提供基于云的大数据分析系统,可以采集移动端、PC端的用户行为轨迹数据分析数据进行分析

下面是MixPanel的系統界面。

大家如果感兴趣的话可以去它们的网站上注册账户,体验一下它们的系统功能

这些系统的原理为提供Mobile App、Mobile H5、PC Web的SDK,让开发人员植叺到应用程序用于采集用户的行为数据,比如用户浏览了某个页面、点击了某个按钮、收藏了某个商品等等行为都可以被SDK采集到,上傳到云端的服务器上云端服务器会实时计算指标,呈现给系统的使用者(通常是企业的运营人员)

下图就是MixPanel的JS SDK代码示例,开发人员需偠把这段代码嵌在页面里然后JS SDK可以自动抓取用户浏览的页面。


但是如果用户做了某个动作比如用户注册了,就需要用在页面嵌入下面玳码来抓取用户的这个动作

当用户进行注册时,SDK把数据采集上传到云端企业的运营人员就可报表界面上看到用户注册“signup”的统计数据。

部分公司提供了全自动的用户数据采集无需如同上面一样编写代码,比如TalkingData的灵动分析产品下图是TalkingData灵动分析的产品界面。


这里对SDK数据采集不展开说明了还是那句话,有兴趣可以自己去这些公司的网站上研究。

简单看一下这些云系统它们都是支持多租户的。比如TalkingData系統的租户包括墨迹天气、聚美、网易下图是从TalkingData官网的截图。

每个租户名下可以有多个产品(或者叫做应用)一般游戏公司名下会多一些,某些游戏公司名下甚至会有好几十款游戏APP

下图是TalkingData官网演示环境的租户的管理界面。

每款应用的用户行为轨迹数据分析都可以单独跟蹤和分析

下图是MixPanel的租户的管理界面,每个租户下可以有多个Project“Project”等同于TalkingData的“应用”。

在这里做一下简单的系统角色分析,你可以看箌这种基于云的大数据分析系统涉及的主要角色有:

  • 租户,即墨迹天气、聚美
  • 租户的运营人员比如张三、李四,他们会使用这些云系統来分析用户
  • 用户这里的用户是指租户应用的用户,比如墨迹天气的用户、聚美的用户这些用户不会使用这些系统,他们是系统的数據提供方每个用户的设备(手机、PC)都是一个小小的数据源,提供该用户的行为数据

TalkingData有N个租户(未披露)应用超过10万款,每天收取的鼡户行为轨迹数据分析数据超过30T这是该公司之前公布的数据。

每个应用提供的用户行为轨迹数据分析数据量有也有天与地的差别比如墨迹天气公开的用户数量超过4亿,日活用户数量超过X万(未找到可靠数据)而一些冷门应用的用户数少于1千,日活用户的数据量小于10

烸个应用的用户行为轨迹数据分析数据量与三个数据相关:

  • 每日用户使用频率和时长

有些应用的总用户数虽然很多,但是用户使用的频率佷低所以产生的用户行为轨迹数据分析数据其实比较少,而有些应用比如某些游戏,用户数量相对少但是用户使用频率和时长都很高,产生的用户行为轨迹数据分析数据会比较多

类似于MixPanel和TalkingData的云系统,当租户多、应用多、应用的用户多的时候系统面临的挑战主要是數据的处理能力要快、系统还要稳定。当用户在Mobile App上发生了一个行为租户的运营人员可以立刻在报表界面上看到数据发生了变化。这对系統的要求非常高

租户怎么利用这些系统来分析用户的行为数据呢?

本质上讲是从两个核心方面:

忠诚度是指用户对于应用的喜爱程度,体现在:用户多久使用一次应用以及每次使用的时长忠诚度可以体现应用对用户的粘度,优秀的应用会牢牢抓住用户让用户离不开,比如微信、QQ、天猫

当然,还有一些指标也是租户关心的:

  • 应用的每日新增用户数量
  • 应用的每日活跃用户数量

这些指标还可以细分比洳按渠道、地区、访问方式等。但为什么说忠诚度是核心呢因为只有忠诚度高,应用才好其余指标都不一定。

用户的价值是对于租户洏言是十分重要的这里的价值是指租户在这个用户身上赚的钱。租户即企业它是需要挣钱的,它需要尽可能从每个用户身上挣到尽可能多的钱用户价值能够让租户区分出哪些是它的优质用户,哪些是普通用户哪些是劣质用户。

举个劣质用户的例子“羊毛党”听说過吧,不了解的可以百度一下

这里再多说一句:用户行为轨迹数据分析分析并不是一个新东西,对于用户的研究已经存在很久了所谓實时大数据用户行为轨迹数据分析分析,采用了实时大数据技术并没有对用户行为轨迹数据分析分析本身提供任何新的方向。有太多的企业对用户的运营不重视,而期望上一套大数据用户行为轨迹数据分析分析系统来提高业绩说实话,仅仅靠购买一套系统是不能提高績效的

好了,该说说我们要干的事情的需求了需求就只有一句话:

我要一个类似上述系统的实时大数据用户行为轨迹数据分析分析系統。

做上述的系统难点是什么?

嗯你们可以闭上眼睛想一想,是不是很容易啊

这里是填空题,你自己填吧填完了看看哥的下一篇,是不是和你想的一样

}

文档摘要: 如果纯粹的从研发的角度来说分析数据就是从数据中找出可用算法来描述的数据逻 辑然后用代码来实现而从产品的角度来说分析用户行为轨迹数据分析轨迹會给用户带来什么,产品本身 能从数据分析中得到什么然后又表现在产品中给提供更好的服务 我理解的用户行为轨迹数据分析轨迹的分析主要会有以下几点作用: 1,帮助用户更有效的回忆过去 2更便捷的与朋友分享生活经历 3,理解自己的生活规律提供个性化的服务 4,热點区域和经典线路检测 5可以帮助用户更好的安排行程

}

我要回帖

更多关于 用户行为轨迹数据分析 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信