大数据之路 读书笔记 Day3

回顾:Day 2 总结了浏览器日志采集的过程 回看点击:大数据之路 读书笔记 Day 2

无线端客户的日志采集

无线端客户日志采集名为UserTrack(UT)的SDK来采集,UT将采集称为事件,常用的包括页面事件(即页面浏览)、控件点击事件(即页面交互),下面会给大家讲到。

SDK、UK是什么?

  • SDK 是 “Software Development Kit” 的缩写,中文意译为“软件开发工具包”。它是由软件、硬件、操作系统或编程语言的制造商提供的一套开发工具,旨在帮助软件开发者为特定的平台、系统或语言创建应用程序。
  • 在阿里巴巴的大数据实践中,UT通常指的是UserTrack, UserTrack主要用于收集用户行为数据,包括页面浏览、页面交互、控件点击等事件,这些数据对于后续的数据分析、用户行为理解、产品优化和个性化推荐等都至关重要。UT就是阿里巴巴内部用于日志采集的一种软件开发工具包,也就是SDK。

1. 页面事件

1)日志采集内容

页面事件日志 1.设备及用户的基本信息 2.被访问页面的信息,如商品详情页的商品ID、所属店铺 3.访问基本路径,如页面来源、来源的来源

2)日志采集时间

接口方法调用
页面展现接口,记录进入页面时的状态,但不发送日志
页面退出接口,可以是退出淘宝,也可以是返回上一页,发送日志
添加页面扩展信息接口,离开前给页面添加相关参数,比如添加店铺ID,店铺类别等

思考:为什么要在调用退出接口时才发送日志?

  • 确保日志完整性:在用户离开页面时发送日志,可以确保所有相关的用户行为和页面状态信息都被完整记录下来。如果在页面加载时立即发送日志,可能会遗漏后续发生的用户互动或其他重要事件。
  • 减少无效或部分日志:如果在页面刚加载时就发送日志,可能会产生很多无效的日志条目,特别是对于那些用户快速浏览后离开的页面。在退出时发送日志可以避免这种情况,确保每条日志都代表了完整的用户会话。
  • 方便分析师计算用户停留时间
  • 处理异常和错误:在用户离开页面时发送日志,还可以捕捉到可能发生的异常或错误,这些信息对诊断问题和改进系统至关重要

3)特别的,UT还有一个透传参数功能

UserTrack的透传参数功能允许将当前页面的某些信息传递到下一个或后续多个页面的日志记录中。例如,如果一个用户在电商网站上搜索了"连衣裙",进入有很多商品的页面后,点击某个商品A进入商品详情页,那么这个搜索词’'连衣裙’的信息可以被透传至用户接下来访问的所有页面的日志中,包括商品A详情页,这样即使用户浏览多个页面,系统也能持续跟踪最初的搜索意图。

2. 控件点击及其他事件

  • 控件点击事件的逻辑比较简单,就是操作页面上的某个控件,因此只需要把相关基础信息告诉采集SDK就可以了
  • 其他事件:用户可以根据业务场景需求,自定义采集相关信息。UT提供了一个自定义埋点类,包含(1)事件名称(2)事件时长(3)事件所携带的属性(4)事件对应的页面

埋点是什么意思
"埋点"是指在应用程序或网站中设定的特定位置,用于收集用户行为或系统状态数据的技术。埋点可以捕捉用户的各种操作,如点击、滑动、购买等,以及页面加载、错误报告等事件。
自定义埋点是什么意思
允许开发者根据自身需求定义新的事件或指标,比如特定的用户操作、业务流程中的特定步骤等。自定义埋点类就是指开发者自己定义的一系列数据采集点,用于收集特定业务场景下的数据。
自定义埋点类的使用,意味着开发者可以更灵活地监控和分析特定的业务逻辑或用户行为,而不仅仅是通用的预设事件。

3. 特殊场景

一次浏览,一个点击就会产生一条日志,用来处理普通业务是足够的,但阿里业务体量巨大,为了平衡日志大小,减少流量消耗、采集服务器压力、网络传输压力等,采集SDK提供了聚合功能。

例如曝光日志。如果一个商品的一次曝光就对应一条日志的话,在搜索结果页的一次滚屏浏览过程中将产生几十条甚至上百条日志。从下游使用及分析的角度来说,其实只是想知道哪些内容被曝光。此时为了平衡业务需求及减少全链路资源消耗,采集SDK提供了本地聚合功能。在客户端端对这类日志进行聚合,上传聚合后的日志到采集服务器即可。同时对于一些只需要计数,而不需要知道具体内容的场景,如需要分析某些接口的调用次数,此功能就更加凸显出其作用了。

