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

本文涉及的产品
日志服务 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日志并进行多维度分析。
相关文章
|
10天前
|
存储 SQL 监控
|
10天前
|
运维 监控 安全
|
1月前
|
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的哪个特性?
|
13天前
|
监控 关系型数据库 MySQL
分析慢查询日志
【10月更文挑战第29天】分析慢查询日志
34 3
|
13天前
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
32 2
|
1月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
377 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1625 14
|
1月前
|
存储 消息中间件 大数据
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
35 4
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
43 2
|
2月前
|
存储 缓存 关系型数据库
redo log 原理解析
redo log 原理解析
40 0
redo log 原理解析