大型电商日志离线分析系统(一)
一、项目需求分析
某大型网站日志离线分析系统
1.1 概述
该部分的主要目标就是描述本次项目最终七个分析模块的页面展示。
1.2 工作流
在我们的demo展示中,我们使用jquery+echarts的方式调用程序后台提供的rest api接口,获取json数据,然后通过jquery+css的方式进行数据展示。
步骤概述:
1、调用REST API:使用jQuery的$.ajax方法或者fetchAPI(如果您愿意的话)来调用后端提供的REST API,获取数据。
2、处理JSON数据:将获取到的JSON数据处理成ECharts支持的格式。
3、使用ECharts展示数据:将处理后的数据传递给ECharts图表实例,用于展示图表。
4、使用CSS进行样式定制:根据需要使用CSS来调整图表的样式或页面布局。
1.3 分析
1.3.1 总述
在本次项目中我们分别从七个大的角度来进行分析,分别是:
用户基本信息分析模块
浏览器信息分析模块
地域信息分析模块
用户浏览深度分析模块
外链数据分析模块
订单分析模块
事件分析模块
下面就每个模块进行最终展示的分析。
注意几个概念:
用户/访客:表示同一个浏览器代表的用户,非注册用户。
会员:表示网站的一个正常的会员用户,在平台尚注册过。
会话:一段时间内的连续操作,就是一个会话中的所有操作。
pv:访问页面的数量pageview。
uv:一个用户访问该网站。
在本次项目中,所有的计数都是去重过的。比如:活跃用户/访客,计算uuid的去重后的个数。
1.3.2 用户基本信息分析模块
用户基本信息分析模块主要是从用户/访客和会员两个角度分析浏览相关信息,包括但不限于新增用户,活跃用户,总用户,新增会员,活跃会员,总会员以及会话分析等。下面就各个不同用户信息角度来进行分析:
1.3.2.1 用户分析
该分析主要分析新增用户、活跃用户以及总用户的相关信息。
新访客:老访客(活跃访客中)=1:7~10
活跃用户,是相对于“流式用户”的一个概念,是指那些会时不时地光顾下网站,并为网站带来一些价值地用户。
简单理解就是经常访问该网站的用户,如浏览商品,下单,收藏等行为。
新增访客数:一天的独立访客中,历史第一次访问您网站的访问数;老访客数:今日之前有过访问,且今日再次访问的访客,记为老访客。
1.3.2.2 会员分析
该分析主要分析新增会员、活跃会员以及总会员的相关信息。
1.3.2.3 会话分析
该分析主要分析会话个数、会话长度和平均会话长度相关的信息。
1.3.2.4 hourly分析
该分析主要分析每天每小时的用户、会话个数以及会话长度的相关信息。
1.3.3 浏览器信息分析模块
在用户基本信息分析的基础上添加一个浏览器这个维度信息。
1.3.3.1 浏览器用户分析
同用户分析。
1.3.3.2 浏览器会员分析
同会员分析。
1.3.3.3 浏览器会话分析
同会话分析。
1.3.3.4 浏览器pv分析
分析各个浏览器的pv值。
1.3.4 地域信息分析模块
主要分析各个不同省份的用户和会员情况。
1.3.4.1 活跃访客地域分析
分析各个不同地域的活跃访客数量。
1.3.4.2 跳出率分析
分析各个不同地域的跳出率情况。
一个网站在某一段时间内有1000不同访客从这个链接进入,同时这些访客中有50个人没有二次浏览行为,直接退出网站,那么针对这个入口网址的跳出率就是50/1000=5%。
1.3.5 用户访问深度分析模块
该模块主要分析用户的访问记录的深度,用户在一个会话中访问页面的数量。
网站访问深度就是用户在一次浏览你的网站的过程中浏览了你的网站的页数。如果用户一次性的浏览了你的网站的页数越多,那么就基本上可以认定,你的网站有他感兴趣的东西。用户访问网站的深度用数据可以理解为网站平均访问的页面数,就是pv和uv的比值,这个比值越大,用户体验度越好,网站的粘性也越高。
此处uv可以理解为cookie中的uuid数量。
1.3.6 外链数据分析模块
主要分析各个不同外链端带来的用户访问量数据。
外链就是指在别的网站导入自己网站得到链接。导入链接对于网站优化来说是非常重要的过程。导入链接的质量(即导入链接所在页面的权重)间接影响了我们的网站在搜索引擎中的权重。
意义在于要不要做这个外链推广。
1.3.6.1 外链偏好分析
分析各个外链带来的活跃访客数量。
1.3.6.2 外链会话(跳出率)分析
分析会话相关信息,并计算相关会话跳出率的情况。
1.3.7 订单数据分析模块
主要分析订单的相关情况
1.3.8 事件分析模块
在本次项目中,只选用一个事件案例进行分析,就是订单相关的一个事件分析。
三、js sdk
3.1 概述
该文档的主要作用是为了开发人员参考可以参考本文档,了解js sdk的集成方法以及提供的各种不同的api。
注意:不采用ip来标示用户的唯一性,我们通过在cookie中填充uuid来标示用户的唯一性。
埋点:在页面(jsp或html)中植入js代码。
初级埋点:在产品流程关键部位植入相关统计代码,用来追踪每次用户的行为,统计关键流程的使用程度。
中级埋点:植入多段动作代码,追踪用户在该模块每个页面上的系统行为,事件之间相互独立。
高级埋点:联合公司工程、etl采集分析用户全量行为,建立用户画像,还原用户行为模型,作为产品分析,优化的基础。
3.2 执行工作流
在我们的js sdk中按照收集数据的不同分为不同的事件,比如pageview事件等。js sdk的执行流程如下:

