1.缩减数据上报字段
时间戳 用户ID 站点 状态码 响应长度 回源响应长度 命中状态 节点级别 节点回源的目标
2.节点数据预处理:转换
1.舍弃数据:节点级别:Level2 && 命中状态:命中
2.说明
时间戳:时间颗粒度/5分钟转化 公式:秒级时间戳-秒级时间戳%60
用户ID:节点端是否可以拿到
站点:最好转化为站点ID,方便做索引
状态码:状态码
流量:响应长度
命中流量:命中时的响应长度
回源流量:回源响应长度
命中数:命中:1,未命中:0
节点级别:Level1 或 Level2
节点回源的目标:Origin 或 L2Node
请求数:1
3.节点数据预处理:分流
分流1:
1.生成用于流量预统计的临时数据,所需字段
时间戳 用户ID 站点 流量 命中流量 回源流量 命中数 请求数
2.数据过滤:
(节点级别=="Level1"&&节点回源的目标=="Origin")||(节点级别=="Level1"&& (命中数== 1||回源流量==0))||节点级别=="Level2"
分流1:
1.生成用于状态码预统计的临时数据,所需字段
时间戳 用户ID 站点 状态码 请求数
2.数据过滤:
节点级别=="Level1"
4.节点数据预处理:预统计
分流1:
以时间戳 用户ID 站点 3个字段作为主键进行SUM
时间戳 用户ID 站点 SUM(流量) SUM(命中流量) SUM(回源流量) SUM(命中数) SUM(请求数)
数据实时累加来一条累加一次,或者到一定量累加一次
分流2:
以时间戳 用户ID 站点 状态码 4个字段作为主键进行SUM
时间戳 用户ID 站点 状态码 SUM(请求数)
数据实时累加来一条累加一次,或者到一定量累加一次
5.将节点数据上传到管理端
6.管理端数据预处理
分流1:
1.以时间戳 用户ID 站点 3个字段作为主键进行SUM
时间戳 用户ID 站点 SUM(流量) SUM(命中流量) SUM(回源流量) SUM(命中数) SUM(请求数)
数据实时累加来一条累加一次,或者到一定量累加一次
数据做1分钟延迟,如:6:00入库0:00-4:59的数据
2.将数据下沉到psql表
表索引:时间戳+用户ID+站点,先暂定不唯一索引
3.满足最后入库的数据
理想状态:相同索引只有一条数据
分流2:
1.以时间戳 用户ID 站点 状态码 4个字段作为主键进行SUM
时间戳 用户ID 站点 状态码 SUM(请求数)
数据实时累加来一条累加一次,或者到一定量累加一次
数据做1分钟延迟,如:6:00入库0:00-4:59的数据
2.将数据下沉到psql
表的索引:时间戳+用户ID+站点+状态码
3.满足最后入库的数据
理想状态:相同索引只有一条数据
7:可能的问题
1.数据入库后,同一索引有多条数据
2.没有消息中间件数据丢失,没法追踪