愿景

搭建一套简单、高效的用户行为记录及分析工具,为产品功能升级、运营电销转化用户购买行为提供数据支撑。
友盟的数据统计功能太弱了,第三方产品如神策数据、growingio功能还比较完善,不过费用上不适合现有产品规模,后续看需求情况再考虑。

基本场景

  • 用户打开app,app自动同步NTP服务器时间
  • 用户使用app进行了多个操作
  • app自动记录了用户的操作序列,连同时间戳、device信息、app版本信息发送给了「User Track Server」
  • backend将关键api调用结果,连同时间戳、用户信息发送给「User Track Server」
  • 「User Track Server」定期(每隔1小时)统计用户行为数据,更新统计相关的统计视图(替代友盟等统计工具信息)
  • 产品经理登录「User Track Server」的数据库,使用sql按照时间戳排序,查询用户行为记录,分析用户行为路径,验证产品设计逻辑
  • 运营团队登录「User Track Server」的数据库,使用sql查询特定用户的统计行为,对用户进行个性化的电销转化

iOS/Android端追踪的用户行为

通用数据

  • 机型信息:手机品牌、型号,操作系统及版本,设备ID, app版本
  • 用户信息:用户ID

追踪控件、事件

  • 点击
  • Button:事件、页面类ID、控件名称、时间戳、api地址
  • Table/Menu:事件、页面类ID、控件名称、条目序号、、时间戳、api地址
  • 滑动:
  • Menu:事件、页面类ID、控件名称、条目序号、时间戳
  • 页面生成:事件、页面类ID、页面标题、点击来源、时间戳、
  • 页面销毁:事件、页面类ID、页面标题、点击来源、时间戳、页面生命时长、
  • 切换到后台:当前页面名称、时间戳

Backend端追踪的用户行为

通用数据

  • 机型信息:手机品牌、型号,操作系统及版本,设备ID, app版本
  • 用户信息:用户ID

api执行数据

  • 接口名称、api地址、执行状态(成功或者失败)、反馈消息(非数据消息)

第三方调用通知

  • 服务名称、用户ID、调用状态(成功或者失败)、反馈消息

整体架构

track-server-1

原图链接

NTP服务器

自己搭建的同步所有时间戳的服务器,客户端(包括app client和backend)每次启动的时候后台进行同步,同时后台保持一个计数器,统计秒数,每次记录用户日志的时候采用 启动时间+计数器 进行;计数器超过1个小时重新同步。

Track Server

消息队列可以搞大一点,track server直接写track库

Track 数据库

Track数据库包含两部分数据:

  • 用户信息相关的数据:跟主库保持同步,主库的数据库的「用户信息」有关的表添加trigger,当有数据增加或者更新的时候,实时触发track数据库的用户信息相关的表更新
  • 用户行为数据:直接由track server写入

同时,track数据库由分析师增加分析视图,分析师直接登录track数据库进行分析操作;正常情况下,分析师只具有可读权限。