用户进入网页。
判断是否有用户id。
如果没有,判断是否需要生成id,如果需要则生成id并保存在cookie中。
判断是否有会话id。
如果没有,生成会话id并保存在cookie中。
分支到两个操作:
触发PageView事件。
触发Launch事件。
执行了一系列事件处理,包括发送event事件、发送页面停留时间事件、发送页面关闭时的数据,以及可能的其他自定义事件处理。
3.3 数据参数说明
在各个不同事件中收集不同的数据发送到nginx服务器,但是实际上这些收集到的数据还是有一些共性的。下面将所有可能共用到的参数描述如下:


3.4 事件分析
3.4.1 概述
针对我们最终的不同分析模块,我们需要不同的数据,接下来分别从各个模块分析,每个模块需要的数据。
用户基本信息就是用户的浏览行为信息分析,也就是我们只需要pageview和launch事件就可以了;
浏览器信息分析以及地域信息分析其实就是在用户基本信息分析的基础上添加浏览器和地域这个维度信息,其中浏览器信息我们可以通过浏览器的window.navigator.userAgent来进行分析。
地域信息可以通过nginx服务器来收集用户的ip地址来进行分析,也就是说pageview事件也可以满足这两个模块的分析。
外链数据分析以及用户浏览深度分析我们可以在pageview事件中添加访问页面的当前url和前一个页面的url来进行处理分析,也就是说pageview事件也可以满足这两个模块的分析。
订单信息分析要求发送一个订单产生的事件,那么对应这个模块的分析,我们需要一个新的事件chargeRequest。
对于自定义事件分析我们也需要一个pc端发送一个新的事件数据,我们可以定义为event。除此之外,我们还需要设置一个launch事件来记录新用户的访问。
各种不同事件发送的数据url格式如下,其中url中后面的参数就是我们收集到的数据:http://www.itbaizhan.cn/logo.gif?requestd
ata k1=v1&k2=v2&…&kn=vn
3.4.2 Launch事件
当用户第一次访问网站的时候触发该事件,不提供对外调用的接口,只实现该事件的数据收集。
3.4.3 Pageview事件
当用户访问页面/刷新页面的时候触发该事件。该事件会自动调用,也可以让程序员手动调用。
3.4.4 chargeRequest事件
当用户下订单的时候触发该事件,该事件需要程序主动调用。
相关参数如下:

