流式数据Pipeline质量控制浅谈

一般而言,实现某个特定业务的数据Pipeline都会比较长,这个时候对其中某个组件进行变更就是很有压力的事情。我们如何保证数据的准确性和完整性呢?

引子

以我们公司的实时带宽计算为例,就是一个长长的Pipeline,中间经过的组件其实是很多的,比如解析模块,指标拼接模块,累加器模块等,这些模块可能是独立部署,也可能是在一个系统中,它们根据业务需求会经常发生变更。

因为最终数据需要每一个环节的衔接和计算都没有问题,才能得出正确的结果。然而让人遗憾的是,一个变更可能不影响最终呈现,但是其实是有问题的,这种问题往往令人难以察觉。那问题来了,发生变更后,如何保证数据的正确性?

需要做的事情其实很多的。经过实践,我们发现如下四个举措可以减少变更带来的风险。

变更前并行运行

通常我们有一个模块变更后,我们会在准生产环境并行运行一段时间(一般而言是一周),对计算结果会绘制成曲线图,然后和线上的曲线进行拟合。如果完全重叠,则证明没有问题,具备上线条件。

这个可以保证数据的准确性,而且这种准生产环境的服务器资源也是值得投入的。

探针

探针可以检测全流程数据是否会丢失,而且能检验延时情况。 探针可以是数据源提供的,也可以是自己仿造的。

这个可以一定程度上保证数据的完整性。

离线数据存储

离线数据需要得到保留,可以是最原始的数据,也可以是某个中间结果的数据,还可以是某个数据的偏移量(譬如Kafka的偏移量),这样可以保证上线变更导致计算异常(逻辑上的或者物理上的)能够得到补救。一旦有异常,可以拿这些离线数据进行计算恢复数据曲线。实时计算中很大的一个问题是发生故障或者程序逻辑异常时导致某一段时间区段的结果计算不准确了。

埋点统计

当然,真正要实现全链路的质量监控,保证不发生问题或者及时发现问题,还是需要对每个环节设置各种指标,我们其实对各个环节也抽象出了很多指标,通过一个高效的计数系统来实现。这里唯一的问题是需要进行埋点。

总结

质量控制其实是一个比较复杂的问题,上面的做的事情通过并行运算确保最终结果无异常,离线数据存储保证数据计算结果的可恢复,探针可以检测延时或者数据的完整性,埋点可以让我们对各个组件的状态有更多的追踪。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web前端教室

一篇有难度的前端教程,怎么做才是看懂它的正确姿势?

今天是周五,先祝大家周末愉快哈,虽然过二天就又是周一了。周末的文章我一般都写的短一些。就如标题所言,现在有这么一篇难的教程,该怎么看? 先说一下,你要学习必须要...

2069
来自专栏Spark学习技巧

HBase在滴滴出行的应用场景和最佳实践

本文主要介绍HBase在滴滴内部的一些典型使用场景,如何设计整个业务数据流,让平台开发者与用户建立清晰、明确、良好的合作关系 背景 对接业务类型 HBase是建...

4318
来自专栏程序人生

[产品技术] Operational Transformation

昨天心情不太好,本来不打算写东西了,但想想坚持了这么久,还是写点什么吧。 最近sharejs升级到了0.7,看文档说整套代码重写了一遍,API基本都变了。想起以...

3987
来自专栏服务端技术杂谈

程序员工作久了基础更重要

工作一段时间会遇到一个瓶颈期,会考虑未来1到2年的发展和方向问题,之前的方式是通过不停的学习新的框架或者解决方案来调整。 比如写服务端代码期间会去学习TDD,D...

30010
来自专栏IT大咖说

新一代CMDB模型构建指南

摘要 今天我为大家带来的分享主题是新一代CMDB模型的构建指南,主要分为四大部分。 困境:当前CMDB模型面临的普遍困境 很多CMDB建设前期做得风风火火,而后...

4865
来自专栏机器人网

工业机器人典型控制系统及结构

工业机器人由主体、驱动系统和控制系统三个基本部分组成。 主体即机座和执行机构,包括臂部、腕部和手部,有的机器人还有行走机构。大多数工业机器人有3~6个运动自由度...

3455
来自专栏Django中文社区

在学习django-rest-framework时收集的学习资料推荐

由于我平时开发的 django 项目都比较小,所以一直以来都是使用 django 模板引擎渲染 html 页面这种比较原始的方式在开发。最近发起了一个 Djan...

8778
来自专栏高性能服务器开发

10 十万在线的WebGame的数据库设计思路

在线人数预估: 在项目设计之前,需要先对运营后的服务器人数做一下预估,预计激活人数300w,活跃人数40w,同时在线10w。而服务器的设计极限则在激活人数50...

1501
来自专栏鸿的学习笔记

如何设计一个良好的流系统?(上)

streaming system有两篇经典博客:streaming 101和streaming 102,深刻的描述了流系统的精髓和对未来的展望,这篇文章权当一个...

831
来自专栏企鹅号快讯

干货!大数据专业词汇整理,不知道容易被别人喷晕!

随着大数据技术的不断提高,大数据应用的不断普及,大数据与各行各业的关系越来越紧密。大数据行业充斥着大量的专业词汇,准确掌握和了解这些词汇的含义,有助于更好的理解...

1976

扫码关注云+社区