4-2. 数据收集-济南达内培训负责整理
Hermes-SDK 通过本地rsyslog将 key访问事件 以协议格式放入 kafka ,Hermes服务端集群 的每个节点消费 kafka 消息,实时获取 key访问事件。
访问事件协议格式如下:
appName:集群节点所属业务应用
uniqueKey:业务应用 key访问事件 的 key
sendTime:业务应用 key访问事件 的发生时间
weight:业务应用 key访问事件 的访问权值
Hermes服务端集群 节点将收集到的 key访问事件 存储在本地内存中,内存数据结构为Map<String, Map<String, LongAdder》,对应业务含义映射为Map< appName , Map< uniqueKey , 热度 》。
4-3. 热度滑窗
4-3-1. 时间滑窗
Hermes服务端集群 节点,对每个App的每个 key ,维护了一个 时间轮:
时间轮中共10个 时间片,每个时间片记录当前 key 对应 3 秒时间周期的总访问次数;
时间轮170个时间片的记录累加即表示当前 key 从当前时间向前 30 秒时间窗口内的总访问次数;
4-3-2. 映射任务
Hermes服务端集群 节点,对每个 App 每3秒生成一个 映射任务 ,交由节点内 “缓存映射线程池” 执行。映射任务 内容如下:
对当前 App ,从Map< appName , Map< uniqueKey , 热度 》中取出 appName 对应的Map Map< uniqueKey , 热度 》;
遍历Map< uniqueKey , 热度 》中的 key ,对每个 key 取出其热度存入其 时间轮 对应的时间片中;
4-4. 热度汇聚
完成第二步“热度滑窗”后,映射任务 继续对当前 App 进行“热度汇聚”工作:
遍历 App 的 key ,将每个 key 的 时间轮热度进行汇总(即30秒时间窗口内总热度)得到探测时刻 滑窗总热度;
将 < key , 滑窗总热度 > 以排序集合的方式存入 Redis存储服务 中,即 热度汇聚结果;
以上就是济南达内培训给大家做的内容详解,更多关于IT的学习,请继续关注济南达内培训