大家好呀,今天分享的是一个生产环境中遇到的问题。也是群友遇到的一个面试问题。
原问题是:
早晨8点之后发现kafka的record中某个字段的值出现了错误,现在已经10点了,需要对kafka进行数据订正,怎么样定位和解决这个问题,达到最快响应和最小影响。
这个问题是一个很「大」的问题,我们挑重点的说。
首先,我们在做数据开发的过程中涉及到一些基本要素:时效性保障、质量保障、稳定性保障,此外还有敏捷性、可管理性等其他要素。根据公司业务场景和重要性不同,重点也有所侧重。
时效性保障主要关注的几个方面:
这是个老生常谈的话题了。我们在离线时代已经有了非常完善的数据质量监控体系。大家重点看加粗内容即可。
保证数据从源头到数据加工再到前端数据展示,不能因为加工逻辑权限,存储异常,前端展现异常等原因导致数据丢失。例如:
目标源数据按照业务需求加工成目标有效数据,目标有效数据根据不同维度不同指标计算成需要展示的不同指标数据。例如:
数据在流转路径中因为异常导致流转中断,数据停止在某一个环节中,当异常解决,系统恢复正常时,停止的数据(停止的数据)需要快速恢复流转,并且这种恢复是正确的,不应该存在重复的消费和加工或者遗漏。例如:
提前压测应对流量高峰期,特别是大促场景下,提前做好资源保障、任务优化等措施。
制定保障等级,从任务影响面大小、数据使用方来划分,一般情况公司层面优先于部门层面,外部使用优先于内部使用,高优先级任务需要优先/及时响应、必要情况下做双链路保障机制。
指标监控,监控任务failover情况、checkpoint指标、GC情况、作业反压等,出现异常告警。
整个实时Pipeline链路都应该选取高可用组件,确保理论上整体高可用;在数据关键链路上支持数据备份和重放机制;在业务关键链路上支持双跑融合机制
集群设施层面,物理管道层面,数据逻辑层面的多方面监控预警能力
能够捕捉并存档缺失数据和处理异常,并具备定期自动重试机制修复问题数据
再回答问题本身,我们可以从下面三个方面回答:
本问题是从数据质量角度产生的问题,可以从数据质量监控的角度,有必要的数据质量监控和对应的报警;
在问题发生后,要有正确的SOP流程处理数据异常。例如,通过公告、默认值、开关等方法,降低数据质量带来的舆情影响;
要进行数据修复。是否需要进行数据回溯,或者通过离线回补等方式进行修复。
当然这只是一个思路,你能结合工作中的具体场景,举例说明就更好啦。
如果这个文章对你有帮助,不要忘记 「在看」 「点赞」 「收藏」 三连啊喂!
2022年全网首发|大数据专家级技能模型与学习指南(胜天半子篇)
Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点