天际数见数据质量巡检架构优化

源宝导读:天际数见平台是一个数据可视化的BI平台,定位于为高层决策提供数据可视化赋能。数据准确性是生命线,如何提前发现数据问题,快速定位和修复问题,成为我们必须攻克的难点。本文将介绍数见平台通过架构优化,提升数据巡检准确率和效率的技术实践。

一、项目背景介绍

    天际数见平台是一个数据可视化的BI平台,定位于为高层决策提供数据可视化赋能。数见平台接入多种数据源,屏蔽数据源底层差异,统一将数据呈现给客户。由于数据来源复杂,偶然会出现数据不一致/延迟/抖动等情况,往往是在客户发现问题后反馈给一线,再由一线反馈给技术团队。这种情况不仅给客户造成平台不稳定的错觉,同时沟通过程涉及链条较长导致难以快速定位问题源头。为此数见平台规划了数据质量巡检功能,定时巡检数据准确性/一致性/实时性,并巡检问题的源头,系统第一时间通知相关责任人进行解决。

    由于时间紧任务重,团队在较短时间内满足了客户的基本需求,但在使用过程中仍然发现了一些问题,因此决定对该功能进行系统性分析并进行优化。

二、老版本数据质量巡检架构

    上图中ERP数据中心即为数见平台数据源的一种(也称之为主题包数据集),可以看出最终接入数见平台的数据链路较长,数据来源较多,与之匹配的数据质量巡检如下图:

    说明:DMP为数据可视化平台,RunDeck 为定时任务调度系统,DMP-Proc为任务执行子系统,DMP-Celery为异步任务系统。通过上图可以发现当DMP-Proc子系统处理完成后,通过API和DMP-Celery异步任务系统发生通信,通信完成后DMP-Celery又向DMP-Proc子系统回传消息。

整个巡检逻辑如下图:

    通过上图可以发现,DMP-Proc子系统负责向各个节点分发巡检任务,然后处于等待状态,但是由于无法知悉各个节点需要执行的具体时间,因此此处设置了固定等待时间。这种做法实际会造成不必要的时间等待,同时在等待过程中处于协程阻塞状态,无法接收其他巡检任务。若此时系统因为各种原因重启,则该次巡检消息丢失,将永远无法完成直至下次巡检覆盖本次巡检结果。

三、为什么需要重构

    通过上面的内容我们可以发现老的数据质量巡检存在以下问题:

  1. 链路过长:链路过于复杂,涉及多个子系统,代码业务逻辑难以理解。开发过程十分痛苦,需要在多个系统之间进行切换。涉及链路过多故障发生的机率也随之大幅提升;

  2. 子系统之间形成循环通信:子系统之间形成循环通信,使架构变的复杂难以维护,需要精简为单向通信;

  3. 系统性能时效性较低:由于使用了通道超时机制,每次检查都需要等待固定的时间,实际业务巡检有长有短,而非花费时间都是统一的;

  4. 系统稳定性不足:由于使用了协程常驻内存检测通道消息,当遇到整个子系统重启后或者发生故障,通道消息丢失,该次巡检便无法更新为完成状态。

四、怎样进行优化

1. 精简链路,重新设计表结构,实现每个节点只关注自身业务和节点,中间节点不再处理所有业务,每个节点只关心自身节点数据,完成巡检即更新节点结果,DMP-Proc系统接收到巡检消息后定时轮询各个节点状态,最终更新总状态和结果。

2.通信方式优化为单向通信,子系统不再向中间节点回传信息。由于各个节点只更改本节点数据,不会导致多节点并发更新同一份数据的问题,因此无需再向中心节点回传结果消息。

3.监控超时机制更改为单独的独立协程常驻内存进行监控,不依赖于其他通道传送信息,只依赖于数据库中最终数据。

4.系统启动便开始检测所有巡检节点,及时重启或者异常宕机也不影响。系统每次启动时自动检查状态未结束的巡检节点,重新启动巡检任务。