又例如,在无线客户端用户的访问行为路径存在明显的回退行为(如点击回退按钮、各种滑屏等)
“双11”主会场页>女装分会场>女装店铺A>回退到女装分会场>女装店铺B,在这个访问路径中,若只是按照普通的路径来处理,则认为第二次浏览的女装分会场来源为店铺A,就会把女装分会场的一次浏览效果记为女装店铺A带来的。倘若这样处理,就会发现类似的活动承接页其来源有一大部分均为各类详情页(店辅详情页/商品详情页),这必然干扰到分析。所以针对这种场景,阿里开发人员利用页面的生命周期,识别页面的复用,配合栈的深度来识别是否是回退行为。

上述举了两个特殊场景下日志采集的处理,实际生产中会面临更多具体问题,在这里不再赘述。

4. H5(HTML5)&Native 日志统一

H5和Native的区别是什么?
Native应用和H5(Web应用)的主要区别在于它们的开发方式、运行环境和性能表现:

  1. 开发方式
  • Native:使用特定平台的编程语言和工具开发,如iOS上的Swift或Objective-C,Android上的Java或Kotlin。
  • H5 (Web):使用Web技术栈开发,主要包括HTML5、CSS和JavaScript。
  1. 运行环境
  • Native:直接运行在设备的操作系统上,充分利用硬件资源。
  • H5 (Web):运行在设备的浏览器内,依赖于浏览器引擎的渲染和执行能力。
  1. 性能
  • Native:通常提供更流畅的用户体验和更高的性能,因为它们可以直接访问设备的硬件和系统资源。
  • H5 (Web):性能可能略逊于Native应用,尤其是在复杂的交互和图形处理方面,但随着Web技术的发展,差距正在逐渐缩小。
  1. 跨平台性
  • Native:需要为每个平台单独开发和维护。
  • H5 (Web):可以一次开发,多平台部署,具有良好的跨平台特性。
  1. 功能访问
  • Native:可以访问设备的所有功能,如相机、GPS、文件系统等。
  • H5 (Web):受限于浏览器的安全策略,访问设备功能可能需要额外的权限或通过插件/桥接实现。
  1. 更新和分发
  • Native:需要通过应用商店审核,更新可能需要用户手动下载新版本。
  • H5 (Web):可以即时更新,用户访问时自动获取最新版本,无需额外的安装步骤。
    简而言之,Native应用更适合追求高性能和深度集成的场景,而H5应用则在跨平台和快速迭代方面更有优势。

是统一到native里还是h5里呢?

阿里选择统一到native当中,原因有二:

  • 这样采集SDK可以采集到更多设备相关的数据,这在移动端的分析尤为重要
  • 采集SDK处理日志,会先在本地缓存,然后借机上传,然后在网络状况不佳时延迟上报,保证数据不丢失

5. 设备标识

  • 需要设备标识的原因:很多日志行为不要求登录,这就导致采集日志没有用户ID,PC端可以用cookie信息作为唯一标识,但是app我们就要另想办法。
  • 单app公司对设备唯一标识的需求不那么紧迫

单APP公司较少考虑设备唯一标识,因为:

  • 用户群体区分:
    单一APP公司主要关注的是其APP的用户群,而不是跨多个APP的用户识别。设备唯一标识在单一APP环境下主要用于统计和分析目的,如用户活跃度、留存率、转化率等,而不涉及跨APP用户身份的统一识别。
  • 营销和广告定位:
    多APP公司可能需要在不同APP间共享用户数据,以便进行更精准的营销和广告投放。单一APP公司则主要在其自身平台上进行这些活动,因此对跨平台用户标识的需求较低。
  • 数据孤岛:
    对于单一APP公司,数据通常集中在单一的数据库或分析系统中,不需要特别处理跨平台数据融合的问题。这减少了数据管理的复杂性和成本。
  • 苹果之前使用UDID作为设备唯一识别,但现在因为涉及数据隐私等问题已被禁用,阿里用的是UTDID。

