网站流量日志埋点收集—原理实现分析|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志埋点收集—原理实现分析

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第一阶段)网站流量日志埋点收集—原理实现分析】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/693/detail/12172


网站流量日志埋点收集—原理实现分析


内容简介

一、原理分析

二、小结


一、原理分析

要想去埋点收集用户的行为数据,该如何设计一个系统。

结合我们上节内容学习的雏形图,我们现在学习应该真正可以用来收集用户行为数据的埋点系统,该如何去理清它。

image.png

再次强调:埋点指我们的页面上预先埋上一段 js 代码然后用户的行为去触发它来进行用户数据的收集,只不过为了后期更好维护,为了性能做了某种改变,某种性能的优化。

图片剖析:

我们去收集用户的行为数据,用户不管是通过移动端还是其他访问网站都需要通过浏览器 broswer 发起请求,所以浏览器相当于客户进入网站交互的终端。

浏览器去访问请求页面,所以 page 是用户访问的页面(待收集数据的页面),埋点代码是写在此页面上的,红色粗框是待搜集数据的页面,埋点代码的页面。

如果把 js 写死在页面则耦合性太强,不利于后期的维护,所以我们要通过改变,把收集数据的 js 单独拉取出变成文件 javascript(collect client data),绿色小框是真正收集数据的 js。因为 js 必须在页面上才能执行,所以需要把 js 引至页面,所以需要通过 src 属性引入加载至页面上,这样就完成了前端的一个设计(红色大框是前端服务器)。

当我们把绿色的 js 收集至页面上之后,它就开始进行我们数据的收集。那么收集的数据需要发往另一台服务器collect.itcast.cn,这时候我们单独部署一台服务器来接收请求,就涉及如何把前端服务器的数据发送至另一台机器上。

这时已经不能使用 js 直接发送了,所以需要伪装请求图片<img src=”collect.itcast.cn/log.gif> , 重点不是这张图片,而是图片后面采集的数据,不管收集多少参数都可以拼接在请求的后面。所以前端 js 收集用户行为数据把数据以参数的形式拼接在请求图片的 url 后面,发送至指定的服务器。

这样就完成了前端的工作,接下来逻辑,功能来到后端。作为后端,别人发起请求需要做什么?需要接收请求和解析参数(重中之重),响应图片(log.gif1*1)以及响应 cookie(涉及用户行为追踪问题,cookie 是在浏览器端用来标识用户访问信息的,也就是说当用户第一次来时,响应生成一个 cookie,后续再访问同样的网站,就会自动携带cookie,除非 cookie 被强制删除,这样就可以根据 cookie 值判断这个日志,行为是属于哪个用户)

image.png


二、小结

上述图片就是企业要想实现上线进行用户行为埋点收集的原理图

当中重点考虑了两个性能点,第一个是为了便于后期数据收集 js 的维护,我们把它和页面做了解耦合,未写死在页面上。

第二个是为了降低一台服务器的压力,单独部署一台服务器专门用于数据的接收,所以以发送图片的形式解决跨域问题。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
8天前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
MySQL事务日志-Undo Log工作原理分析
|
3月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1763 14
MySQL事务日志-Redo Log工作原理分析
|
3月前
|
SQL 存储 关系型数据库
美团面试:binlog、redo log、undo log的底层原理是什么?它们分别实现ACID的哪个特性?
老架构师尼恩在其读者交流群中分享了关于 MySQL 中 redo log、undo log 和 binlog 的面试题及其答案。这些问题涵盖了事务的 ACID 特性、日志的一致性问题、SQL 语句的执行流程等。尼恩详细解释了这些日志的作用、所在架构层级、日志形式、缓存机制以及写文件方式等内容。他还提供了多个面试题的详细解答,帮助读者系统化地掌握这些知识点,提升面试表现。此外,尼恩还推荐了《尼恩Java面试宝典PDF》和其他技术圣经系列PDF,帮助读者进一步巩固知识,实现“offer自由”。
美团面试:binlog、redo log、undo log的底层原理是什么?它们分别实现ACID的哪个特性?
|
3月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
555 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
4月前
|
存储 缓存 关系型数据库
redo log 原理解析
redo log 原理解析
66 0
redo log 原理解析
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
61 2
|
5月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
3月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
322 0
|
3月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
4月前
|
存储 关系型数据库 MySQL
binlog、redolog、undo log底层原理及ACID特性实现分享
在数据库管理系统中,日志机制是确保数据一致性、完整性和可靠性的关键组件。MySQL数据库中的binlog、redolog和undolog作为其核心日志系统,各自扮演着不同但同样重要的角色。本文将深入探讨这三种日志的底层原理以及它们如何分别实现ACID(原子性、一致性、隔离性、持久性)特性的不同方面。
96 0