3.4.5 Event事件
当访客/用户触发业务定义的事件后,前端程序调用该方法。
相关参数如下:

3.5 其它api方法
在这里只介绍设置会员id的方法,其它的辅助方法到时候编写js的时候再介绍
设置会员id

四、JAVA SDK
4.1 概述
该文档的主要作用是为了开发人员参考本文档,了解java sdk的集成方式以及提供各种不同的方法。注意:由于再本次项目中java sdk的作用主要就是发送支付成功/退款成功的信息给nginx服务器,所有我们这里提供的是一个简单版本的java sdk。
4.2 java sdk执行流
订单支付成功的工作流如下所示:(订单退款类似)
Controller(比如:servlet)调用该方法
4.3 程序后台事件分析
本项目中在程序后台只会触发chargeSuccess事件,本事件的主要作用是发送订单支付成功的信息给nginx服务器。发送格式同pc端发送方式,也是访问同一个url来进行数据的传输。格式为:
http://node1/logo.gif?requestdata

4.3.1 ChargeSuccess事件
当会员的订单最终支付成功的时候触发该事件,该事件需要程序主动调用。
参数说明:

4.3.2 ChargeRefund事件
当会员的订单退款操作的时候触发该事件,该事件需要程序主动调用。
参数说明:

4.3.3 集成方式
直接将java的sdk引入到项目中即可,也就是说在对应的java类中调用相关的方法。
4.3.4 数据参数说明
参数描述如下:

