一文看懂数据云平台的“可观测性”技术实践

news2025/1/16 17:49:43

背景

这是一家大型制造集团。为监控及预测工厂设备运行情况,IT部门在数据云平台DataSimba上按天执行数据作业,每24小时对工厂设备的日志数据进行分析,发现能对业务起到很好的辅助作用,效果不错。
“要不升级为每1个小时跑一次,会不会更好?”
客户萌生了这样的想法。然而,在预期获得更快、更及时的数据结果用于设备管理的同时,数据云平台的生产压力也骤增了23倍。
面对突增的压力,工程师们发现数据云平台反馈出了一些异常……

问题解析

【问题一】
原本按天调度的作业现改为小时调度,但目前不想扩充资源,所有作业真的能在单位调度周期(一小时)内跑完吗?性能有没有优化空间?

解:
针对这个问题,奇点云DataSimba工程师首先查看相关时间范围的 “作业最晚执行时长” ,发现在3:00-4:00、5:00-6:00,作业的最晚执行时长都超过了1小时(图1-1),确实存在小时作业跑不完的情况。
而通过图1-2发现,上述2个时间段,作业实例数量也远超均值(分别为5381、4477)。从而分析对应时间点的“作业实例数量”变多,导致“作业最晚执行时长”超过1小时。
图1-1 作业最晚执行时长图1-2 作业实例情况
对比业务调整前后的“作业实例平均运行时长”,发现作业平均运行时长从1分36秒(图2-1)变成了4分22秒(图2-2)左右。由此判断系统因为业务的变化产生了一些“压力”。
图2-1 业务调整前,作业实例平均运行时长
图2-2 业务调整后,作业实例平均运行时长
结合系统的调用流程分析,监控相关核心服务的“JVM Memory Pools”情况后发现:在对应实例高峰期时,负责文件的存储域出现了大量Young GC,且频繁伴随Full GC的情况(图3-1、3-2)。同时,对应接口耗时也从300ms上升到了30s。从而快速定位问题:在大量作业下发的场景,存储域的系统GC会导致 “作业平均运行时长”指标数值变大的情况。
图3-1 JVM:Young GC
图3-2 Full GC
奇点云工程师从客户环境需求出发,调整了存储域JVM的参数及年轻代和老年代的占比,最终将“作业平均运行时长”降回至1分30秒左右(图3-3),对应的“作业晚执行时长”也没有超过1小时的情况,也就是说作业均在调度周期内完成。
图3-3 优化后的作业平均运行时长
问题一指标解读:

  • 作业实例数量:时间范围*内产生作业实例的数量。
  • 作业最晚执行时长:一批任务应该在周期内执行完毕。作业最晚执行时长=一批作业中最晚执行完的任务完成时间点-该调度周期的起始时间点。例如,调度周期为每小时调度一次,发现1:00-2:00时间段内的一批作业中,最晚执行的作业在2:15完成,“作业最晚执行时长”则是1小时15分钟。说明作业在对应调度周期未执行完,需要调整。
  • 作业实例平均运行时长:时间范围内的作业实例运行总时长/时间范围内实例总数量。
    对于此类问题,往往通过查看指标变化趋势来分析排查。
    *时间范围:“作业实例数量”、“作业最晚执行时长”、“作业实例平均运行时长”均可由DataSimba用户自行配置选择,例如1:35-5:32等。

【问题二】
似乎出现了一些作业长时间未运行,影响了整体业务的正常产出?

解:
DataSimba作业状态流转如图4所示,工程师通过分析“未运行”、“等待”、“运行中”三种状态的作业数量及“运行中超过一定阈值时间(本场景设定为30分钟)的作业数量”,即可判断目前调度系统是否正常,是否需要人为干预。
图4 DataSimba作业状态流转图
平台对此类作业定义了阶段阈值以便监控,如图5显示,客户环境“运行中超过30分钟”的作业数量是1,而同样时间范围内“作业平均运行时长”通常仅为1分钟左右(图3-3),工程师立即判断出运行中的作业出现了异常情况。
图5 作业运行中阶段阈值详情
同时,在异常监控指标中,“互斥锁Exclusive (X)LOCK数量”数量也是1(图6)。经确认,“互斥锁Exclusive (X)LOCK表列表”就是当下“运行中超过30分钟”的job所引用的表,从而判断作业存在锁表的情况。在客户调整调度逻辑后,该问题得到解决,且再也没有复现过。
图6 互斥锁Exclusive (X)LOCK数量问题二指标解读:
DataSimba部署完成后,会根据系统资源规格配置作业的“调度并发数”。通过“等待资源”(的作业数)和“执行中”(的作业数)的指标,结合以下场景规则,即可判断出调度服务是否正常。

  • 场景一:“等待资源”(的作业数)大于0,且“执行中”(的作业数)等于“调度并发数”,则证明目前调度正常。
  • 场景二:“等待资源”(的作业数)大于0,且“执行中”(的作业数)长时间小于“调度并发数”,则证明调度资源目前的部分作业执行节点可能出现了下线的情况。
  • 场景三:“等待资源”(的作业数)大于0,如果“执行中”(的作业数)等于0,则证明目前作业无法正常提交,调度服务异常。
  • 场景四:“等待资源”(的作业数)一直增长,长时间没有降低趋势,并且长时间“运行中的作业数”的数量等于“调度并发数”,则证明当下调度能力无法支撑业务,需要联系运维结合目前集群资源调整作业调度并发数。
    图7 作业运行状态情况