UTDID 是一种用于移动设备的唯一标识符,它在阿里云的移动推送服务和其他场景中扮演着重要角色。UTDID 全称是 Unique Terminal Device IDentifier,它是一种软件级别的设备ID,由应用在首次调用时根据特定算法生成,并持久化存储在移动设备的存储组件中。这意味着每当同一应用再次使用 UTDID 时,它将从系统存储组件中获取先前生成的值,以保持标识符的唯一性和一致性。
UTDID 的主要用途包括:

  • 推送消息识别:在推送通知服务中,UTDID 被用来区分不同的终端设备,确保消息能够准确地推送到指定的设备上。
  • 数据统计与分析:UTDID 可用于收集和分析设备的使用情况,帮助开发者和运营者更好地理解用户行为。
  • 个性化服务:通过 UTDID,服务提供商可以提供更加个性化的体验,比如推送定制化的内容或广告。
  • 设备绑定与认证:在一些安全敏感的应用场景中,UTDID 可用于设备的绑定和认证过程。

6. 日志传输

先储存在客户端本地,然后再伺机上传。考虑日志大小及合理性(如单条日志太大可能是错误日志),同时还要考虑上传时网络耗时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第三十七天|01背包问题、分割等和子集

01背包问题 题目链接:46. 携带研究材料 文档讲解:代码随想录 状态:忘了 二维dp 问题1:为啥会想到i代表第几个物品,j代表容量变化? 动态规划中,每次决策都依赖于前一个状态的结果,在…

A37 STM32_HAL库函数 之PCD通用驱动 -- C-- 所有函数的介绍及使用

A37 STM32_HAL库函数 之PCD通用驱动 -- C-- 所有函数的介绍及使用 1 该驱动函数预览1.23 HAL_PCD_EP_Close1.24 HAL_PCD_EP_Receive1.25 HAL_PCD_EP_GetRxCount1.26 HAL_PCD_EP_Transmit1.27 HAL_PCD_EP_SetStall1.28 HAL_PCD_EP_ClrStall1.29 HAL_PCD_EP_Flush1.30 HAL_PCD_Ac…

Java中使用键盘录用【Scanner】遇到的问题

目录 一、空格截断问题:二、next()、nextInt()、nextDouble()等nextXxx()与nextLine()连用、混用的问题:问题描述:代码演示问题问题原因:解决办法:示例代码: 最后 Java中使用键盘录入,尤其是通过…

ROS2开发机器人移动

.创建功能包和节点 这里我们设计两个节点 example_interfaces_robot_01,机器人节点,对外提供控制机器人移动服务并发布机器人的状态。 example_interfaces_control_01,控制节点,发送机器人移动请求,订阅机器人状态话题…

力扣SQL50 员工的直属部门 子查询 双重

Problem: 1789. 员工的直属部门 👨‍🏫 参考题解 Code select employee_id, department_id from Employee where primary_flag Y # Y 表明是直属部门 or employee_id in (select employee_idfrom Employeegroup by employee_idhaving count(employee…

面试真题及答题思路(三)

题目 群众满意、问心无愧、领导决定,给这三个要素排个序,并说说自己的理解。领导让你去调研,路上遇到王大伯跟王大妈吵架,因为王大伯买了保健品被诈骗了,请问你该怎么办,现场模拟? 分析 第一…

【STM32-MAP文件分析】

STM32-MAP文件分析 ■ MDK编译生成文件简介■ .o■ .axf■ .hex■ .crf■ .d■ .dep■ .lnp■ .lst■ .map■ .build_log.htm■ .htm 文件■ .map 文件 ■ map文件分析■ map 文件的 MDK 设置■ 1. 要生成 map 文件 在 Listing 选项卡里面■ 2. Keil5 中打开.map 文件 ■ map 文…

信息学奥赛初赛天天练-38-CSP-J2021阅读程序-约数个数、约数和、埃氏筛法、欧拉筛法筛素数应用

PDF文档公众号回复关键字:20240628 2021 CSP-J 阅读程序3 1阅读程序(判断题1.5分 选择题3分 共计40分 ) 01 #include<stdio.h> 02 using namespace std; 03 04 #define n 100000 05 #define N n1 06 07 int m; 08 int a[N],b[N],c[N],d[N]; 09 int f[N],g[N]; 10 11 …

矩阵快速幂

