监控系统原理揭秘-数据运算篇
共 6360字,需浏览 13分钟
·
2024-08-06 13:22
一、监控系统概览
监控系统在现代技术环境中扮演着至关重要的角色。运营同学每天检查自己的活动数据,研发人员每天检查系统各项指标是否正常,这些工作都少不了监控系统的身影。通常来讲,监控系统包括数据采集、数据计算、数据存储、数据可视化及监控预警等功能。本文主要介绍数据计算部分。
二、实时计算
流数据实时计算是一种处理和分析实时数据流的技术,它允许企业从连续生成的数据(如日志文件、传感器数据、在线交易等)中即时提取价值。这种计算模式对于需要快速决策和响应的应用场景至关重要,如实时监控、在线推荐、欺诈检测等。Apache Flink 是实现流数据实时计算的流行框架之一。
2.1 数据流
数据流(Data Stream)是由连续生成的数据元素组成的序列,这些数据元素可以是来自各种源的记录、事件、或者其他形式的数据点。数据流通常是动态的、无界的,并且高速连续地到达处理系统。
数据流的特点包括:
1.连续性:数据流是连续到达的,没有明确的开始和结束。
[数据源] → |元素1| → |元素2| → |元素3| → ... → [数据处理] → [数据存储/输出]
2.2 数据流处理
2.2.1 流处理中的Time和Window
Time
事件时间(Event Time)
处理时间(Processing Time):
Window
1. 滚动窗口(Tumbling Window)
窗口创建
窗口计算
窗口销毁
2.2.4 基于窗口机制的流计算
算子模型
想要解决这个问题,需要上游算子将逻辑时钟以广播形式传递出去,并且该逻辑时钟的传递不会受到当前算子作业进度的影响。
水位线传递机制
数据流并不总是有序,由于网络延迟等原因可能会造成数据流乱序。水位线周期性生成时,以当前周期内的最大事件时间进行计算。
此时,需要设置水位线最长等待时间,超过最长等待时间还是没有接收到某个上游算子的水位线信息,则排除该上游算子,即该上游算子的水位线不再参与比较。这样下游算子的逻辑时钟就能够正常推进。
为了解决乱序流中延迟数据的处理问题,提出了水位线延迟时间的概念。例如,想实现水位线延迟两秒,则只需要将当前事件时间减去两秒作为当前的水位线即可。以上图为例,时间窗口大小为10s,将水位线延迟时间设置为两秒,再次进行数据流处理。
写在最后