携程UBT系统

UBT是什么,可以做什么

  • User-Based Tracking,基于用户的追踪
  • 帮助应用分析流量来源,内容使用,用户属性和行为数据,便于利用数据进行产品、运营、推广策略的决策。
  • 用户行为数据采集系统(简称UBT),是一个网站追踪工具,通过追踪访客的数据,提供PV、转化率、设备、软件环境、访客地理位置分布、用户操作习惯等数据,帮助产品组和业务部门能更好的了解用户的需求,深入改进产品。
  • 目前提供的功能有:网站页面流量统计(PV),网站性能统计(Performance),用户表单填写警告统计(User Block),页面JS错误统计(JS Error),页面元素击量统计(User Action),自定义数据采集(Tracelog)。目前支持网站和移动端。 网站和移动端都是基于用户埋点的采集系统,前端脚本采集到相关信息,发送到服务器端进行处理,数据处理后推到消息队列,并进行数据的持久化,写入hbase 和Hadoop 进入BI的数据分析系统。同时提供明细数据查询的RestFul API及实时数据展示的Cdataportal。

UBT的架构图


JS端数据采集原理

  • 用户访问带有UBT采集脚本的页面时,页面中的采集脚本加载完成后,会检测页面是否有pageid, 如果存在有效的pageid,采集脚本会立即把采集到的数据作为参数通过HTTP Get方式请求后端服务器上的一张1*1大小的图片,带回数据,这个过程称之为发送数据; 如果页面没有有效的pageid, 采集脚本会在domready之后发送数据,并且把page_id设为0,后续会处理;如果pageid的默认值设为wait, 采集脚本会在pageid的值更新后再发送数据。 数据发送完成后,后端服务器处理数据,把数据推送到消息队列,并持久化到Hbase,RCFile,供用户使用。
  • UBT online站点是通过cookie来存放数据的,vid生成,sid, pvid统计等,部分数据是通过网页埋点采集的,包含大部分业务数据;部分采集客户端浏览器的信息,比如浏览器头信息,User-Agent,Referrer等;还有一部分来自浏览器的原生api,如网页性能数据。目前高版本浏览器提供的获取网页性能API:Navigation Timing,可以得到以下数据:

移动端数据采集原理

  • 移动端和网站的类似,不过采用不同的采集脚本,实现的技术也有所不同。
  • 移动端分H5, Hybird, Native, H5和Hybird采用相同的采集脚本,Native有自己的采集SDK。
  • H5和Hybird采用localstorge 存取数据,不再使用cookie。页面继续使用pageid。
  • Native分IOS和安卓,也是基于埋点来采集数据,都是使用SQL Lite来暂时存放数据。 不过使用page code来识别页面。
  • 目前都是通过HTTP GET来发送数据,不过以后可能会采用TCP来发送。

后端处理概要

  • 1) 前端JS采集脚本和SDK采集的数据发送到Netty服务器,经Mechanic处理后发送数据到消息队列Kafka集群。
  • 2) Hbase Wirter 和Rcfile Writer 分别从Kafka 队列中拉取数据写到Hbase和Hadoop。
  • 3) Hbase 会提供Restfull API 查询明细数据,供CDataPortal, CDataApp使用。
  • 4) CMatrix Storm集群从队列里拉取数据进行分析,统计,预警,然后把数据写入到Dashborad中,同时处理后的数据供CDataPortal和CDataAPP 使用。
posted @ 2020-07-14 15:18  起名字好难~  阅读(821)  评论(0编辑  收藏  举报