前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >流式数据Pipeline质量控制浅谈

流式数据Pipeline质量控制浅谈

作者头像
用户2936994
发布2018-08-27 10:48:40
5710
发布2018-08-27 10:48:40
举报
文章被收录于专栏:祝威廉祝威廉

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

引子

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

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

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

变更前并行运行

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

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

探针

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

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

离线数据存储

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

埋点统计

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

总结

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.07.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引子
  • 变更前并行运行
  • 探针
  • 离线数据存储
  • 埋点统计
  • 总结
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档