【问题三】
怀疑个别作业在平台中显示的运行时长,似乎大于作业本身在集群上真正运行时长。

解:
在检查“作业实例平均运行时长”指标时,奇点云工程师发现,部分作业“作业执行时长”远远大于“作业集群执行时长”,该现象在调度高峰期较为明显。
经排查,工程师发现是因为服务内部日志的写入效率产生瓶颈,导致系统调度时长变长,增加了作业执行时长。
因此工程师将服务日志的行写模式(Line writing)调整为缓冲块写入(Buffer block)模式,最终“作业执行时长”接近“作业集群执行时长”,符合预期。目前DataSimba 4.5之后的版本也均采用了缓冲块写入。
问题三指标解读:

  • 作业集群执行时长:作业真正在对应计算引擎上执行的时间。
  • 系统调度时长:作业在调度系统中流转时长,比如:作业从入队列到出队列的时间,同步作业状态的时间,处理作业日志的时间等。
  • 作业执行时长:
    等于“作业集群执行时长”加“系统调度时长”。假设作业实际运行耗时指标为2分15秒,集群实际执行耗时为2分03秒,也就是“系统调度时长”为12秒,这12秒是调度系统在处理作业流转所花的时间。

“可观测”本质上是数据云平台的数据自应用

企业级数据云平台(云数仓/数据中台等同类数据基础设施)往往非常复杂,所涉及到的作业、任务、资源众多,在平台上工作的工程师也通常来自各部门,有各自的操作习惯和使用需求。除了本篇案例所介绍生产压力突增的情况,也常出现因业务逻辑改变,需要调整关联关系却出现问题等情况。

“为啥又崩了?”
“不可能,我测试的时候没问题啊。”
当企业不再只用数据做单点创新尝试,而让数据深入业务、影响业务,这样的回答在企业场景中就多少有些不负责任了。
企业级的数据云平台产品,不仅要有好用的功能,也要在客户环境中真正“扛造”,能给用户明晰的反馈和指引,以便及时定位问题、发现潜在风险,从而帮助企业的工程师们实现对平台的自运维、自交付。

这就是“可观测性”在数据云平台要承担的重任:
通过关键指标,精准呈现平台的硬件、进程、业务等整体状态,提升平台内部状态的“能见度”,从而提升企业用户“自交付、自运维”的易用性,降低平台的使用及运维门槛,提升发现、定位并解决问题的效率。

  • 啥是可观测性?

Gartner把应用可观测性(Applied Observability)列入“2023年十大战略技术趋势”,并做出如下解释:在任何相关方采取任何类型的行动时,都会产生包含了数字化特征的可观测数据,如日志、痕迹、API调用、停留时间、下载和文件传输等。应用可观测性以一种高度统筹和整合的方式,将这些可观测的特征数据进行反馈,创造出一个决策循环,从而提高组织决策的有效性。

说人话,“可观测性”本质是对系统产出的日志、数据埋点、系统指标、链路追踪等核心数据的治理,通过“场景+数据+指标”,构建并不断完善内部系统的“指标体系”,来辅助保障稳定性。