五、优化效果

  1. 架构简单清晰,链路得到精简,各个节点只关心自己的数据,不再回传消息;

  2. 巡检数据更加精准,不再有中心节点,不再产生节点结果偶尔被覆盖的情况;

  3. 系统稳定性得到较大提升,发布或dmp-proc意外宕机,都不会影响最终巡检结果;

  4. 提升巡检效率,一.减少通道不必要的等待时间,提升巡检速度;

  5. 客户满意度提升,认可数见平台数据质量巡检体系。

------ END ------

作者简介

曹同学: 研发工程师,目前负责天际-数见平台的后台研发工作。

也许您还想看

Go语言plugin的两种实现方式

在明源云客,一个全新的服务会经历什么?

云客后台优化的“前世今生”(一)

云客后台优化的“前世今生”(二)

回归统计在DMP中的实战应用

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

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

相关文章

db2 删除存储过程_蚂蚁金服OceanBase挑战TPCC | TPCC基准测试之存储优化

蚂蚁金服自研数据库 OceanBase 登顶 TPC-C 引起业内广泛关注,为了更清楚的展示其中的技术细节,我们特意邀请 OceanBase 核心研发人员对本次测试进行技术解读,共包括五篇:1)TPC-C基准测试介绍2)OceanBase如何做TPC-C测试3)TPC-C基准…

Github Actions 中 Service Container 的使用

Github Actions 中 Service Container 的使用Intro之前写过一个 StackExchange.Redis 的一个扩展,测试项目依赖 redis,所以之前测试一直只是在本地跑一下,最近通过 Github Action 中的 Service Container 来通过 CI 来跑测试,分享…

深度探秘.NET 5.0

2020 中国.NET 开发者峰会正式启动 ,欢迎大家提交演讲主题或者购买超级早鸟票。今年11月10号 .NET 5.0 如约而至。这是.NET All in one后的第一个版本,虽然不是LTS(Long term support)版本,但是是生产环境可用的。微软从.NET 5 Preview 1就开…

vuex保存用户信息_Vuex状态管理

一个组件可以分为数据和视图,数据更新时,视图也会自动更新。在视图中又可以绑定一些事件,它们触发methods里面指定的方法,从而又可以改变数据、更新视图,这就是一个组件基本的运行模式。但实际的业务中,经常…

使用 docker 构建分布式调用链跟踪框架skywalking

一旦你的程序docker化之后,你会遇到各种问题,比如原来采用的本地记日志的方式就不再方便了,虽然你可以挂载到宿主机,但你使用 --scale 的话,会导致记录日志异常,所以最好的方式还是要做日志中心化,另一个问…

excel同一单元格怎么换行_excel表格内怎么换行 方法有两种 一看就会 新手教程...

很多人在用excel表格的时候都需要用到换行,但是有一些小伙伴还不知道如何去换行。今天就介绍两种单元格内换行的方法,这两种换行方式的效果不一样,大家可以根据自己的需求来选择使用哪种换行方式。方法一:单元格内自动换行操作&am…

持续交付一:从开发到上线的环境

团队开发中,开发,测试,预发布,生产,不同的角色工作在不同的环境中,不同的环境有不同的作用(有些公司的环境更多,按照自己的交付流程设计),当然不同的环境,配置也不能相同…

win10控制面板快捷键_你没玩过的全新版本 Win10这些操作你知多少

不知不觉,Win10与我们相伴已经整整四个年头了,从最开始的组团抗拒到现在的默默接受,个中滋味相信谁心里都有个数。近日微软开始推送“Win10更新五月版”,那么Win10中到底都有哪些“骚”操作?一起来看看吧。1、夜间模式…

C# 中的数字分隔符 _

编写 C# 代码时,我们时常会用到很大的数字,例如下面定义的变量:const long loops 50000000000;您能快速读出这是多少吗?是不是还是会有很多人把光标定位到最后一位,然后按键盘上的向左键一个一个往上数:个…

数字调制系统工作原理_空间光调制器工作原理是什么 空间光调制器工作原理...

