首页 > 其他分享 >大数据之路读书笔记(六)

大数据之路读书笔记(六)

时间:2024-10-20 17:19:30浏览次数:11  
标签:读书笔记 H5 采集 Native 日志 客户端 数据 页面

前言

        上一章主要研究的是无线客户端日志采集中与浏览器端日志采集相对应的技术方案,现在开始要进行无线客户端日志采集特有技术的学习。

特殊场景

        页面事件和控件点击及其他事件都是一个行为产生一条日志,如果处理普通业务场景是足够的,但是一但业务场景体量非常大就不太适用了,因此为了平衡日志大小、减少流量消耗、采集服务器压力、网络传输压力等,采集SDK提供了聚合功能,对某些场景如曝光或一些性能技术类日志,在客户端就进行适当的聚合,以减少对日志采集服务器端的请求,适当减小日志大小。总体思路就是每个曝光的元素一般都属于一个页面,利用页面的生命周期来实现适当的聚合及确定发送时机。

        区别于浏览器的页面访问,在无线客户端用户的访问行为路径存在明显的回退行为(如点击回退按钮、各种滑屏等),在进行业务分析时回退同样作为特殊场景存在。针对回退行为特殊场景,一般是使用特殊的设计,利用页面的生命周期,识别页面的复用,配合栈数据结构的特性来识别是否是回退行为。

H5&Native日志统一

        APP分为两种:一种是纯Native APP(即原生应用程序,为特定平台(如IOS、Android等)开发的应用);另一种是既有Native又有H5页面嵌入的APP,即Hybrid APP(即混合应用程序,是一种结合原生应用和网页应用特点的应用类型)。Native页面采用采集SDK进行日志采集,H5页面一般采用基于浏览器的页面日志采集方案进行采集。在当前的实践中,使用不同的采集方式采集的内容和发送的采集日志服务器都会分离开。一方面,如果需要对Hybrid APP进行完整的数据分析,则需要将两种类型的采集日志在数据处理时进行关联,而即使不考虑处理成本的情况下,Native和H5互相跳转的场景,对日志进行关联也无法还原用户路径,数据丢失严重;另一方面,在不同的终端采用不同的方案采集日志,以不同的算法来做日志统计,忍受多端之间的数据隔离,成本越来越高;所以考虑后续日志数据处理的便捷性、计算成本、数据的合理性及准确性,需要对Native和H5日志进行统一处理。

        要想实现Native和H5日志的统一处理,就需要对Hybrid日志有统一的方案。简单的思路就是将两类日志归一。一种方式是将Native日志向H5日志归一,另一种方式是将H5日志向Native日志归一,这两种方式均可以实现,选择时根据业务特点综合考虑。

        这里选择Native部署采集SDK方式,原因:一是采集SDK可以采集更多设备相关数据,在移动端的数据分析中相当重要;二是采集SDK处理日志,会先在本地缓存,而后借机上传,在网络状况不佳时延迟上报,保证数据不丢失。基于这两点,选择将H5日志归到Native日志。

        具体流程:

(1)H5页面浏览和页面交互数据,在执行时通过加载日志采集JavaScript脚本,采集当前页面参数,包括浏览行为的上下文信息以及一些运行环境信息。在APP中打开H5页面和在浏览器中的处理完全一样,在前端页面的开发中无须做任何特殊的处理,只需在页面开发时手动植入日志采集JavaScript脚本即可。

(2)在浏览器日志采集JavaScript脚本中实现将所采集的数据打包到一个对象中,然后调用WebView框架JSBridge接口,调用移动客户端对应的接口方法,将埋点数据对象当作参数传入。

(3)移动客户端日志采集SDK,封装提供接口,实现将传入的内容转换成移动客户端日志格式。采集SDK会根据日志类别来识别是页面浏览事件,还是控件点击事件,然后调用内部相应的接口进行处理,将埋点数据转换成移动客户端日志的统一格式。而后就同移动客户端日志处理一样,先记录到本地日志缓存中,择机上传。通过日志类别的识别来做不同的日志格式转换,这样未来如果要实现新的事件类别,比如自定义事件,就需要改动WebView层的接口,只需改动JavaScript的部分内容及移动客户端日志采集SDK中对应的实现即可

        基于统一的方案,为后续构建完整的用户行为路径还原树打下基础。此方案也有局限性,必须浏览器采集JavaScript、WebView、客户端采集SDK的配合,而往往业务并不希望做任何调整,更多的希望减少依赖,提高响应速度,这是目前的一个矛盾点。

设备标识

        所有互联网产品的基本指标是页面浏览(Page View,PV)和访客数(Unique Visitors,UV)。关于UV,对于登录用户,可以使用用户ID来进行唯一标识,但是很多日志行为并不要求用户登录,这就导致在很多情况下采集上来的日志没有用户ID。PC端一般是使用Cookie信息作为设备的唯一信息,对于APP来说,就需要想办法获取唯一标识设备的信息。

        历史上,IMEI(即国际移动设备识别码)、IMSI(即国际移动用户识别码)、MAC(MAC地址即媒体访问控制地址)、苹果UDID(即唯一设备标识符),曾经都可以用,但随着用户的自我保护意识加强以及系统升级,很多基本的设备信息获取都不再那么容易。例如苹果禁用UDID,IDFA(即苹果设备广告标识符)、IMEI、IMSI做了权限控制,Android系统也对设备信息获取做了权限控制。

        无线设备唯一标识符使用UTDID,即每台设备唯一标识符,需要随着IOS和Android系统对权限控制的不断升级,进行同步的调整。