矩阵快速幂 矩阵&#xff1a; 一个矩阵 A A A&#xff0c;是由 n m n\times m nm 个数字组成&#xff0c; B B B 由 m p m\times p mp 组成&#xff0c;详见下。 A [ a 1 , 1 , a 1 , 2 , a 1 , 3 ⋯ a 1 , m a 2 , 1 , a 2 , 2 , a 2 , 3 ⋯ a 2 , m ⋅ ⋅ ⋅ a n , …

javaSE知识点整理总结(上)

目录 一、面向对象 1. 类、对象、方法 2.面向对象三大特征 &#xff08;1&#xff09;封装 &#xff08;2&#xff09;继承 &#xff08;3&#xff09;多态 二、常用类 1.Object类 2.Array类 3.基本数据类型包装类 4.String类 5.StringBuffer类 6.Math类 7.Random…

CesiumJS【Basic】- #022A JavaScript 模块化加载:传统 <script> 标签与 type=“module“ 的比较

文章目录 JavaScript 模块化加载:传统 \<script> 标签与 type="module" 的比较1 目标2 对比2.1 带type="module"2.2 不带type="module"3 代码3.1 带type="module"3.1.1 hello.js3.1.2 index.html3.2 不带type="module&quo…

摄影楼电子相册打开的正确方式,快来看看

​随着科技的不断发展&#xff0c;电子相册已经成为许多人存储和分享照片的重要方式。然而&#xff0c;你知道如何正确打开电子相册吗&#xff1f;今天&#xff0c;我就来教大家一下电子相册的正确打开方式&#xff0c;快来学习一下吧&#xff01; 第一步&#xff1a;选择合适的…

docker 安装syslog

Syslog-ng是一个可靠、多功能的日志管理系统&#xff0c;用于收集日志并将其转发到指定的日志分析工具。 使用Docker CLI方式搭建 步骤 1: 拉取Syslog-ng镜像 首先&#xff0c;需要从Docker Hub拉取Syslog-ng的官方镜像。 docker pull balabit/syslog-ng:latest 步骤 2: 启动…

QT拖放事件之七:子类化QMimeData,实现对多个自定义类型进行数据

1、前提说明 /*自定义的MIME类型数据存储在QMimeData对象中, 存在两种方法:1. setData(...)可以把自定义类型的数据以QByteArray的形式直接存储在QMimeData中,但是使用此方法一次只能对一个MIME类型进行处理(可参考 QT拖放事件六:自定义MIME类型的存储及读取demo ) 一文。…

成立近30年,它如何找到政企采购突破点?

回看中国采购行业的发展&#xff0c;大致可以被分为四个阶段&#xff1a;上世纪90年代的传统采购时代、本世纪初的ERP采购时代、近10年的SRM采购时代以及2018年以来开启的数字化采购时代。近年来&#xff0c;大数据、人工智能和物联网的高速发展&#xff0c;为采购信息化提供底…

从探头到传感器:德思特数字化仪的全面结合与应用

电压探头可以用于转换信号电平、改变阻抗或提供更方便的连接方法。而包括电流探头、加速度计和光电倍增管在内的传感器或变送器&#xff0c;则可以将各种物理量转换为电信号。这两种输入设备都受到德思特数字化仪的支持。这篇应用笔记将介绍如何将德思特板卡式数字化仪和探头、…

psensor 的手势功能

psensor 的手势功能的移植过程 有时间再来写下

Spring6全面详解-自溜用

Spring Spring是一个框架,这个框架是用来帮我们解决一些问题的.其中就有IOC和AOP,分别是控制反转和面向切面编程 IOC: Inversion of Control,IOC容器放对象,使用map集合存放. Spring通过IOC容器进行管理所有JAVA对象的实例化和初始化,控制对象和对象之间的依赖关系,它管理的JAV…

PX2平台Pytorch源码编译

写在前面&#xff1a;以下内容完成于2019年底&#xff0c;只是把笔记放到了CSDN上。 需要注释掉NCLL及分布式相关的配置 libcudart.patch diff --git a/torch/cuda/__init__.py b/torch/cuda/__init__.py index 4591702..07e1268 100644 --- a/torch/cuda/__init__.pyb/torc…

Python中的for循环:深入解析与实用技巧

本套课在线学习视频&#xff08;网盘地址&#xff0c;保存到网盘即可免费观看&#xff09;&#xff1a; ​​https://pan.quark.cn/s/677661ea63b3​​ 00:01 - 详解for循环语句及其遍历功能 基本语法 Python中的for循环用于遍历集合中的元素。其基本语法如下&#xff1a; …