空间光调制器(SLM), 空间光调制器(SLM)工作原理是什么?实时空间光调制器使得相干处理系统能输入非相干光图像和随时间变化的图像的器件。相干光处理系统的最大优点是二维平行处理、信息容量大,运算速度快。但是目前的输入图像和空间滤波都用银盐胶片作记录媒质&…

使用 .NET 5 体验大数据和机器学习

2020 中国.NET 开发者峰会正式启动 ,欢迎大家提交演讲主题或者购买超级早鸟票。翻译:精致码农-王亮原文:http://dwz.win/XnM.NET 5 旨在提供统一的运行时和框架,使其在各平台都有统一的运行时行为和开发体验。微软发布了与 .NET 协…

linux监控目录容量,利用ZABBIX监控某个目录大小

近期,因为JMS的消息堆积导致ApacheMQ频率故障(消息没有被消费掉,导致其数据库达到1.2G,JMS此时直接挂掉),很是郁闷!刚好自己在研究zabbix.既然zabbix如此强大,那么它可以监控我的这个目录大小吗&#xff1f…

三菱plc选型手册_模拟量是什么?PLC和模拟量是如何转换的?

模拟量在PLC系统中有着非常广泛的应用,特别是在过程控制系统中。模拟量是一种连续变化的量,因此,它的使用对象也是各种连续变化的量,比如温度,压力,湿度,流量,转速,电流&…

windows和linux命令行一样吗,微软改进Windows命令行 目的是和Linux命令行相抗衡

微软官方人员承认微软正在对Windows命令行环境或是Windows终端进行全方位的改进,目的是能和Linux命令行相竞争。随着Linux云服务器的大量被采用,很多Linux云服务器都没有安装图形界面,只使用终端能够大幅度提高运行速度,微软想通过…

vue 离开页面事件_【必看】58 道 Vue 常见面试题集锦,涵盖入门到精通,自测 Vue 掌握程度...

△ 是新朋友吗?记得先点web前端学习圈关注我哦~1.vue优点?答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十 kb ;简单易学:国人开发,中文文…

购票啦 | 2020中国.NET开发者峰会启动

.NET Conf China 2020去年2019年在上海举行了第一届的中国.NET开发者峰会,今年2020年即将在苏州举行第二届,有兴趣的童鞋们,不要忘记购票参加哈。 1大会背景介绍2014年微软组织并成立.NET基金会,微软在成为主要的开源参与者的道路…

w7下如何安装linux双系统,ubuntu安装教程(下): 教你装win7+Ubuntu双系统

今天突发的想装个双系统玩玩,原来我ubuntu和win8都是装在虚拟机里面的,感觉用起来很不方便,而且感觉用起来特别不流畅,所以就想装个win7ubuntu的双系统。原来是想把ubuntu直接wubi安装在win7里面。但是这样的话,会带来…

vscode代码运行时间工具_10款实用的VSCode插件提升你的编辑体验 | 第98期

代码编辑器或者文本编辑器相信大家都不会陌生,但是,常用Windows的朋友大概都知道其自带的“文本编辑器”那是一款多么难用的软件。后来又有一系列的编辑器,比如notepad、sublime、atom等等,包括Linux用户喜欢的vim,这些…

简单理解线程同步上下文

为了线程安全,winform和wpf框架中规定只能使用UI线程操作控件,从其它线程上操作控件就会报跨线程异常。假如有这样一个场景:点击按纽,然后开始计算员工薪资,并将计算信息实时展示在一个文本框中,由于计算过…

修改手机屏幕刷新率_手机屏幕没有高刷新率算不上旗舰机?看看网友都是如何回答的...

近日Redmi K30 Pro的各种参数信息逐渐曝光,高通骁龙865处理器、LPDDR5内存、UFS3.1闪存、VC液冷散热、前置弹出式摄像头、多彩呼吸灯、Z轴线性马达等等参数都备受好评。唯独在提及屏幕时,60Hz的刷新率就让网友们不满意了。此前在K30的发布会上&#xff0…