相关文章:
大型电商日志离线分析系统(一)
一、项目需求分析 某大型网站日志离线分析系统 1.1 概述 该部分的主要目标就是描述本次项目最终七个分析模块的页面展示。 1.2 工作流 在我们的demo展示中,我们使用jqueryecharts的方式调用程序后台提供的rest api接口,获取json数据,然后…...
FL Studio Fruity Edition2024中文入门版Win/Mac
FL Studio Fruity Edition2024是一款功能强大的音乐制作软件,适合初学者和音乐爱好者使用。它提供了丰富的音乐制作工具,包括音频录制、编辑、混音以及MIDI制作等功能,帮助用户轻松创作出动人的音乐作品。 FL Studio 21.2.3 Win-安装包下载如…...
学习vue3第二节(使用vite 创建vue3项目)
使用vite 创建vue3项目 node 安装请移步 node官网: https://nodejs.p2hp.com/ node 版本控制 请移步 nvm官网:https://nvm.uihtm.com/ vite 生成vue项目完整版 请移步 vite官网:https://cn.vitejs.dev/ 1、使用 npm 或者 yarn 创建vue3 项目…...
基于Siamese网络的zero-shot意图分类
原文地址:Zero-Shot Intent Classification with Siamese Networks 通过零样本意图分类有效定位域外意图 2021 年 9 月 24 日 意图识别是面向目标对话系统的一项重要任务。意图识别(有时也称为意图检测)是使用标签对每个用户话语进行分类的任务,该标签…...
Java架构师之路五、微服务:微服务架构、服务注册与发现、服务治理、服务监控、容器化等。
目录 微服务架构: 服务注册与发现: 服务治理: 服务监控: 容器化: 上篇:Java架构师之路四、分布式系统:分布式架构、分布式数据存储、分布式事务、分布式锁、分布式缓存、分布式消息中间件、…...
[计算机网络]--IP协议
前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、IP协议…...
MySQL问题记录
问题 Ubuntu2204 通过 apt 安装 mysql-server8.0.36 后,数次修改密码不生效,仍可无密码登录。 解决 mysql_native_password 是MySQL 5.7及之前版本使用的默认身份验证插件。在MySQL 8.0及更高版本中,默认的身份验证插件 caching_sha2_pass…...
LeetCode_Java_动态规划系列(1)(题目+思路+代码)
目录 斐波那契类型 746.使用最小花费爬楼梯 矩阵 120. 三角形最小路径和 斐波那契类型 746.使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。…...
Linux使用Docker部署在线协作白板WBO并结合内网穿透发布公网远程访问
文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板,允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…...
petalinux烧写image.ub报错
xinlinx SDK烧写petalinux生成的BOOT.BIN和image.ub时,BOOT.BIN烧写正常,image.ub烧写报错如下 Erase Operation failed. INFO: [Xicom 50-44] Elapsed time 0 sec.ERROR: Flash Operation Failed串口助手操作擦除flash如图: 解决方法&am…...
[足式机器人]Part2 Dr. CAN学习笔记-Ch00-2 - 数学知识基础
本文仅供学习使用 本文参考: B站:DR_CAN 《控制之美(卷1)》 王天威 《控制之美(卷2)》 王天威 Dr. CAN学习笔记-Ch00 - 数学知识基础 Part2 4. Ch0-4 线性时不变系统中的冲激响应与卷积4.1 LIT System:Linear Time Invariant4.2 卷积 Convolution4.3 单位冲激 Unit Impulse—…...
【Linux】head命令使用
head命令 head是一个在 Unix 和 Unix-like 操作系统中常用的命令行工具,用于输出文件的前 n 行。默认为 10,即显示 10 行的内容。 语法 head [options] [file(s)] head命令 -Linux手册页 选项及作用 执行令 : head --help 执行命令结果…...
【书籍分享 • 第三期】虚拟化与容器技术
文章目录 一、本书内容二、读者对象三、编辑推荐四、前言4.1 云计算技术的发展4.2 KVM、Docker4.3 本书内容简介4.4 作者简介 五、粉丝福利 一、本书内容 《虚拟化与容器技术》通过深入浅出的方式介绍KVM虚拟化技术与Docker容器技术的概念、原理及实现方法,内容包括…...
数据结构之:堆
堆(Heap)是计算机科学中的一种特别的完全二叉树结构,它满足某种特定顺序,用于实现优先队列等数据结构。堆主要有两种类型:最大堆(Max Heap)和最小堆(Min Heap)。 定义 …...
助力探索社交出海最短变现路径,融云 1V1 音视频「限时免费」
在社交赛道,1V1 业务是最好的切入点。 对于初创公司来说,1V1 业务的技术成本和运营成本相对可控,并且具备与秀场直播等业务融合拓展的巨大空间。未来,相信 1V1 业务会吸引更多开发者投身其中。 一位社交出海经验丰富的从业者曾在…...
汇编工具理解
当百度读取键盘敲入字符等得到的代码,譬如如下 section .datainput_buffer db 1 ; 保存输入字符的变量section .text global _start_start:mov eax, 3 ; 设置文件描述符为0 (stdin)xor ebx, ebx ; 清空ebx寄存器mov edx, 1 ; 要读取的字…...
Leetcoder Day21| 回溯理论基础+组合
语言:Java/Go 回溯理论基础 回溯函数也就是递归函数; 所有回溯法的问题都可以抽象为树形结构; 回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。 适用的题…...
备战蓝桥杯Day17 - 链表
链表 基本概念 链表是由一系列节点组成的元素集合。 每个节点包含两部分:数据域 item 、指向下一个节点的指针 next 通过节点之间的相互链接,形成一个链表 1. 链表的初始化 # 手动建立链表 # 链表的初始化 class Node(object):def __init__(self, …...
登录页设计新选择:毛玻璃和新拟态风格,非2.5D和插画风
登录页给潜在用户传递了产品的品牌调性,是非常重要的一类页面,之前2.5D和插画风格的登录页流行一时,不过这阵风好像过去了,新的风格开始涌现了。 一、越来越流行的毛玻璃设计风格 毛玻璃风格是指将背景模糊处理,使得…...
14:00面试,14:05就出来了,问的问题有点变态。。。
下午两点,我准时走进了面试的会议室,心中既有期待也有紧张。然而,仅仅五分钟后,我便走出了会议室,心中充满了困惑和挫败感。面试官的问题确实出乎我的预料,它们既深入又具体,让我有些措手不及。…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