系统在构建其“可观测性”时,通常依循以下路径:盘点事前、事中、事后各场景下的常见问题,分析本质,明确问题场景的对应指标,收集并清洗相应数据,最终通过可视化的方式对外呈现。
![在这里插入图片描述](https://img-blog.csdnimg.cn/6f
在这里插入图片描述

  • “可观测”本质上是数据产品

在奇点云看来,“可观测”本质上是一套数据产品(而非定时脚本),它应当用数据来实现对平台内部情况的观测,用数据辅助用户科学地了解平台情况、指导行动。在经过一定时间的沉淀后,可观测相关数据还可用于企业训练智能算法,实现平台的智能运维。

在数据云平台DataSimba,奇点云形成了包括血缘治理模型、问题排错模型、运维巡检模型等在内的多种数据模型产品,来应对不同场景的可观测需求。

在这里插入图片描述具体而言,DataSimba会收集、存储平台自身各子系统的数据,例如数据服务请求日志数据、各服务器Metrics数据和DataSimba内核调用链路Trace数据等,将这些数据整理成结构化的数据模型,便于用户调用模型完成高效的查询、分析。
同时结合智能算法,帮助用户更快发现并定位系统中的异常根因。例如,基于时间序列的异常检测算法,能自动捕获在运维场景中的典型异常,包括方差变化、均值变化、尖峰深谷、断崖式跌落、趋势增长等等。

谈及可观测性相关数据模型的由来,奇点云合伙人、CTO地雷介绍:“我们参考了海内外数据生产的经典方法论,结合奇点云工程师们多年服务沉淀出的知识框架,总结提炼出了这些数据模型及其对应的关键指标。”

以服务稳定性模型为例,服务基础容器环境、服务可用性、响应时间、错误率是描述整体服务健康状态的关键指标。每组指标可再向下拆解,由一系列原子指标构成。

在本篇案例的高并发调度场景下,基于“服务稳定性模型”,奇点云工程师们着重监测了相关基础容器环境的状态、接口响应时间等指标。譬如针对“延迟”,具体指标包括“当前等待作业数量”、“等待作业超过阈值分钟的数量”;针对“吞吐量”(在一定时间内处理的作业数),具体指标则包括“时间范围内的平均运行时长”、“最晚执行时长”、“范围时间内各个运行趋势”等。从而快速定位根因,及时排错处理,提高调度性能。

资深技术专家牧然补充道:“监控系统对主系统的扰动性要足够小。通常来说,监控框架会采集底层日志,再聚合数据、形成图表,这些环节都会有资源消耗。为不影响主系统,监控系统的资源消耗应在可控范围内。DataSimba可观测性数据模型中很多核心指标主要来自元数据,基本无需另外采集,对主系统造成的压力就更小。”

目前,奇点云数据云平台DataSimba专业版、旗舰版、红旗版均提供元仓(元数据数仓)功能,包含平台可观测性的多种数据模型。企业可以直接调用这些数据资产,来完成数据云平台的异常识别、预警提示、自动化运维巡检等高阶管理。

One more thing:

回到开头所述,这家大型制造集团的情况,本质需求是获得更快更及时的数据用于业务。出于历史原因,企业采用了调整调度周期粒度的方式——分钟级、小时级地频繁跑ODS、DW、ADS层的数据,同时也导致出现大量额外且重复的计算成本,对系统压力大,灵活性也易受限制。如果从头开始满足此类需求,则更推荐采取Lambda或Kappa架构的流批一体技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

android hook(Toast BadTokenException案例)

什么是Hook? hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序先捕捉该消息,钩子函数先得到控制权,这时钩子函数即可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。…

(详细)HTTP协议(应用层重点协议)

目录 一、HTTP协议工作过程 二、 协议格式 1、抓包工具Fiddler 2、HTTP请求格式 3、HTTP响应格式 4、HTTP协议格式总结 三、HTTP请求(Request) 1、URL (1)URL基本格式 (2)URL实例 (…

什么是伪原创?SEO伪原创该怎么做

伪原创是指在原有的文章或内容基础上进行修改或调整,以产生看起来是全新内容的文章,但实际上并没有创造新的价值。多数情况下,伪原创的目的是为了在文章相对原创的情况下,提高搜索引擎的排名。 一、高质量伪原创 做好伪原创&#…

SpringCloud消息总线——Bus

Bus 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 在SpringCloud Config学习过程中,还遗留下来一个问题:当运维更新git上的配置信息时,要想更改所有的客户端服务,必须得手动给客户端服务发送post请…

ESP32学习笔记14-mqtt-连接官方mqtt,onenet,thingsboard物联网平台

12.MQTT 12.0工程里的WiFi密码和ssid设置 工程的WiFi配置 ssid password 打开配置 配置ssid和密码 工程配置文件sdkconfig IP和端口配置 乐鑫服务器mqtt 12.1数据结构和配置函

力扣sql中等篇练习(四)

力扣sql中等篇练习(四) 1 游戏玩法分析IV 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 首次登录后第二天登录的玩家数量/玩家总数量(去重) # 注意首日注册指的是表中的最早的一个日期 SELECT ROUND((SELECT count(distinct t1.player_id)FRO…

给孩子买台灯什么牌子好?盘点学生专用台灯第一品牌

现在的孩子近视率很高,双减政策的执行,也有导致许多孩子长时间接触电子产品,没有正确的看书姿势,合理的用眼距离等,使用专业的护眼台灯,能让孩子眼睛拥有一个好的视力。 要注意养成预防近视好习惯&#xf…

dsp28335杂记3

文章目录 DAC实验,SPITLV5620DACADC0实验-------niceDMAADC实验(外设到存储器) 中断 了解皮毛,嘿嘿内置XINTF接口配置 外扩SRAM DMA支持 了解皮毛,嘿嘿eCAP脉冲捕获,重点啦eCAP输出PWM(APWM模…

【学习笔记】从MySQL快速入门 PostgreSQL

PGSQL 菜鸟教程/在线api文档 数据类型语法 DML条件 高级 一、数据类型 数值类型:和mysql类似,叫法不同 特殊:serial 自增整数 名字存储长度描述范围smallint2 字节小范围整数-32768 到 32767integer4 字节常用的整数-2147483648 到 21474…

C++——入门讲解(3)

作者:几冬雪来 时间:2023年4月19日 内容:C入门内容讲解 目录 前言: 1. 引用(续): 1.输出型参数: 2.传引用返回: 2.常引用: 3.auto: 结…

Android安全性:保护你的应用和用户数据

Android安全性:保护你的应用和用户数据 引言 在移动应用开发领域,Android系统占据着主导地位,随着智能手机的广泛普及和移动应用的快速发展,越来越多的开发者投入到Android应用的开发中。然而,随着Android应用的数量不…

React--》useReducer的讲解与使用

目录 useReducer的使用 刨析useReducer参数 useReducer的使用 useReducer的使用 在React函数式组件中,我们可以通过useState()来创建state,这种state创建方式会给我们返回两个东西state和setState()。state用来读取数据,而setState()用来…

走心Python实战应用:【requests+re 模块】快速下载原shen图片

人生苦短,我用python 这次给大家带来的是模块实战 以便大家理解学习 觉得写的好的话,可以给我多多点赞鸭~ 走心Python实战应用:【requestsre 模块】快速下载原shen图片 一、理解Python requests 模块二、requests 方法三、ruqusets 模块实…

第15章_File类与IO流

第15章_File类与IO流 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. java.io.File类的使用 1.1 概述 File类及本章下的各种流,都定义在java.io包下。 一个File对…

渗透测试成功的8个关键,98%的人都理解错了

01 知道为什么要测试 执行渗透测试的目的是什么?是满足审计要求?是你需要知道某个新应用在现实世界中表现如何?你最近换了安全基础设施中某个重要组件而需要知道它是否有效?或者渗透测试根本就是作为你定期检查防御健康的一项例行…

最新版本 Stable Diffusion 开源 AI 绘画工具之中文自动提词篇

✨ 目录 🎈 标签生成器🎈 提示词自动补全 🎈 标签生成器 由于输入正向提示词 prompt 和反向提示词 negative prompt 都是使用英文,所以对学习母语的我们非常不友好使用网址:https://tinygeeker.github.io/p/ai-prompt…

第05讲:OpenTracing 简介,先有标准后有天

自从 Google Dapper 的论文发布之后,各大互联网公司和开源社区开发的分布式链路追踪产品百花齐放,同时也给使用者带来了一个问题,各个分布式链路追踪产品的 API 并不兼容,如果用户在各个产品之间进行切换,成本非常高。…

Sprinboot聚合项目归夷

1、前言 在创建springboot项目时,都会有一个Main方法。如果将Springboot项目设计成聚合项目时,我们是不是要把所有的子项目都按照Springboot的方式创建呢?如果是会出现什么问题,以及我们怎么解决呢? 如果我们使用maven…

在线画图网站Graph Editor的使用

网站链接 链接 网站介绍 CS Academy是一个在线的算法学习和竞赛的网站,打开网站左侧导航栏中的App目录下有一个可以在线画图的应用Graph Editor,用来画图(有向、无向)非常好用。 网站使用 网站的界面如下: 左侧为…

Golang每日一练(leetDay0037) 二叉树专题(6)

目录 109. 有序链表转换二叉搜索树 Convert-sorted-list-to-binary-search-tree 🌟🌟 110. 平衡二叉树 Balanced Binary Tree 🌟 111. 二叉树的最小深度 Minimum Depth of Binary Tree 🌟 🌟 每日一练刷题专栏 …