日志传输

        无线客户端日志的上传,不是产生一条日志上传一条,而是无线客户端产生日志后,先存储在客户端本地,然后再伺机上传。所谓伺机,就需要数据分析的支持,如启动后、使用过程中、切换到后台时这些场景分别多久触发一次上传动作。当然单纯靠间隔时间来决定上传动作是不够的,还需要考虑日志的大小及合理性(如单条日志超大,可能就是错误日志)。另外,还需要考虑上传时网络耗时,来决定是否要调整上传机制。

        客户端数据上传时是向服务器发送POST请求,服务器端处理上传请求,对请求进行相关校验,将数据追加到本地文件中进行存储,存储方式使用Nginx(web服务器软件)的access_log,access_log的切分维度为天,即当天接收的日志存储在当天的日志文件中。考虑到后续的日志处理,以及特殊时期不同日志的保障级别,还要对日志进行分流。比如根据应用及事件类型对每日的日志进行分流。分流的好处显而易见,当时日志数据量过大时,服务器及后续的数据计算压力就非常大,而对于重要的数据计算来说,很可能只需要页面事件及控件点击事件即可,此时就可以适当地释放其他类型的日志资源来处理更重要的页面事件及控件点击事件。

        从客户端用户行为,到日志采集服务器的日志,整个日志采集过程就结束了。至于日志采集服务器的日志到下游的过程,方法有很多,可以使用消息队列(TimeTunel,TT)来实现从日志采集服务器到数据计算的MaxCompute。简单来讲,就是TT将消息收集功能部署到日志采集服务器上进行信息收集,而后续应用可以是实时应用实时的订阅TT收集到的消息,进行实时计算,也可以是离线应用定时的获取信息,完成离线计算。

        

标签:读书笔记,H5,采集,Native,日志,客户端,数据,页面
From: https://blog.csdn.net/weixin_51646756/article/details/142833081

相关文章

  • 网站与数据库连接错误怎么办
    当遇到网站与数据库连接错误时,可以按照以下步骤进行排查和解决:检查数据库服务状态:确认数据库服务是否已经启动。使用命令行工具或数据库管理软件尝试连接数据库。检查网络连接:确保服务器与数据库之间的网络连接正常。检查防火墙设置,确保没有阻止数据库端口的通信。......
  • 网站连接数据库怎么办
    连接网站到数据库通常涉及以下几个步骤:选择数据库类型:常见的数据库类型有MySQL、PostgreSQL、SQLite、MongoDB等。根据项目需求选择合适的数据库。安装数据库驱动:根据所选的数据库类型和开发环境,安装相应的数据库驱动。例如,对于Python和MySQL,可以使用 mysql-co......
  • 金蝶财务软件SQL数据库恢复
    金蝶财务软件SQL数据库的恢复过程可以根据具体情况采取不同的方法和策略。以下是一些详细的步骤和建议:一、确认备份情况首先,需要确认是否有金蝶数据库的备份存在。备份是数据恢复的基础,没有备份的情况下恢复数据将非常困难。验证备份文件的完整性和时效性,确保备份文件没有损坏且......
  • 滚雪球学Redis[9.1讲]:Redis常见问题排查指南:解决错误、优化性能与确保数据一致性
    全文目录:......
  • 三,Java编程基础:深入理解数据类型与类型转换
    数据类型与类型转换在Java编程中,数据类型是定义变量存储数据的格式。Java是一种强类型语言,这意味着每个变量和表达式都有一个明确的数据类型。本文将深入探讨Java中的基本数据类型、引用数据类型以及类型转换,包括详细的示例和代码。基本数据类型Java的基本数据类型分为整数类型......
  • 【完美复现】无人机无线传感器网络中的节能数据采集(Matlab代码实现)
    ......
  • pbootcms修改“未查询到任何数据”的方法
    定位文件打开 /core/view/Paging.php 文件。查找方法在该文件中找到 privatefunctionpageBar() 方法,大约在第263行左右。修改文本在 pageBar() 方法中找到包含“未查询到任何数据”字样的代码行。直接将“未查询到任何数据”修改为您想要显示的文本。......
  • ultralytics yolo 训练及推理自定义人脸关键点数据 - python 实现
            Ultralytics YOLO 是计算机视觉和ML领域专业人士的高效工具。    深度学习的关键点任务也是基础和常见任务,所以这里进行基于ultralyticsyolo自定义关键点数据集的模型训练和模型推理。    根据需求,可能会发布其webui版本,现在已经发布......
  • 基于Python的旅游网站数据爬虫分析-可视化大屏
    《[含文档+PPT+源码等]精品基于Python的旅游网站数据爬虫分析》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!软件开发环境及开发工具:开发语言:python使用框架:Django前......
  • 中国各省/地级市/县域统计年鉴面板数据三合一(2024全新整理)
    文章目录数据下载地址数据指标说明一、数据名称:中国县域统计年鉴面板数据二、数据名称:中国城市统计年鉴面板数据-全市/市辖区版三、数据名称:中国各省统计面板数据项目备注数据下载地址数据下载地址点击这里下载数据数据指标说明统计年鉴面板数据给大家的研究工作......